gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r16559 - in gnunet-gtk/src: fs lib


From: gnunet
Subject: [GNUnet-SVN] r16559 - in gnunet-gtk/src: fs lib
Date: Mon, 15 Aug 2011 17:10:49 +0200

Author: grothoff
Date: 2011-08-15 17:10:48 +0200 (Mon, 15 Aug 2011)
New Revision: 16559

Modified:
   gnunet-gtk/src/fs/gnunet-fs-gtk.c
   gnunet-gtk/src/lib/eventloop.c
Log:
create dummy task to keep scheduler alive

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk.c   2011-08-15 15:03:02 UTC (rev 16558)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk.c   2011-08-15 15:10:48 UTC (rev 16559)
@@ -221,6 +221,7 @@
       gtk_widget_show (main_window);
       gtk_window_present (GTK_WINDOW (main_window));
     }
+  
 }
 
 

Modified: gnunet-gtk/src/lib/eventloop.c
===================================================================
--- gnunet-gtk/src/lib/eventloop.c      2011-08-15 15:03:02 UTC (rev 16558)
+++ gnunet-gtk/src/lib/eventloop.c      2011-08-15 15:10:48 UTC (rev 16559)
@@ -90,6 +90,12 @@
    */
   guint cached_poll_array_size;
 
+  /**
+   * Task we keep around just to keep the event loop running.
+   */
+  GNUNET_SCHEDULER_TaskIdentifier dummy_task;
+
+
 #if WINDOWS
   /**
    * Array to hold pipe handles during a select() call
@@ -148,6 +154,7 @@
 };
 
 
+
 /**
  * Get the configuration.
  *
@@ -170,6 +177,8 @@
 GNUNET_GTK_main_loop_quit (struct GNUNET_GTK_MainLoop *ml)
 {
   g_main_loop_quit (ml->gml);
+  GNUNET_SCHEDULER_cancel (ml->dummy_task);
+  ml->dummy_task = GNUNET_SCHEDULER_NO_TASK;
 }
 
 
@@ -221,6 +230,21 @@
 }
 
 
+/**
+ * Dummy task to keep our scheduler running.
+ */
+static void
+keepalive_task (void *cls,
+               const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  struct GNUNET_GTK_MainLoop *ml = cls;
+
+  ml->dummy_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
+                                                &keepalive_task,
+                                                ml);
+}
+
+
 #ifndef FD_COPY
 #define FD_COPY(s, d) (memcpy ((d), (s), sizeof (fd_set)))
 #endif
@@ -806,6 +830,12 @@
   /* start the Gtk event loop */
   GNUNET_assert (TRUE == g_main_context_acquire (ml->gmc));
   GNUNET_SCHEDULER_set_select (&gnunet_gtk_select, ml);
+
+  /* keep Gtk event loop running even if there are no GNUnet tasks */
+  ml->dummy_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
+                                                &keepalive_task,
+                                                ml);
+
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]