[ekiga] videooutput: add another instance of DisplayInfo



commit 54f97adfbba804b5ae305e7ab5d27b6454db3026
Author: VÃctor Manuel JÃquez Leal <vjaquez igalia com>
Date:   Fri Sep 7 12:27:36 2012 -0500

    videooutput: add another instance of DisplayInfo
    
    Add another instance of DisplayInfo for the new window which will show the
    extended video stream, and its getters and setters in the class hierarchy.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=687775

 .../videooutput-manager-common.h                   |   18 +++++++++++++++---
 lib/engine/videooutput/videooutput-core.cpp        |   11 +++++++++++
 lib/engine/videooutput/videooutput-core.h          |    1 +
 lib/engine/videooutput/videooutput-manager.h       |    4 +++-
 4 files changed, 30 insertions(+), 4 deletions(-)
---
diff --git a/lib/engine/components/common-videooutput/videooutput-manager-common.h b/lib/engine/components/common-videooutput/videooutput-manager-common.h
index 7daaa29..c752b5f 100644
--- a/lib/engine/components/common-videooutput/videooutput-manager-common.h
+++ b/lib/engine/components/common-videooutput/videooutput-manager-common.h
@@ -117,12 +117,17 @@
                                   unsigned type,
                                   int devices_nbr);
 
-    virtual void set_display_info (const Ekiga::DisplayInfo & _display_info)
-    {
+    virtual void set_display_info (const Ekiga::DisplayInfo & _display_info) {
       PWaitAndSignal m(display_info_mutex);
       display_info = _display_info;
     };
 
+    virtual void set_ext_display_info (const Ekiga::DisplayInfo & _display_info) {
+      PWaitAndSignal m(ext_display_info_mutex);
+      ext_display_info = _display_info;
+    };
+
+
   protected:
     typedef struct {
       bool local;
@@ -210,10 +215,17 @@
           PWaitAndSignal m(display_info_mutex);
           _display_info = display_info;
     }
-  
+
+    virtual void get_ext_display_info (Ekiga::DisplayInfo & _display_info) {
+          PWaitAndSignal m(ext_display_info_mutex);
+          _display_info = ext_display_info;
+    }
+
     /* This variable has to be protected by display_info_mutex */
     Ekiga::DisplayInfo display_info;
+    Ekiga::DisplayInfo ext_display_info;
     PMutex display_info_mutex; /* To protect the DisplayInfo object */
+    PMutex ext_display_info_mutex; /* To protect the 2nd DisplayInfo object */
 
     PBYTEArray lframeStore;
     PBYTEArray rframeStore;
diff --git a/lib/engine/videooutput/videooutput-core.cpp b/lib/engine/videooutput/videooutput-core.cpp
index 2fb2faf..a784d4c 100644
--- a/lib/engine/videooutput/videooutput-core.cpp
+++ b/lib/engine/videooutput/videooutput-core.cpp
@@ -201,6 +201,17 @@ void VideoOutputCore::set_display_info (const DisplayInfo & _display_info)
   }
 }
 
+void VideoOutputCore::set_ext_display_info (const DisplayInfo & _display_info)
+{
+  PWaitAndSignal m(core_mutex);
+
+  for (std::set<VideoOutputManager *>::iterator iter = managers.begin ();
+       iter != managers.end ();
+       iter++) {
+    (*iter)->set_ext_display_info (_display_info);
+  }
+}
+
 
 void VideoOutputCore::on_device_opened (VideoOutputAccel videooutput_accel,
                                         VideoOutputMode mode,
diff --git a/lib/engine/videooutput/videooutput-core.h b/lib/engine/videooutput/videooutput-core.h
index 231d46e..2ff261d 100644
--- a/lib/engine/videooutput/videooutput-core.h
+++ b/lib/engine/videooutput/videooutput-core.h
@@ -148,6 +148,7 @@ namespace Ekiga
                            int devices_nbr);
 
       void set_display_info (const DisplayInfo & _display_info);
+      void set_ext_display_info (const DisplayInfo & _display_info);
 
 
       /*** Statistics ***/
diff --git a/lib/engine/videooutput/videooutput-manager.h b/lib/engine/videooutput/videooutput-manager.h
index cf94510..5d819ac 100644
--- a/lib/engine/videooutput/videooutput-manager.h
+++ b/lib/engine/videooutput/videooutput-manager.h
@@ -96,6 +96,7 @@ namespace Ekiga
                                    int devices_nbr) = 0;
 
       virtual void set_display_info (const DisplayInfo &) { };
+      virtual void set_ext_display_info (const DisplayInfo &) { };
 
 
       /*** API to act on VideoOutputDevice events ***/
@@ -138,8 +139,9 @@ namespace Ekiga
        */
       boost::signal3<void, unsigned, unsigned, VideoOutputMode> size_changed;
 
-  protected:  
+  protected:
       virtual void get_display_info (DisplayInfo &) { };
+      virtual void get_ext_display_info (DisplayInfo &) { };
     };
 
 /**



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]