diff options
author | Benjamin Otte <otte@redhat.com> | 2017-11-28 01:58:56 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2017-12-03 05:46:48 +0100 |
commit | cc078005707b36de996cd57301cbfd8742ac692c (patch) | |
tree | d2b49842ced12dd6631ee818acf6651e23921cb0 /gdk | |
parent | c146132a4a0adcd0372c8c0ee032da660483018c (diff) | |
download | gtk+-cc078005707b36de996cd57301cbfd8742ac692c.tar.gz |
gdk: Allow setting task data on (de)serializers
This mirrors GTask.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdkcontentdeserializer.c | 28 | ||||
-rw-r--r-- | gdk/gdkcontentdeserializer.h | 6 | ||||
-rw-r--r-- | gdk/gdkcontentserializer.c | 28 | ||||
-rw-r--r-- | gdk/gdkcontentserializer.h | 6 |
4 files changed, 68 insertions, 0 deletions
diff --git a/gdk/gdkcontentdeserializer.c b/gdk/gdkcontentdeserializer.c index 6c931e0978..f6a3f6f2bf 100644 --- a/gdk/gdkcontentdeserializer.c +++ b/gdk/gdkcontentdeserializer.c @@ -59,6 +59,9 @@ struct _GdkContentDeserializer GAsyncReadyCallback callback; gpointer callback_data; + gpointer task_data; + GDestroyNotify task_notify; + GError *error; gboolean returned; }; @@ -100,6 +103,9 @@ gdk_content_deserializer_finalize (GObject *object) g_clear_object (&deserializer->cancellable); g_clear_error (&deserializer->error); + if (deserializer->task_notify) + deserializer->task_notify (deserializer->task_data); + G_OBJECT_CLASS (gdk_content_deserializer_parent_class)->finalize (object); } @@ -200,6 +206,28 @@ gdk_content_deserializer_get_user_data (GdkContentDeserializer *deserializer) return deserializer->user_data; } +void +gdk_content_deserializer_set_task_data (GdkContentDeserializer *deserializer, + gpointer data, + GDestroyNotify notify) +{ + g_return_if_fail (GDK_IS_CONTENT_DESERIALIZER (deserializer)); + + if (deserializer->task_notify) + deserializer->task_notify (deserializer->task_data); + + deserializer->task_data = data; + deserializer->task_notify = notify; +} + +gpointer +gdk_content_deserializer_get_task_data (GdkContentDeserializer *deserializer) +{ + g_return_val_if_fail (GDK_IS_CONTENT_DESERIALIZER (deserializer), NULL); + + return deserializer->task_data; +} + static gboolean gdk_content_deserializer_emit_callback (gpointer data) { diff --git a/gdk/gdkcontentdeserializer.h b/gdk/gdkcontentdeserializer.h index 102a4bcc4e..671d5409c9 100644 --- a/gdk/gdkcontentdeserializer.h +++ b/gdk/gdkcontentdeserializer.h @@ -54,6 +54,12 @@ GDK_AVAILABLE_IN_3_94 GCancellable * gdk_content_deserializer_get_cancellable (GdkContentDeserializer *deserializer); GDK_AVAILABLE_IN_3_94 gpointer gdk_content_deserializer_get_user_data (GdkContentDeserializer *deserializer); +GDK_AVAILABLE_IN_3_94 +void gdk_content_deserializer_set_task_data (GdkContentDeserializer *deserializer, + gpointer data, + GDestroyNotify notify); +GDK_AVAILABLE_IN_3_94 +gpointer gdk_content_deserializer_get_task_data (GdkContentDeserializer *deserializer); GDK_AVAILABLE_IN_3_94 void gdk_content_deserializer_return_success (GdkContentDeserializer *deserializer); diff --git a/gdk/gdkcontentserializer.c b/gdk/gdkcontentserializer.c index 6860c97cb4..045cd20ce9 100644 --- a/gdk/gdkcontentserializer.c +++ b/gdk/gdkcontentserializer.c @@ -60,6 +60,9 @@ struct _GdkContentSerializer GAsyncReadyCallback callback; gpointer callback_data; + gpointer task_data; + GDestroyNotify task_notify; + GError *error; gboolean returned; }; @@ -101,6 +104,9 @@ gdk_content_serializer_finalize (GObject *object) g_clear_object (&serializer->cancellable); g_clear_error (&serializer->error); + if (serializer->task_notify) + serializer->task_notify (serializer->task_data); + G_OBJECT_CLASS (gdk_content_serializer_parent_class)->finalize (object); } @@ -202,6 +208,28 @@ gdk_content_serializer_get_user_data (GdkContentSerializer *serializer) return serializer->user_data; } +void +gdk_content_serializer_set_task_data (GdkContentSerializer *serializer, + gpointer data, + GDestroyNotify notify) +{ + g_return_if_fail (GDK_IS_CONTENT_SERIALIZER (serializer)); + + if (serializer->task_notify) + serializer->task_notify (serializer->task_data); + + serializer->task_data = data; + serializer->task_notify = notify; +} + +gpointer +gdk_content_serializer_get_task_data (GdkContentSerializer *serializer) +{ + g_return_val_if_fail (GDK_IS_CONTENT_SERIALIZER (serializer), NULL); + + return serializer->task_data; +} + static gboolean gdk_content_serializer_emit_callback (gpointer data) { diff --git a/gdk/gdkcontentserializer.h b/gdk/gdkcontentserializer.h index b1acf7fe28..428ddadafa 100644 --- a/gdk/gdkcontentserializer.h +++ b/gdk/gdkcontentserializer.h @@ -54,6 +54,12 @@ GDK_AVAILABLE_IN_3_94 GCancellable * gdk_content_serializer_get_cancellable (GdkContentSerializer *serializer); GDK_AVAILABLE_IN_3_94 gpointer gdk_content_serializer_get_user_data (GdkContentSerializer *serializer); +GDK_AVAILABLE_IN_3_94 +void gdk_content_serializer_set_task_data (GdkContentSerializer *serializer, + gpointer data, + GDestroyNotify notify); +GDK_AVAILABLE_IN_3_94 +gpointer gdk_content_serializer_get_task_data (GdkContentSerializer *serializer); GDK_AVAILABLE_IN_3_94 void gdk_content_serializer_return_success (GdkContentSerializer *serializer); |