From 47d01abe279cf4d5d2f4f3aea934004b87542d69 Mon Sep 17 00:00:00 2001 From: xiaoguang wang Date: Wed, 20 Feb 2019 09:26:02 +0800 Subject: display-store: make foreach ignore callback return value gdm_display_store_foreach is designed to iterate through all displays in the display store. Under the hood, it currently uses gdm_display_store_find, though, so will prematurely stop it's loop if a callback returns TRUE. Callers are getting this wrong. Some return TRUE with the expectation it goes on, and some fail to return a value at all. This commit changes gdm_display_store_foreach to use g_hash_table_foreach instead, so the callback return values no longer matter. --- daemon/gdm-display-store.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/daemon/gdm-display-store.c b/daemon/gdm-display-store.c index fd24334e..910468cd 100644 --- a/daemon/gdm-display-store.c +++ b/daemon/gdm-display-store.c @@ -146,6 +146,16 @@ find_func (const char *id, closure->user_data); } +static void +foreach_func (const char *id, + StoredDisplay *stored_display, + FindClosure *closure) +{ + (void) closure->predicate (id, + stored_display->display, + closure->user_data); +} + void gdm_display_store_foreach (GdmDisplayStore *store, GdmDisplayStoreFunc func, @@ -159,9 +169,9 @@ gdm_display_store_foreach (GdmDisplayStore *store, closure.predicate = func; closure.user_data = user_data; - g_hash_table_find (store->priv->displays, - (GHRFunc) find_func, - &closure); + g_hash_table_foreach (store->priv->displays, + (GHFunc) foreach_func, + &closure); } GdmDisplay * -- cgit v1.2.1 From c9e02375dc8f2c636b3698655856c22e9308f60a Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 21 Feb 2019 15:20:01 -0500 Subject: xdmcp-display-factory: don't return value from foreach funcs The xdmcp code is returning TRUE from its display store foreach functions, which is useless since commit 47d01abe and wrong before that. This commit makes it return void instead. --- daemon/gdm-xdmcp-display-factory.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/daemon/gdm-xdmcp-display-factory.c b/daemon/gdm-xdmcp-display-factory.c index 270685d0..220ee3af 100644 --- a/daemon/gdm-xdmcp-display-factory.c +++ b/daemon/gdm-xdmcp-display-factory.c @@ -666,7 +666,7 @@ typedef struct { int count; } CountDisplayData; -static gboolean +static void count_displays_from_host (const char *id, GdmDisplay *display, CountDisplayData *data) @@ -680,8 +680,6 @@ count_displays_from_host (const char *id, data->count++; } } - - return TRUE; } static int @@ -1807,7 +1805,7 @@ gdm_xdmcp_send_got_managed_forward (GdmXdmcpDisplayFactory *factory, (int)gdm_sockaddr_len (gdm_address_peek_sockaddr_storage (address))); } -static gboolean +static void count_sessions (const char *id, GdmDisplay *display, GdmXdmcpDisplayFactory *factory) @@ -1823,8 +1821,6 @@ count_sessions (const char *id, factory->num_pending_sessions++; } } - - return TRUE; } static void -- cgit v1.2.1 From c9214f02efaa28964ddaa874b61fe97b31e2d5c5 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 21 Feb 2019 15:20:01 -0500 Subject: local-display-factory: don't return value from foreach funcs The local display factor code is returning FALSE from its display store foreach functions, which is useless since commit 47d01abe. This commit makes it return void instead. --- daemon/gdm-local-display-factory.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/daemon/gdm-local-display-factory.c b/daemon/gdm-local-display-factory.c index 5b9a48a1..98daca48 100644 --- a/daemon/gdm-local-display-factory.c +++ b/daemon/gdm-local-display-factory.c @@ -270,20 +270,18 @@ gdm_local_display_factory_create_transient_display (GdmLocalDisplayFactory *fact return ret; } -static gboolean +static void finish_display_on_seat_if_waiting (GdmDisplayStore *display_store, GdmDisplay *display, const char *seat_id) { if (gdm_display_get_status (display) != GDM_DISPLAY_WAITING_TO_FINISH) - return FALSE; + return; g_debug ("GdmLocalDisplayFactory: finish background display\n"); gdm_display_stop_greeter_session (display); gdm_display_unmanage (display); gdm_display_finish (display); - - return FALSE; } static void -- cgit v1.2.1 From a964604851c6c2dbba44e2571c8655fb2343e084 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 21 Feb 2019 15:20:01 -0500 Subject: manager: don't return value from listify_display_ids The manager code is returning FALSE from its listify_display_ids foreach function, which is useless since commit 47d01abe. This commit makes it return void instead. --- daemon/gdm-manager.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/daemon/gdm-manager.c b/daemon/gdm-manager.c index 2dea45e5..980aa62d 100644 --- a/daemon/gdm-manager.c +++ b/daemon/gdm-manager.c @@ -2424,15 +2424,12 @@ gdm_manager_error_quark (void) return ret; } -static gboolean +static void listify_display_ids (const char *id, GdmDisplay *display, GPtrArray **array) { g_ptr_array_add (*array, g_strdup (id)); - - /* return FALSE to continue */ - return FALSE; } /* -- cgit v1.2.1