ekiga r6014 - in trunk: . lib/engine/vidinput/mlogo lib/engine/vidinput/ptlib lib/engine/vidinput/skel src/gui
- From: mschneid svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6014 - in trunk: . lib/engine/vidinput/mlogo lib/engine/vidinput/ptlib lib/engine/vidinput/skel src/gui
- Date: Sat, 1 Mar 2008 21:19:23 +0000 (GMT)
Author: mschneid
Date: Sat Mar 1 21:19:22 2008
New Revision: 6014
URL: http://svn.gnome.org/viewvc/ekiga?rev=6014&view=rev
Log:
Use the vidinput callbacks in GUI when device comes up and
if device initialisation failed.
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-info.h
trunk/lib/engine/vidinput/skel/vidinput-manager.h
trunk/src/gui/main.cpp
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 21:19:22 2008
@@ -73,6 +73,8 @@
bool GMVidInputManager_mlogo::open (unsigned width, unsigned height, unsigned fps)
{
+ Ekiga::VidInputConfig vidinput_config;
+
PTRACE(4, "GMVidInputManager_mlogo\tOpening Moving Logo with " << width << "x" << height << "/" << fps);
current_state.width = width;
current_state.height = height;
@@ -89,7 +91,12 @@
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));
+ vidinput_config.whiteness = 127;
+ vidinput_config.brightness = 127;
+ vidinput_config.colour = 127;
+ vidinput_config.contrast = 127;
+ vidinput_config.modifyable = false;
+ runtime.run_in_main (sigc::bind (vidinputdevice_opened.make_slot (), current_state.vidinput_device, vidinput_config));
return true;
}
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 21:19:22 2008
@@ -98,6 +98,7 @@
{
PVideoDevice::VideoFormat pvideo_format;
int whiteness, brightness, colour, contrast, hue;
+ Ekiga::VidInputConfig vidinput_config;
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);
@@ -127,13 +128,20 @@
if (error_code != Ekiga::ERR_NONE) {
PTRACE(1, "GMVidInputManager_ptlib\tEncountered error " << error_code << " while opening device ");
- runtime.run_in_main (sigc::bind (error.make_slot (), error_code));
+ runtime.run_in_main (sigc::bind (vidinputdevice_error.make_slot (), current_state.vidinput_device, error_code));
return false;
}
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));
+
+ vidinput_config.whiteness = whiteness >> 8;
+ vidinput_config.brightness = brightness >> 8;
+ vidinput_config.colour = colour >> 8;
+ vidinput_config.contrast = contrast >> 8;
+ vidinput_config.modifyable = true;
+
+ runtime.run_in_main (sigc::bind (vidinputdevice_opened.make_slot (), current_state.vidinput_device, vidinput_config));
return true;
}
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 21:19:22 2008
@@ -154,7 +154,7 @@
managers.insert (&manager);
manager_added.emit (manager);
- manager.error.connect (sigc::bind (sigc::mem_fun (this, &VidInputCore::on_error), &manager));
+ manager.vidinputdevice_error.connect (sigc::bind (sigc::mem_fun (this, &VidInputCore::on_vidinputdevice_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));
@@ -380,29 +380,29 @@
current_manager->set_contrast (contrast);
}
-void VidInputCore::on_error (VidInputErrorCodes error_code, VidInputManager *manager)
+void VidInputCore::on_vidinputdevice_error (VidInputDevice & vidinput_device, VidInputErrorCodes error_code, VidInputManager *manager)
{
- error.emit (*manager, error_code);
+ vidinputdevice_error.emit (*manager, vidinput_device, error_code);
}
-void VidInputCore::on_vidinputdevice_added (VidInputDevice vidinput_device, VidInputManager *manager)
+void VidInputCore::on_vidinputdevice_added (VidInputDevice & vidinput_device, VidInputManager *manager)
{
vidinputdevice_added.emit (*manager, vidinput_device);
}
-void VidInputCore::on_vidinputdevice_removed (VidInputDevice vidinput_device, VidInputManager *manager)
+void VidInputCore::on_vidinputdevice_removed (VidInputDevice & vidinput_device, VidInputManager *manager)
{
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)
+void VidInputCore::on_vidinputdevice_opened (VidInputDevice & vidinput_device,
+ VidInputConfig & vidinput_config,
+ VidInputManager *manager)
{
- vidinputdevice_opened.emit (*manager, vidinput_device, colour, brightness, whiteness, contrast, modifyable);
+ vidinputdevice_opened.emit (*manager, vidinput_device, vidinput_config);
}
-void VidInputCore::on_vidinputdevice_closed (VidInputDevice vidinput_device, VidInputManager *manager)
+void VidInputCore::on_vidinputdevice_closed (VidInputDevice & vidinput_device, VidInputManager *manager)
{
vidinputdevice_closed.emit (*manager, vidinput_device);
}
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 21:19:22 2008
@@ -172,20 +172,20 @@
/** See vidinput-manager.h for the API
*/
- 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;
+ sigc::signal<void, VidInputManager &, VidInputDevice &, VidInputErrorCodes> vidinputdevice_error;
+ sigc::signal<void, VidInputManager &, VidInputDevice &> vidinputdevice_added;
+ sigc::signal<void, VidInputManager &, VidInputDevice &> vidinputdevice_removed;
+ sigc::signal<void, VidInputManager &, VidInputDevice &, VidInputConfig&> 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,
+ void on_vidinputdevice_error (VidInputDevice & vidinput_device, 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,
+ VidInputConfig & vidinput_config,
VidInputManager *manager);
- void on_vidinputdevice_closed (VidInputDevice vidinput_device, 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-info.h
==============================================================================
--- trunk/lib/engine/vidinput/skel/vidinput-info.h (original)
+++ trunk/lib/engine/vidinput/skel/vidinput-info.h Sat Mar 1 21:19:22 2008
@@ -93,6 +93,14 @@
std::string device;
};
+ typedef struct VidInputConfig {
+ unsigned whiteness;
+ unsigned brightness;
+ unsigned colour;
+ unsigned contrast;
+ bool modifyable;
+ };
+
enum VidInputErrorCodes {
ERR_NONE = 0,
ERR_DEVICE,
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 21:19:22 2008
@@ -102,11 +102,11 @@
virtual void set_whiteness (unsigned /* whiteness */ ) {};
virtual void set_contrast (unsigned /* contrast */ ) {};
- 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;
+ sigc::signal<void, VidInputDevice&, VidInputErrorCodes> vidinputdevice_error;
+ sigc::signal<void, VidInputDevice&> vidinputdevice_added;
+ sigc::signal<void, VidInputDevice&> vidinputdevice_removed;
+ sigc::signal<void, VidInputDevice&, VidInputConfig&> vidinputdevice_opened;
+ sigc::signal<void, VidInputDevice&> vidinputdevice_closed;
protected:
ManagerState current_state;
Modified: trunk/src/gui/main.cpp
==============================================================================
--- trunk/src/gui/main.cpp (original)
+++ trunk/src/gui/main.cpp Sat Mar 1 21:19:22 2008
@@ -898,6 +898,78 @@
}
void
+on_vidinputdevice_opened_cb (Ekiga::VidInputManager & /* manager */,
+ Ekiga::VidInputDevice & /* vidinput_device */,
+ Ekiga::VidInputConfig & /* vidinput_config */,
+ gpointer self)
+{
+ gm_main_window_update_sensitivity (GTK_WIDGET (self), TRUE, FALSE, TRUE);
+}
+
+void
+on_vidinputdevice_closed_cb (Ekiga::VidInputManager & /* manager */, Ekiga::VidInputDevice & /*vidinput_device*/, gpointer self)
+{
+ gm_main_window_update_sensitivity (GTK_WIDGET (self), TRUE, FALSE, FALSE);
+ gm_main_window_update_logo_have_window (GTK_WIDGET (self));
+}
+
+void
+on_vidinputdevice_error_cb (Ekiga::VidInputManager & /* manager */,
+ Ekiga::VidInputDevice & vidinput_device,
+ Ekiga::VidInputErrorCodes error_code,
+ gpointer self)
+{
+ gchar *dialog_title = NULL;
+ gchar *dialog_msg = NULL;
+ gchar *tmp_msg = NULL;
+
+ dialog_title =
+ g_strdup_printf (_("Error while opening video device %s"),
+ (const char *) vidinput_device.device.c_str());
+
+ tmp_msg = g_strdup (_("A moving logo will be transmitted during calls. Notice that you can always transmit a given image or the moving logo by choosing \"Picture\" as video plugin and \"Moving logo\" or \"Static picture\" as device."));
+ switch (error_code) {
+
+ case Ekiga::ERR_DEVICE:
+ dialog_msg = g_strconcat (tmp_msg, "\n\n", _("There was an error while opening the device. Please check your permissions and make sure that the appropriate driver is loaded."), NULL);
+ break;
+
+ case Ekiga::ERR_FORMAT:
+ dialog_msg = g_strconcat (tmp_msg, "\n\n", _("Your video driver doesn't support the requested video format."), NULL);
+ break;
+
+ case Ekiga::ERR_CHANNEL:
+ dialog_msg = g_strconcat (tmp_msg, "\n\n", _("Could not open the chosen channel."), NULL);
+ break;
+
+ case Ekiga::ERR_COLOUR:
+ dialog_msg = g_strconcat (tmp_msg, "\n\n", _("Your driver doesn't seem to support any of the color formats supported by Ekiga.\n Please check your kernel driver documentation in order to determine which Palette is supported."), NULL);
+ break;
+
+ case Ekiga::ERR_FPS:
+ dialog_msg = g_strconcat (tmp_msg, "\n\n", _("Error while setting the frame rate."), NULL);
+ break;
+
+ case Ekiga::ERR_SCALE:
+ dialog_msg = g_strconcat (tmp_msg, "\n\n", _("Error while setting the frame size."), NULL);
+ break;
+
+ case Ekiga::ERR_NONE:
+ default:
+ dialog_msg = g_strconcat (tmp_msg, "\n\n", _("Unknown error."), NULL);
+ break;
+ }
+
+ gnomemeeting_warning_dialog_on_widget (GTK_WINDOW (GTK_WIDGET (self)),
+ VIDEO_DEVICES_KEY "enable_preview",
+ dialog_title,
+ "%s", dialog_msg);
+ g_free (dialog_msg);
+ g_free (dialog_title);
+ g_free (tmp_msg);
+}
+
+void
on_logo_update_required_cb (Ekiga::DisplayManager & /* manager */, gpointer self)
{
gm_main_window_update_logo_have_window (GTK_WIDGET (self));
@@ -3800,6 +3872,14 @@
std::vector <Ekiga::VidInputDevice> vidinput_devices;
vidinput_core->get_vidinput_devices(vidinput_devices);
+ conn = vidinput_core->vidinputdevice_opened.connect (sigc::bind (sigc::ptr_fun (on_vidinputdevice_opened_cb), (gpointer) window));
+ mw->connections.push_back (conn);
+
+ conn = vidinput_core->vidinputdevice_closed.connect (sigc::bind (sigc::ptr_fun (on_vidinputdevice_closed_cb), (gpointer) window));
+ mw->connections.push_back (conn);
+
+ conn = vidinput_core->vidinputdevice_error.connect (sigc::bind (sigc::ptr_fun (on_vidinputdevice_error_cb), (gpointer) window));
+ mw->connections.push_back (conn);
// we have to register the error callback here...
// dialog_title =
// g_strdup_printf (_("Error while opening video device %s"),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]