[glib: 3/4] GWin32AppInfo: re-trigger registry watcher from the callback
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 3/4] GWin32AppInfo: re-trigger registry watcher from the callback
- Date: Mon, 2 Aug 2021 10:51:29 +0000 (UTC)
commit 4e9e7bfd34f33c66a4d25a082f91e9e2a3e231a8
Author: Руслан Ижбулатов <lrn1986 gmail com>
Date: Sat Jul 31 11:01:06 2021 +0000
GWin32AppInfo: re-trigger registry watcher from the callback
To ensure that the watch is properly re-set every time, call
watch_keys() from the watch callback. Previously the watch was only
renewed after a data update was done in a worker thread, which made
no sense, since the update function was implemented in such a way
that it can (and should) be re-triggered on each key change, until
the changes stop coming, and that can only happen if we renew
the registry watcher right away.
gio/gwin32appinfo.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
---
diff --git a/gio/gwin32appinfo.c b/gio/gwin32appinfo.c
index 5403225e2..4074f402c 100644
--- a/gio/gwin32appinfo.c
+++ b/gio/gwin32appinfo.c
@@ -3828,6 +3828,9 @@ update_registry_data (void)
return;
}
+static void
+watch_keys (void);
+
/* This function is called when any of our registry watchers detect
* changes in the registry.
*/
@@ -3835,6 +3838,7 @@ static void
keys_updated (GWin32RegistryKey *key,
gpointer user_data)
{
+ watch_keys ();
/* Indicate the tree as not up-to-date, push a new job for the AppInfo thread */
g_atomic_int_inc (&gio_win32_appinfo_update_counter);
/* We don't use the data pointer, but it must be non-NULL */
@@ -4029,7 +4033,6 @@ gio_win32_appinfo_init (gboolean do_wait)
g_mutex_lock (&gio_win32_appinfo_mutex);
while (g_atomic_int_get (&gio_win32_appinfo_update_counter) > 0)
g_cond_wait (&gio_win32_appinfo_cond, &gio_win32_appinfo_mutex);
- watch_keys ();
g_mutex_unlock (&gio_win32_appinfo_mutex);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]