[cheese] Add CheeseCameraDeviceMonitor::removed callback
- From: David King <davidk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [cheese] Add CheeseCameraDeviceMonitor::removed callback
- Date: Fri, 28 Oct 2011 16:04:48 +0000 (UTC)
commit 63c5ec91ea6a54f6b2a50fc10abf62f155b9e38e
Author: Patricia Santana Cruz <patriciasantanacruz gmail com>
Date: Fri Oct 28 16:53:12 2011 +0200
Add CheeseCameraDeviceMonitor::removed callback
Added CheeseCameraDeviceMonitor::removed signal callback function in
CheeseCamera.
Fixes bug 662852.
libcheese/cheese-camera.c | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
---
diff --git a/libcheese/cheese-camera.c b/libcheese/cheese-camera.c
index 36eb69b..788ff34 100644
--- a/libcheese/cheese-camera.c
+++ b/libcheese/cheese-camera.c
@@ -251,12 +251,34 @@ cheese_camera_add_device (CheeseCameraDeviceMonitor *monitor,
{
CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
- g_debug("%s", "added\n");
g_ptr_array_add (priv->camera_devices, device);
priv->num_camera_devices++;
}
static void
+cheese_camera_remove_device (CheeseCameraDeviceMonitor *monitor,
+ gchar *id,
+ CheeseCamera *camera)
+{
+ int i;
+
+ CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
+
+ for (i = 0; i < priv->num_camera_devices; i++)
+ {
+ CheeseCameraDevice *indexDevice = (CheeseCameraDevice *) g_ptr_array_index (priv->camera_devices, i);
+ const gchar *indexDeviceId = cheese_camera_device_get_id (indexDevice);
+
+ if (strcmp (indexDeviceId, id) == 0)
+ {
+ g_ptr_array_remove (priv->camera_devices, (gpointer) indexDevice);
+ priv->num_camera_devices--;
+ break;
+ }
+ }
+}
+
+static void
cheese_camera_detect_camera_devices (CheeseCamera *camera)
{
CheeseCameraPrivate *priv = CHEESE_CAMERA_GET_PRIVATE (camera);
@@ -267,6 +289,8 @@ cheese_camera_detect_camera_devices (CheeseCamera *camera)
priv->monitor = cheese_camera_device_monitor_new ();
g_signal_connect (G_OBJECT (priv->monitor), "added",
G_CALLBACK (cheese_camera_add_device), camera);
+ g_signal_connect (G_OBJECT (priv->monitor), "removed",
+ G_CALLBACK (cheese_camera_remove_device), camera);
cheese_camera_device_monitor_coldplug (priv->monitor);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]