[gnome-photos/wip/rishi/dlna-renderers-dialog-cancel-during-destruction] dlna-renderers-dialog: Cancel get_icon during destruction
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-photos/wip/rishi/dlna-renderers-dialog-cancel-during-destruction] dlna-renderers-dialog: Cancel get_icon during destruction
- Date: Sat, 10 Apr 2021 10:25:58 +0000 (UTC)
commit f2f81e7991b984144d4621f2db515c8d17e9b3b7
Author: Debarshi Ray <debarshir gnome org>
Date: Sat Apr 10 12:25:18 2021 +0200
dlna-renderers-dialog: Cancel get_icon during destruction
src/photos-dlna-renderers-dialog.c | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
---
diff --git a/src/photos-dlna-renderers-dialog.c b/src/photos-dlna-renderers-dialog.c
index f2c77ad0..61cd3d58 100644
--- a/src/photos-dlna-renderers-dialog.c
+++ b/src/photos-dlna-renderers-dialog.c
@@ -39,6 +39,7 @@
struct _PhotosDlnaRenderersDialog
{
GtkDialog parent_instance;
+ GCancellable *cancellable;
PhotosBaseManager *item_mngr;
PhotosDlnaRenderersManager *renderers_mngr;
PhotosRemoteDisplayManager *remote_mngr;
@@ -82,6 +83,12 @@ photos_dlna_renderers_dialog_dispose (GObject *object)
{
PhotosDlnaRenderersDialog *self = PHOTOS_DLNA_RENDERERS_DIALOG (object);
+ if (self->cancellable != NULL)
+ {
+ g_cancellable_cancel (self->cancellable);
+ g_clear_object (&self->cancellable);
+ }
+
g_clear_object (&self->item_mngr);
g_clear_object (&self->renderers_mngr);
g_clear_object (&self->remote_mngr);
@@ -129,7 +136,7 @@ photos_dlna_renderers_dialog_set_icon_cb (GObject *source_object,
gpointer user_data)
{
g_autoptr (GdkPixbuf) pixbuf = NULL;
- g_autoptr (GtkImage) image = GTK_IMAGE (user_data);
+ GtkImage *image;
PhotosDlnaRenderer *renderer = PHOTOS_DLNA_RENDERER (source_object);
{
@@ -138,11 +145,15 @@ photos_dlna_renderers_dialog_set_icon_cb (GObject *source_object,
pixbuf = photos_dlna_renderer_get_icon_finish (renderer, res, &error);
if (error != NULL)
{
- g_warning ("Unable to load renderer icon: %s", error->message);
+ if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+ g_warning ("Unable to load renderer icon: %s", error->message);
+
goto out;
}
}
+ image = GTK_IMAGE (user_data);
+
gtk_image_set_from_pixbuf (image, pixbuf);
out:
@@ -180,9 +191,9 @@ photos_dlna_renderers_dialog_add_renderer (PhotosDlnaRenderersDialog *self, Phot
"",
"",
GTK_ICON_SIZE_DIALOG,
- NULL,
+ self->cancellable,
photos_dlna_renderers_dialog_set_icon_cb,
- g_object_ref (image));
+ image);
gtk_container_add (GTK_CONTAINER (row_grid), image);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]