summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLutz Müller <urc8@rz.uni-karlsruhe.de>2001-08-07 15:35:58 +0000
committerLutz Müller <lutz@src.gnome.org>2001-08-07 15:35:58 +0000
commitb4e8889a02bc552b45ecb7b271876bb05d49b3e0 (patch)
tree8fc6266cf4b31a85157e52714dc27e7085d3e577
parente69f2e9479a1b84a52b860c7d9628d3fb5448995 (diff)
downloadeog-b4e8889a02bc552b45ecb7b271876bb05d49b3e0.tar.gz
Remove the listener after capturing is done.
2001-08-07 Lutz Müller <urc8@rz.uni-karlsruhe.de> * eog-image-view.c: Remove the listener after capturing is done.
-rw-r--r--viewer/ChangeLog4
-rw-r--r--viewer/eog-image-view.c23
2 files changed, 19 insertions, 8 deletions
diff --git a/viewer/ChangeLog b/viewer/ChangeLog
index 1feb39e4..c22e37bf 100644
--- a/viewer/ChangeLog
+++ b/viewer/ChangeLog
@@ -1,3 +1,7 @@
+2001-08-07 Lutz Müller <urc8@rz.uni-karlsruhe.de>
+
+ * eog-image-view.c: Remove the listener after capturing is done.
+
2001-08-01 Lutz Müller <urc8@rz.uni-karlsruhe.de>
* eog-image-view.c: Make capturing of images async.
diff --git a/viewer/eog-image-view.c b/viewer/eog-image-view.c
index 29f8cddc..39b72060 100644
--- a/viewer/eog-image-view.c
+++ b/viewer/eog-image-view.c
@@ -335,7 +335,8 @@ verb_SaveAs_cb (BonoboUIComponent *uic, gpointer user_data, const char *name)
typedef struct
{
EogImageView *image_view;
- GNOME_Camera camera;
+ GNOME_Camera camera;
+ Bonobo_EventSource_ListenerId id;
} ListenerData;
static void
@@ -346,18 +347,23 @@ listener_cb (BonoboListener *listener, gchar *event_name, CORBA_any *any,
Bonobo_Storage storage;
Bonobo_Stream stream;
EogImageView *image_view;
+ GNOME_Camera camera;
if (getenv ("DEBUG_EOG"))
g_message ("Got event: %s", event_name);
listener_data = data;
image_view = listener_data->image_view;
+ camera = listener_data->camera;
+
+ bonobo_event_source_client_remove_listener (listener_data->camera,
+ listener_data->id, NULL);
+ g_free (listener_data);
if (!strcmp (event_name, "GNOME/Camera:CaptureImage:Action")) {
- storage = Bonobo_Unknown_queryInterface (listener_data->camera,
+ storage = Bonobo_Unknown_queryInterface (camera,
"IDL:Bonobo/Storage:1.0", ev);
- bonobo_object_release_unref (listener_data->camera, NULL);
- g_free (listener_data);
+ bonobo_object_release_unref (camera, NULL);
if (BONOBO_EX (ev)) {
g_warning ("Could not get storage: %s",
bonobo_exception_get_text (ev));
@@ -394,7 +400,6 @@ verb_AcquireFromCamera_cb (BonoboUIComponent *uic, gpointer user_data,
CORBA_Object gnocam;
GNOME_Camera camera;
ListenerData *listener_data;
- Bonobo_EventSource_ListenerId id;
g_return_if_fail (EOG_IS_IMAGE_VIEW (user_data));
@@ -422,8 +427,8 @@ verb_AcquireFromCamera_cb (BonoboUIComponent *uic, gpointer user_data,
listener_data = g_new0 (ListenerData, 1);
listener_data->image_view = image_view;
listener_data->camera = camera;
- id = bonobo_event_source_client_add_listener (camera, listener_cb,
- "GNOME/Camera:CaptureImage",
+ listener_data->id = bonobo_event_source_client_add_listener (camera,
+ listener_cb, "GNOME/Camera:CaptureImage",
&ev, listener_data);
if (BONOBO_EX (&ev)) {
g_warning ("Unable to add listener: %s",
@@ -438,7 +443,9 @@ verb_AcquireFromCamera_cb (BonoboUIComponent *uic, gpointer user_data,
if (BONOBO_EX (&ev)) {
g_warning ("Could not capture image: %s",
bonobo_exception_get_text (&ev));
- bonobo_event_source_client_remove_listener (camera, id, NULL);
+ bonobo_event_source_client_remove_listener (camera,
+ listener_data->id,
+ NULL);
g_free (listener_data);
bonobo_object_release_unref (camera, NULL);
CORBA_exception_free (&ev);