[gthumb] use g_cancellable_connect/disconnect to handle race conditions correctly



commit fe6ebdc77faab64fc8b213b8014e76cfcf9f8c68
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Nov 7 09:35:37 2010 +0100

    use g_cancellable_connect/disconnect to handle race conditions correctly

 gthumb/gth-metadata-provider.c |    7 +++++--
 gthumb/gth-task.c              |   12 ++++++------
 2 files changed, 11 insertions(+), 8 deletions(-)
---
diff --git a/gthumb/gth-metadata-provider.c b/gthumb/gth-metadata-provider.c
index 8546baa..c4083c9 100644
--- a/gthumb/gth-metadata-provider.c
+++ b/gthumb/gth-metadata-provider.c
@@ -179,7 +179,7 @@ query_metadata_done (QueryMetadataData *rmd)
 	_g_object_list_unref (rmtd->files);
 	g_free (rmtd);
 	if (rmd->cancel_signal != 0)
-		g_signal_handler_disconnect (rmd->cancellable, rmd->cancel_signal);
+		g_cancellable_disconnect (rmd->cancellable, rmd->cancel_signal);
 	_g_object_unref (rmd->cancellable);
 	g_free (rmd);
 }
@@ -289,7 +289,10 @@ _g_query_metadata_async (GList             *files,       /* GthFileData * list *
 	rmd = g_new0 (QueryMetadataData, 1);
 	rmd->cancellable = _g_object_ref (cancellable);
 	if (rmd->cancellable != NULL)
-		rmd->cancel_signal = g_signal_connect (rmd->cancellable, "cancelled", G_CALLBACK (query_metadata_cancelled_cb), rmd);
+		rmd->cancel_signal = g_cancellable_connect (rmd->cancellable,
+							    G_CALLBACK (query_metadata_cancelled_cb),
+							    rmd,
+							    NULL);
 
 	rmd->ready_func = ready_func;
 	rmd->user_data = user_data;
diff --git a/gthumb/gth-task.c b/gthumb/gth-task.c
index d6d1858..da9fe3e 100644
--- a/gthumb/gth-task.c
+++ b/gthumb/gth-task.c
@@ -61,7 +61,7 @@ gth_task_finalize (GObject *object)
 	task = GTH_TASK (object);
 
 	if (task->priv->cancellable != NULL) {
-		g_signal_handler_disconnect (task->priv->cancellable, task->priv->cancellable_cancelled);
+		g_cancellable_disconnect (task->priv->cancellable, task->priv->cancellable_cancelled);
 		g_object_unref (task->priv->cancellable);
 	}
 
@@ -194,7 +194,7 @@ gth_task_exec (GthTask      *task,
 		return;
 
 	if (task->priv->cancellable != NULL) {
-		g_signal_handler_disconnect (task->priv->cancellable, task->priv->cancellable_cancelled);
+		g_cancellable_disconnect (task->priv->cancellable, task->priv->cancellable_cancelled);
 		g_object_unref (task->priv->cancellable);
 	}
 
@@ -202,10 +202,10 @@ gth_task_exec (GthTask      *task,
 		task->priv->cancellable = _g_object_ref (cancellable);
 	else
 		task->priv->cancellable = g_cancellable_new ();
-	task->priv->cancellable_cancelled = g_signal_connect (task->priv->cancellable,
-							      "cancelled",
-							      G_CALLBACK (cancellable_cancelled_cb),
-							      task);
+	task->priv->cancellable_cancelled = g_cancellable_connect (task->priv->cancellable,
+								   G_CALLBACK (cancellable_cancelled_cb),
+							           task,
+							           NULL);
 	task->priv->running = TRUE;
 	GTH_TASK_GET_CLASS (task)->exec (task);
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]