ekiga r6013 - in trunk: . lib/engine/vidinput/mlogo lib/engine/vidinput/ptlib lib/engine/vidinput/skel



Author: mschneid
Date: Sat Mar  1 18:10:39 2008
New Revision: 6013
URL: http://svn.gnome.org/viewvc/ekiga?rev=6013&view=rev

Log:
Added new signals when an input device is opened and closed.


Modified:
   trunk/ChangeLog
   trunk/lib/engine/vidinput/mlogo/vidinput-manager-mlogo.cpp
   trunk/lib/engine/vidinput/ptlib/vidinput-manager-ptlib.cpp
   trunk/lib/engine/vidinput/skel/vidinput-core.cpp
   trunk/lib/engine/vidinput/skel/vidinput-core.h
   trunk/lib/engine/vidinput/skel/vidinput-manager.h

Modified: trunk/lib/engine/vidinput/mlogo/vidinput-manager-mlogo.cpp
==============================================================================
--- trunk/lib/engine/vidinput/mlogo/vidinput-manager-mlogo.cpp	(original)
+++ trunk/lib/engine/vidinput/mlogo/vidinput-manager-mlogo.cpp	Sat Mar  1 18:10:39 2008
@@ -86,9 +86,11 @@
   memset (background_frame + (current_state.width * current_state.height), 0x7f, (current_state.width*current_state.height) >> 2);
   memset (background_frame + (current_state.width * current_state.height) + ((current_state.width*current_state.height) >> 2), 0x7f, (current_state.width*current_state.height) >> 2);
 
-  current_state.opened  = true;
-
   m_Pacing.Restart();
+
+  current_state.opened  = true;
+  runtime.run_in_main (sigc::bind (vidinputdevice_opened.make_slot (), current_state.vidinput_device, 127, 127, 127, 127, false));
+  
   return true;
 }
 
@@ -97,6 +99,7 @@
   PTRACE(4, "GMVidInputManager_mlogo\tClosing Moving Logo");
   free (background_frame);
   current_state.opened  = false;
+  runtime.run_in_main (sigc::bind (vidinputdevice_closed.make_slot (), current_state.vidinput_device));
 }
 
 void GMVidInputManager_mlogo::get_frame_data (unsigned & width,

Modified: trunk/lib/engine/vidinput/ptlib/vidinput-manager-ptlib.cpp
==============================================================================
--- trunk/lib/engine/vidinput/ptlib/vidinput-manager-ptlib.cpp	(original)
+++ trunk/lib/engine/vidinput/ptlib/vidinput-manager-ptlib.cpp	Sat Mar  1 18:10:39 2008
@@ -43,10 +43,6 @@
 GMVidInputManager_ptlib::GMVidInputManager_ptlib (Ekiga::ServiceCore & _core)
 :    core (_core), runtime (*(dynamic_cast<Ekiga::Runtime *> (_core.get ("runtime"))))
 {
-  current_state.colour = 127;
-  current_state.brightness = 127;
-  current_state.whiteness = 127;
-  current_state.contrast = 127;
   current_state.opened = false;
   input_device = NULL;
   expectedFrameSize = 0;
@@ -94,15 +90,17 @@
     current_state.format = format;
     return true;
   }
-		    
+
   return false;
 }
 
 bool GMVidInputManager_ptlib::open (unsigned width, unsigned height, unsigned fps)
 {
+  PVideoDevice::VideoFormat pvideo_format;
+  int whiteness, brightness, colour, contrast, hue;
+
   PTRACE(4, "GMVidInputManager_ptlib\tOpening Device " << current_state.vidinput_device.source << "/" <<  current_state.vidinput_device.device);
   PTRACE(4, "GMVidInputManager_ptlib\tOpening Device with " << width << "x" << height << "/" << fps);
-  PVideoDevice::VideoFormat pvideo_format;
 
   current_state.width  = width;
   current_state.height = height;
@@ -133,11 +131,9 @@
     return false;
   }
 
-  input_device->SetWhiteness(current_state.whiteness << 8);
-  input_device->SetBrightness(current_state.brightness << 8);
-  input_device->SetColour(current_state.colour << 8);
-  input_device->SetContrast(current_state.contrast << 8);
+  input_device->GetParameters (&whiteness, &brightness, &colour, &contrast, &hue);
   current_state.opened = true;
+  runtime.run_in_main (sigc::bind (vidinputdevice_opened.make_slot (), current_state.vidinput_device, (unsigned) whiteness >> 8, (unsigned) brightness >> 8, (unsigned) colour >> 8, (unsigned) contrast >> 8, true));
 
   return true;
 }
@@ -150,6 +146,7 @@
     input_device = NULL;
   }
   current_state.opened = false;
+  runtime.run_in_main (sigc::bind (vidinputdevice_closed.make_slot (), current_state.vidinput_device));
 }
 
 void GMVidInputManager_ptlib::get_frame_data (unsigned & width,
@@ -169,38 +166,34 @@
   if (input_device)
     input_device->GetFrameData ((BYTE*)data, &I);
 
-  if (I != expectedFrameSize)
+  if ((unsigned) I != expectedFrameSize)
     PTRACE(1, "GMVidInputManager_ptlib\tExpected a frame of " << expectedFrameSize << " bytes but got " << I << " bytes");
 }
 
 void GMVidInputManager_ptlib::set_colour (unsigned colour)
 {
   PTRACE(4, "GMVidInputManager_ptlib\tSetting colour to " << colour);
-  current_state.colour = colour;
   if (input_device)
-    input_device->SetColour(colour);
+    input_device->SetColour(colour << 8);
 }
 
 void GMVidInputManager_ptlib::set_brightness (unsigned brightness)
 {
   PTRACE(4, "GMVidInputManager_ptlib\tSetting brightness to " << brightness);
-  current_state.brightness = brightness;
   if (input_device)
-    input_device->SetBrightness(brightness);
+    input_device->SetBrightness(brightness << 8);
 }
 
 void GMVidInputManager_ptlib::set_whiteness (unsigned whiteness)
 {
   PTRACE(4, "GMVidInputManager_ptlib\tSetting whiteness to " << whiteness);
-  current_state.whiteness = whiteness;
   if (input_device)
-    input_device->SetWhiteness(whiteness);
+    input_device->SetWhiteness(whiteness << 8);
 }
 
 void GMVidInputManager_ptlib::set_contrast (unsigned contrast)
 {
   PTRACE(4, "GMVidInputManager_ptlib\tSetting contrast to " << contrast);
-  current_state.contrast = contrast;
   if (input_device)
-    input_device->SetContrast(contrast);
+    input_device->SetContrast(contrast << 8);
 }

Modified: trunk/lib/engine/vidinput/skel/vidinput-core.cpp
==============================================================================
--- trunk/lib/engine/vidinput/skel/vidinput-core.cpp	(original)
+++ trunk/lib/engine/vidinput/skel/vidinput-core.cpp	Sat Mar  1 18:10:39 2008
@@ -157,6 +157,8 @@
   manager.error.connect (sigc::bind (sigc::mem_fun (this, &VidInputCore::on_error), &manager));
   manager.vidinputdevice_added.connect (sigc::bind (sigc::mem_fun (this, &VidInputCore::on_vidinputdevice_added), &manager));
   manager.vidinputdevice_removed.connect (sigc::bind (sigc::mem_fun (this, &VidInputCore::on_vidinputdevice_removed), &manager));
+  manager.vidinputdevice_opened.connect (sigc::bind (sigc::mem_fun (this, &VidInputCore::on_vidinputdevice_opened), &manager));
+  manager.vidinputdevice_closed.connect (sigc::bind (sigc::mem_fun (this, &VidInputCore::on_vidinputdevice_closed), &manager));
 }
 
 
@@ -350,44 +352,32 @@
 {
   PWaitAndSignal m(var_mutex);
 
-  for (std::set<VidInputManager *>::iterator iter = managers.begin ();
-       iter != managers.end ();
-       iter++) {
-    (*iter)->set_colour (colour);
-  }
+  if (current_manager)
+    current_manager->set_colour (colour);
 }
 
 void VidInputCore::set_brightness (unsigned brightness)
 {
   PWaitAndSignal m(var_mutex);
 
-  for (std::set<VidInputManager *>::iterator iter = managers.begin ();
-       iter != managers.end ();
-       iter++) {
-    (*iter)->set_brightness (brightness);
-  }
+  if (current_manager)
+    current_manager->set_brightness (brightness);
 }
 
 void VidInputCore::set_whiteness  (unsigned whiteness)
 {
   PWaitAndSignal m(var_mutex);
 
-  for (std::set<VidInputManager *>::iterator iter = managers.begin ();
-       iter != managers.end ();
-       iter++) {
-    (*iter)->set_whiteness (whiteness);
-  }
+  if (current_manager)
+    current_manager->set_whiteness (whiteness);
 }
 
 void VidInputCore::set_contrast   (unsigned contrast)
 {
   PWaitAndSignal m(var_mutex);
 
-  for (std::set<VidInputManager *>::iterator iter = managers.begin ();
-       iter != managers.end ();
-       iter++) {
-    (*iter)->set_contrast (contrast);
-  }
+  if (current_manager)
+    current_manager->set_contrast (contrast);
 }
 
 void VidInputCore::on_error (VidInputErrorCodes error_code, VidInputManager *manager)
@@ -405,6 +395,18 @@
   vidinputdevice_removed.emit (*manager, vidinput_device);
 }
 
+void VidInputCore::on_vidinputdevice_opened (VidInputDevice vidinput_device,
+                               unsigned colour, unsigned brightness, unsigned whiteness, unsigned contrast, bool modifyable, 
+                               VidInputManager *manager)
+{
+  vidinputdevice_opened.emit (*manager, vidinput_device, colour, brightness, whiteness, contrast, modifyable);
+}
+
+void VidInputCore::on_vidinputdevice_closed (VidInputDevice vidinput_device, VidInputManager *manager)
+{
+  vidinputdevice_closed.emit (*manager, vidinput_device);
+}
+
 void VidInputCore::internal_open (unsigned width, unsigned height, unsigned fps)
 {
   PTRACE(4, "VidInputCore\tOpening device with " << width << "x" << height << "/" << fps );

Modified: trunk/lib/engine/vidinput/skel/vidinput-core.h
==============================================================================
--- trunk/lib/engine/vidinput/skel/vidinput-core.h	(original)
+++ trunk/lib/engine/vidinput/skel/vidinput-core.h	Sat Mar  1 18:10:39 2008
@@ -175,11 +175,17 @@
       sigc::signal<void, VidInputManager &, VidInputErrorCodes> error;
       sigc::signal<void, VidInputManager &, VidInputDevice> vidinputdevice_added;
       sigc::signal<void, VidInputManager &, VidInputDevice> vidinputdevice_removed;
+      sigc::signal<void, VidInputManager &, VidInputDevice, unsigned, unsigned, unsigned, unsigned, bool> vidinputdevice_opened;
+      sigc::signal<void, VidInputManager &, VidInputDevice> vidinputdevice_closed;
 
   private:
       void on_error (VidInputErrorCodes error_code, VidInputManager *manager);
       void on_vidinputdevice_added (VidInputDevice vidinput_device, VidInputManager *manager);
       void on_vidinputdevice_removed (VidInputDevice vidinput_device, VidInputManager *manager);
+      void on_vidinputdevice_opened (VidInputDevice vidinput_device,  
+                                     unsigned colour, unsigned brightness, unsigned whiteness, unsigned contrast, bool modifyable, 
+                                     VidInputManager *manager);
+      void on_vidinputdevice_closed (VidInputDevice vidinput_device, VidInputManager *manager);
 
       void internal_open (unsigned width, unsigned height, unsigned fps);
       void internal_close();

Modified: trunk/lib/engine/vidinput/skel/vidinput-manager.h
==============================================================================
--- trunk/lib/engine/vidinput/skel/vidinput-manager.h	(original)
+++ trunk/lib/engine/vidinput/skel/vidinput-manager.h	Sat Mar  1 18:10:39 2008
@@ -56,10 +56,6 @@
     VidInputDevice vidinput_device;
     VideoFormat format;
     int channel;
-    int colour;
-    int whiteness;
-    int brightness;
-    int contrast;
   };
   
 
@@ -109,6 +105,8 @@
       sigc::signal<void, VidInputErrorCodes> error;
       sigc::signal<void, VidInputDevice> vidinputdevice_added;
       sigc::signal<void, VidInputDevice> vidinputdevice_removed;
+      sigc::signal<void, VidInputDevice, unsigned, unsigned, unsigned, unsigned, bool> vidinputdevice_opened;
+      sigc::signal<void, VidInputDevice> vidinputdevice_closed;
 
   protected:  
       ManagerState current_state;



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