[gthumb] fixed crash when closing the slideshow
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] fixed crash when closing the slideshow
- Date: Mon, 4 Jul 2011 22:53:33 +0000 (UTC)
commit 039a62180eb38762ec75e51e568cecc4511bb990
Author: Paolo Bacchilega <paobac src gnome org>
Date: Tue Jul 5 00:51:43 2011 +0200
fixed crash when closing the slideshow
don't call uninhibit in the screensaver finalize function
extensions/gstreamer_tools/gth-media-viewer-page.c | 5 +++-
extensions/slideshow/gth-slideshow.c | 5 +++-
gthumb/gth-screensaver.c | 23 ++++++++++---------
3 files changed, 20 insertions(+), 13 deletions(-)
---
diff --git a/extensions/gstreamer_tools/gth-media-viewer-page.c b/extensions/gstreamer_tools/gth-media-viewer-page.c
index 6bf7b84..356e0f9 100644
--- a/extensions/gstreamer_tools/gth-media-viewer-page.c
+++ b/extensions/gstreamer_tools/gth-media-viewer-page.c
@@ -1283,7 +1283,10 @@ gth_media_viewer_page_finalize (GObject *obj)
}
_g_object_unref (self->priv->icon);
_g_object_unref (self->priv->file_data);
- _g_object_unref (self->priv->screensaver);
+ if (self->priv->screensaver != NULL) {
+ gth_screensaver_uninhibit (self->priv->screensaver);
+ g_object_unref (self->priv->screensaver);
+ }
G_OBJECT_CLASS (gth_media_viewer_page_parent_class)->finalize (obj);
}
diff --git a/extensions/slideshow/gth-slideshow.c b/extensions/slideshow/gth-slideshow.c
index e894b79..fd8ee68 100644
--- a/extensions/slideshow/gth-slideshow.c
+++ b/extensions/slideshow/gth-slideshow.c
@@ -323,7 +323,10 @@ gth_slideshow_finalize (GObject *object)
}
#endif
- _g_object_unref (self->priv->screensaver);
+ if (self->priv->screensaver != NULL) {
+ gth_screensaver_uninhibit (self->priv->screensaver);
+ g_object_unref (self->priv->screensaver);
+ }
G_OBJECT_CLASS (parent_class)->finalize (object);
}
diff --git a/gthumb/gth-screensaver.c b/gthumb/gth-screensaver.c
index 34fd153..a0063bd 100644
--- a/gthumb/gth-screensaver.c
+++ b/gthumb/gth-screensaver.c
@@ -51,11 +51,11 @@ gth_screensaver_finalize (GObject *object)
self = GTH_SCREENSAVER (object);
- gth_screensaver_uninhibit (self);
-
g_free (self->priv->app_id);
- if (self->priv->proxy != NULL)
+ if (self->priv->proxy != NULL) {
g_object_unref (self->priv->proxy);
+ self->priv->proxy = NULL;
+ }
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -215,14 +215,13 @@ org_gnome_session_manager_inhibit_ready_cb (GObject *source_object,
if (value == NULL) {
g_warning ("%s\n", error->message);
g_clear_error (&error);
- return;
+ }
+ else {
+ g_variant_get (value, "(u)", &self->priv->cookie);
+ g_variant_unref (value);
}
- g_print ("idle inhibited\n");
-
- g_variant_get (value, "(u)", &self->priv->cookie);
-
- g_variant_unref (value);
+ g_object_unref (self);
}
@@ -251,6 +250,7 @@ gth_screensaver_inhibit (GthScreensaver *self,
if (gtk_widget_is_toplevel (toplevel_window))
xid = GDK_WINDOW_XID (gtk_widget_get_window (toplevel_window));
+ g_object_ref (self);
g_dbus_proxy_call (self->priv->proxy,
"Inhibit",
g_variant_new ("(susu)",
@@ -281,12 +281,12 @@ org_gnome_session_manager_uninhibit_ready_cb (GObject *source_object,
g_clear_error (&error);
}
- g_print ("idle uninhibited\n");
-
self->priv->cookie = 0;
if (value != NULL)
g_variant_unref (value);
+
+ g_object_unref (self);
}
@@ -306,6 +306,7 @@ gth_screensaver_uninhibit (GthScreensaver *self)
return;
}
+ g_object_ref (self);
g_dbus_proxy_call (self->priv->proxy,
"Uninhibit",
g_variant_new ("(u)", self->priv->cookie),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]