1b5975d6bSopenharmony_ciFrom 7045260c226e409530e4f961f613f8c7d6f6725a Mon Sep 17 00:00:00 2001 2b5975d6bSopenharmony_ciFrom: Simon McVittie <smcv@collabora.com> 3b5975d6bSopenharmony_ciDate: Thu, 23 Jun 2022 09:41:21 +0100 4b5975d6bSopenharmony_ciSubject: [PATCH] gsignal: Add G_CONNECT_DEFAULT 5b5975d6bSopenharmony_ci 6b5975d6bSopenharmony_ciThis makes calls to g_signal_connect_data() and g_signal_connect_object() 7b5975d6bSopenharmony_ciwith default flags more self-documenting. 8b5975d6bSopenharmony_ci 9b5975d6bSopenharmony_ciSigned-off-by: Simon McVittie <smcv@collabora.com> 10b5975d6bSopenharmony_ci 11b5975d6bSopenharmony_ciConflict:NA 12b5975d6bSopenharmony_ciReference:https://gitlab.gnome.org/GNOME/glib/-/commit/7045260c226e409530e4f961f613f8c7d6f6725a 13b5975d6bSopenharmony_ci 14b5975d6bSopenharmony_ci--- 15b5975d6bSopenharmony_ci gio/gcancellable.c | 2 +- 16b5975d6bSopenharmony_ci gio/gdbusobjectmanagerclient.c | 4 ++-- 17b5975d6bSopenharmony_ci gio/gdbusserver.c | 2 +- 18b5975d6bSopenharmony_ci gio/glocalfilemonitor.c | 5 +++-- 19b5975d6bSopenharmony_ci gio/gsubprocess.c | 4 +++- 20b5975d6bSopenharmony_ci gio/gtask.c | 3 ++- 21b5975d6bSopenharmony_ci gobject/gobject.c | 8 ++++---- 22b5975d6bSopenharmony_ci gobject/gsignal.h | 11 ++++++++--- 23b5975d6bSopenharmony_ci gobject/tests/signals.c | 6 ++++-- 24b5975d6bSopenharmony_ci 9 files changed, 28 insertions(+), 17 deletions(-) 25b5975d6bSopenharmony_ci 26b5975d6bSopenharmony_cidiff --git a/gio/gcancellable.c b/gio/gcancellable.c 27b5975d6bSopenharmony_ciindex 64755206be..fe3cbeb7f7 100644 28b5975d6bSopenharmony_ci--- a/gio/gcancellable.c 29b5975d6bSopenharmony_ci+++ b/gio/gcancellable.c 30b5975d6bSopenharmony_ci@@ -589,7 +589,7 @@ g_cancellable_connect (GCancellable *cancellable, 31b5975d6bSopenharmony_ci id = g_signal_connect_data (cancellable, "cancelled", 32b5975d6bSopenharmony_ci callback, data, 33b5975d6bSopenharmony_ci (GClosureNotify) data_destroy_func, 34b5975d6bSopenharmony_ci- 0); 35b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT); 36b5975d6bSopenharmony_ci 37b5975d6bSopenharmony_ci g_mutex_unlock (&cancellable_mutex); 38b5975d6bSopenharmony_ci } 39b5975d6bSopenharmony_cidiff --git a/gio/gdbusobjectmanagerclient.c b/gio/gdbusobjectmanagerclient.c 40b5975d6bSopenharmony_ciindex bfb73b5308..fa5e73041e 100644 41b5975d6bSopenharmony_ci--- a/gio/gdbusobjectmanagerclient.c 42b5975d6bSopenharmony_ci+++ b/gio/gdbusobjectmanagerclient.c 43b5975d6bSopenharmony_ci@@ -1456,7 +1456,7 @@ initable_init (GInitable *initable, 44b5975d6bSopenharmony_ci G_CALLBACK (on_notify_g_name_owner), 45b5975d6bSopenharmony_ci weak_ref_new (G_OBJECT (manager)), 46b5975d6bSopenharmony_ci (GClosureNotify) weak_ref_free, 47b5975d6bSopenharmony_ci- 0 /* flags */); 48b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT); 49b5975d6bSopenharmony_ci 50b5975d6bSopenharmony_ci manager->priv->signal_signal_id = 51b5975d6bSopenharmony_ci g_signal_connect_data (manager->priv->control_proxy, 52b5975d6bSopenharmony_ci@@ -1464,7 +1464,7 @@ initable_init (GInitable *initable, 53b5975d6bSopenharmony_ci G_CALLBACK (on_control_proxy_g_signal), 54b5975d6bSopenharmony_ci weak_ref_new (G_OBJECT (manager)), 55b5975d6bSopenharmony_ci (GClosureNotify) weak_ref_free, 56b5975d6bSopenharmony_ci- 0 /* flags */); 57b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT); 58b5975d6bSopenharmony_ci 59b5975d6bSopenharmony_ci manager->priv->name_owner = g_dbus_proxy_get_name_owner (manager->priv->control_proxy); 60b5975d6bSopenharmony_ci if (manager->priv->name_owner == NULL && manager->priv->name != NULL) 61b5975d6bSopenharmony_cidiff --git a/gio/gdbusserver.c b/gio/gdbusserver.c 62b5975d6bSopenharmony_ciindex fe5b23ed4d..f144d129ae 100644 63b5975d6bSopenharmony_ci--- a/gio/gdbusserver.c 64b5975d6bSopenharmony_ci+++ b/gio/gdbusserver.c 65b5975d6bSopenharmony_ci@@ -630,7 +630,7 @@ g_dbus_server_start (GDBusServer *server) 66b5975d6bSopenharmony_ci G_CALLBACK (on_run), 67b5975d6bSopenharmony_ci g_object_ref (server), 68b5975d6bSopenharmony_ci (GClosureNotify) g_object_unref, 69b5975d6bSopenharmony_ci- 0 /* flags */); 70b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT); 71b5975d6bSopenharmony_ci g_socket_service_start (G_SOCKET_SERVICE (server->listener)); 72b5975d6bSopenharmony_ci server->active = TRUE; 73b5975d6bSopenharmony_ci g_object_notify (G_OBJECT (server), "active"); 74b5975d6bSopenharmony_cidiff --git a/gio/glocalfilemonitor.c b/gio/glocalfilemonitor.c 75b5975d6bSopenharmony_ciindex fde52193a9..8de4079394 100644 76b5975d6bSopenharmony_ci--- a/gio/glocalfilemonitor.c 77b5975d6bSopenharmony_ci+++ b/gio/glocalfilemonitor.c 78b5975d6bSopenharmony_ci@@ -809,7 +809,8 @@ g_local_file_monitor_start (GLocalFileMonitor *local_monitor, 79b5975d6bSopenharmony_ci 80b5975d6bSopenharmony_ci local_monitor->mount_monitor = g_unix_mount_monitor_get (); 81b5975d6bSopenharmony_ci g_signal_connect_object (local_monitor->mount_monitor, "mounts-changed", 82b5975d6bSopenharmony_ci- G_CALLBACK (g_local_file_monitor_mounts_changed), local_monitor, 0); 83b5975d6bSopenharmony_ci+ G_CALLBACK (g_local_file_monitor_mounts_changed), local_monitor, 84b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT); 85b5975d6bSopenharmony_ci #endif 86b5975d6bSopenharmony_ci } 87b5975d6bSopenharmony_ci 88b5975d6bSopenharmony_ci@@ -924,7 +925,7 @@ g_local_file_monitor_new_in_worker (const gchar *pathname, 89b5975d6bSopenharmony_ci { 90b5975d6bSopenharmony_ci if (callback) 91b5975d6bSopenharmony_ci g_signal_connect_data (monitor, "changed", G_CALLBACK (callback), 92b5975d6bSopenharmony_ci- user_data, destroy_user_data, 0 /* flags */); 93b5975d6bSopenharmony_ci+ user_data, destroy_user_data, G_CONNECT_DEFAULT); 94b5975d6bSopenharmony_ci 95b5975d6bSopenharmony_ci g_local_file_monitor_start (monitor, pathname, is_directory, flags, GLIB_PRIVATE_CALL(g_get_worker_context) ()); 96b5975d6bSopenharmony_ci } 97b5975d6bSopenharmony_cidiff --git a/gio/gsubprocess.c b/gio/gsubprocess.c 98b5975d6bSopenharmony_ciindex bb157197fc..c4747a1481 100644 99b5975d6bSopenharmony_ci--- a/gio/gsubprocess.c 100b5975d6bSopenharmony_ci+++ b/gio/gsubprocess.c 101b5975d6bSopenharmony_ci@@ -756,7 +756,9 @@ g_subprocess_wait_async (GSubprocess *subprocess, 102b5975d6bSopenharmony_ci * see the cancellation in the _finish(). 103b5975d6bSopenharmony_ci */ 104b5975d6bSopenharmony_ci if (cancellable) 105b5975d6bSopenharmony_ci- g_signal_connect_object (cancellable, "cancelled", G_CALLBACK (g_subprocess_wait_cancelled), task, 0); 106b5975d6bSopenharmony_ci+ g_signal_connect_object (cancellable, "cancelled", 107b5975d6bSopenharmony_ci+ G_CALLBACK (g_subprocess_wait_cancelled), 108b5975d6bSopenharmony_ci+ task, G_CONNECT_DEFAULT); 109b5975d6bSopenharmony_ci 110b5975d6bSopenharmony_ci subprocess->pending_waits = g_slist_prepend (subprocess->pending_waits, task); 111b5975d6bSopenharmony_ci task = NULL; 112b5975d6bSopenharmony_cidiff --git a/gio/gtask.c b/gio/gtask.c 113b5975d6bSopenharmony_ciindex d0f8b4e33a..774cba793a 100644 114b5975d6bSopenharmony_ci--- a/gio/gtask.c 115b5975d6bSopenharmony_ci+++ b/gio/gtask.c 116b5975d6bSopenharmony_ci@@ -1530,7 +1530,8 @@ g_task_start_task_thread (GTask *task, 117b5975d6bSopenharmony_ci g_signal_connect_data (task->cancellable, "cancelled", 118b5975d6bSopenharmony_ci G_CALLBACK (task_thread_cancelled), 119b5975d6bSopenharmony_ci g_object_ref (task), 120b5975d6bSopenharmony_ci- task_thread_cancelled_disconnect_notify, 0); 121b5975d6bSopenharmony_ci+ task_thread_cancelled_disconnect_notify, 122b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT); 123b5975d6bSopenharmony_ci } 124b5975d6bSopenharmony_ci 125b5975d6bSopenharmony_ci if (g_private_get (&task_private)) 126b5975d6bSopenharmony_cidiff --git a/gobject/gobject.c b/gobject/gobject.c 127b5975d6bSopenharmony_ciindex df908984b7..5ba8fd017b 100644 128b5975d6bSopenharmony_ci--- a/gobject/gobject.c 129b5975d6bSopenharmony_ci+++ b/gobject/gobject.c 130b5975d6bSopenharmony_ci@@ -3093,8 +3093,8 @@ g_object_get_property (GObject *object, 131b5975d6bSopenharmony_ci * 132b5975d6bSopenharmony_ci * The signal specs expected by this function have the form 133b5975d6bSopenharmony_ci * "modifier::signal_name", where modifier can be one of the following: 134b5975d6bSopenharmony_ci- * - signal: equivalent to g_signal_connect_data (..., NULL, 0) 135b5975d6bSopenharmony_ci- * - object-signal, object_signal: equivalent to g_signal_connect_object (..., 0) 136b5975d6bSopenharmony_ci+ * - signal: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_DEFAULT) 137b5975d6bSopenharmony_ci+ * - object-signal, object_signal: equivalent to g_signal_connect_object (..., G_CONNECT_DEFAULT) 138b5975d6bSopenharmony_ci * - swapped-signal, swapped_signal: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_SWAPPED) 139b5975d6bSopenharmony_ci * - swapped_object_signal, swapped-object-signal: equivalent to g_signal_connect_object (..., G_CONNECT_SWAPPED) 140b5975d6bSopenharmony_ci * - signal_after, signal-after: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_AFTER) 141b5975d6bSopenharmony_ci@@ -3135,12 +3135,12 @@ g_object_connect (gpointer _object, 142b5975d6bSopenharmony_ci if (strncmp (signal_spec, "signal::", 8) == 0) 143b5975d6bSopenharmony_ci g_signal_connect_data (object, signal_spec + 8, 144b5975d6bSopenharmony_ci callback, data, NULL, 145b5975d6bSopenharmony_ci- 0); 146b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT); 147b5975d6bSopenharmony_ci else if (strncmp (signal_spec, "object_signal::", 15) == 0 || 148b5975d6bSopenharmony_ci strncmp (signal_spec, "object-signal::", 15) == 0) 149b5975d6bSopenharmony_ci g_signal_connect_object (object, signal_spec + 15, 150b5975d6bSopenharmony_ci callback, data, 151b5975d6bSopenharmony_ci- 0); 152b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT); 153b5975d6bSopenharmony_ci else if (strncmp (signal_spec, "swapped_signal::", 16) == 0 || 154b5975d6bSopenharmony_ci strncmp (signal_spec, "swapped-signal::", 16) == 0) 155b5975d6bSopenharmony_ci g_signal_connect_data (object, signal_spec + 16, 156b5975d6bSopenharmony_cidiff --git a/gobject/gsignal.h b/gobject/gsignal.h 157b5975d6bSopenharmony_ciindex 7b3974a8c4..53da2a6eab 100644 158b5975d6bSopenharmony_ci--- a/gobject/gsignal.h 159b5975d6bSopenharmony_ci+++ b/gobject/gsignal.h 160b5975d6bSopenharmony_ci@@ -155,9 +155,11 @@ typedef enum 161b5975d6bSopenharmony_ci #define G_SIGNAL_FLAGS_MASK 0x1ff 162b5975d6bSopenharmony_ci /** 163b5975d6bSopenharmony_ci * GConnectFlags: 164b5975d6bSopenharmony_ci- * @G_CONNECT_AFTER: whether the handler should be called before or after the 165b5975d6bSopenharmony_ci- * default handler of the signal. 166b5975d6bSopenharmony_ci- * @G_CONNECT_SWAPPED: whether the instance and data should be swapped when 167b5975d6bSopenharmony_ci+ * @G_CONNECT_DEFAULT: Default behaviour (no special flags). Since: 2.74 168b5975d6bSopenharmony_ci+ * @G_CONNECT_AFTER: If set, the handler should be called after the 169b5975d6bSopenharmony_ci+ * default handler of the signal. Normally, the handler is called before 170b5975d6bSopenharmony_ci+ * the default handler. 171b5975d6bSopenharmony_ci+ * @G_CONNECT_SWAPPED: If set, the instance and data should be swapped when 172b5975d6bSopenharmony_ci * calling the handler; see g_signal_connect_swapped() for an example. 173b5975d6bSopenharmony_ci * 174b5975d6bSopenharmony_ci * The connection flags are used to specify the behaviour of a signal's 175b5975d6bSopenharmony_ci@@ -165,6 +167,7 @@ typedef enum 176b5975d6bSopenharmony_ci */ 177b5975d6bSopenharmony_ci typedef enum 178b5975d6bSopenharmony_ci { 179b5975d6bSopenharmony_ci+ G_CONNECT_DEFAULT GLIB_AVAILABLE_ENUMERATOR_IN_2_74 = 0, 180b5975d6bSopenharmony_ci G_CONNECT_AFTER = 1 << 0, 181b5975d6bSopenharmony_ci G_CONNECT_SWAPPED = 1 << 1 182b5975d6bSopenharmony_ci } GConnectFlags; 183b5975d6bSopenharmony_ci@@ -504,6 +507,8 @@ void g_signal_chain_from_overridden_handler (gpointer instance, 184b5975d6bSopenharmony_ci * 185b5975d6bSopenharmony_ci * Returns: the handler ID, of type #gulong (always greater than 0 for successful connections) 186b5975d6bSopenharmony_ci */ 187b5975d6bSopenharmony_ci+/* Intentionally not using G_CONNECT_DEFAULT here to avoid deprecation 188b5975d6bSopenharmony_ci+ * warnings with older GLIB_VERSION_MAX_ALLOWED */ 189b5975d6bSopenharmony_ci #define g_signal_connect(instance, detailed_signal, c_handler, data) \ 190b5975d6bSopenharmony_ci g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0) 191b5975d6bSopenharmony_ci /** 192b5975d6bSopenharmony_cidiff --git a/gobject/tests/signals.c b/gobject/tests/signals.c 193b5975d6bSopenharmony_ciindex ea9a778bf8..e4be41575f 100644 194b5975d6bSopenharmony_ci--- a/gobject/tests/signals.c 195b5975d6bSopenharmony_ci+++ b/gobject/tests/signals.c 196b5975d6bSopenharmony_ci@@ -1109,8 +1109,10 @@ test_destroy_target_object (void) 197b5975d6bSopenharmony_ci sender = g_object_new (test_get_type (), NULL); 198b5975d6bSopenharmony_ci target1 = g_object_new (test_get_type (), NULL); 199b5975d6bSopenharmony_ci target2 = g_object_new (test_get_type (), NULL); 200b5975d6bSopenharmony_ci- g_signal_connect_object (sender, "simple", G_CALLBACK (simple_handler1), target1, 0); 201b5975d6bSopenharmony_ci- g_signal_connect_object (sender, "simple", G_CALLBACK (simple_handler2), target2, 0); 202b5975d6bSopenharmony_ci+ g_signal_connect_object (sender, "simple", G_CALLBACK (simple_handler1), 203b5975d6bSopenharmony_ci+ target1, G_CONNECT_DEFAULT); 204b5975d6bSopenharmony_ci+ g_signal_connect_object (sender, "simple", G_CALLBACK (simple_handler2), 205b5975d6bSopenharmony_ci+ target2, G_CONNECT_DEFAULT); 206b5975d6bSopenharmony_ci g_signal_emit_by_name (sender, "simple"); 207b5975d6bSopenharmony_ci g_object_unref (sender); 208b5975d6bSopenharmony_ci } 209b5975d6bSopenharmony_ci-- 210b5975d6bSopenharmony_ciGitLab 211b5975d6bSopenharmony_ci 212