[glib/wip/desrt/gfilemonitor: 48/52] GPollFileMonitor: use thread default main context



commit 5a9e844b53e183457ee1c8ff46de2c950fac54c3
Author: Ryan Lortie <desrt desrt ca>
Date:   Fri Jan 16 16:41:21 2015 -0500

    GPollFileMonitor: use thread default main context
    
    Attach the GPollFileMonitor to the thread default main context instead
    of the global default.
    
    This matches the behaviour of the other file monitors.

 gio/gpollfilemonitor.c |   13 ++++++++-----
 1 files changed, 8 insertions(+), 5 deletions(-)
---
diff --git a/gio/gpollfilemonitor.c b/gio/gpollfilemonitor.c
index 10c2d86..bdc72e3 100644
--- a/gio/gpollfilemonitor.c
+++ b/gio/gpollfilemonitor.c
@@ -35,7 +35,7 @@ struct _GPollFileMonitor
   GFileMonitor parent_instance;
   GFile *file;
   GFileInfo *last_info;
-  guint timeout;
+  GSource *timeout;
 };
 
 #define POLL_TIME_SECS 5
@@ -171,8 +171,10 @@ poll_file_timeout (gpointer data)
 static void
 schedule_poll_timeout (GPollFileMonitor* poll_monitor)
 {
-  poll_monitor->timeout = g_timeout_add_seconds (POLL_TIME_SECS, poll_file_timeout, poll_monitor);
- }
+  poll_monitor->timeout = g_timeout_source_new_seconds (POLL_TIME_SECS);
+  g_source_set_callback (poll_monitor->timeout, poll_file_timeout, poll_monitor, NULL);
+  g_source_attach (poll_monitor->timeout, g_main_context_get_thread_default ());
+}
 
 static void
 got_initial_info (GObject      *source_object,
@@ -222,8 +224,9 @@ g_poll_file_monitor_cancel (GFileMonitor* monitor)
   
   if (poll_monitor->timeout)
     {
-      g_source_remove (poll_monitor->timeout);
-      poll_monitor->timeout = 0;
+      g_source_destroy (poll_monitor->timeout);
+      g_source_unref (poll_monitor->timeout);
+      poll_monitor->timeout = NULL;
     }
   
   return TRUE;


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