+ // When getting called from GDK's timer handler we
+ // are no longer within GDK's grab on the GUI
+ // thread so we must lock it here ourselves.
+ gdk_threads_enter();
+
+ timer->Notify();
+
+ // Release lock again.
+ gdk_threads_leave();
+
+ return !timer->IsOneShot();
+}