[Xfce4-commits] <xfce4-panel:xfce-4.10> Panel: Emit save signal for plugins.

Nick Schermer noreply at xfce.org
Sun May 5 17:50:02 CEST 2013


Updating branch refs/heads/xfce-4.10
         to 6ef607c51d1a115e398ff5a13eb67a583d15faff (commit)
       from dd5c7fbfdca303357803d2e5a5642bcdd08eb21a (commit)

commit 6ef607c51d1a115e398ff5a13eb67a583d15faff
Author: Nick Schermer <nick at xfce.org>
Date:   Mon May 7 18:27:08 2012 +0200

    Panel: Emit save signal for plugins.
    
    Save every 10 minutes and on shutdown.
    
    (cherry picked from commit 89cfd5293f0306721f19fe6216637f3aca90372f)

 panel/panel-application.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/panel/panel-application.c b/panel/panel-application.c
index a8ee796..eb56236 100644
--- a/panel/panel-application.c
+++ b/panel/panel-application.c
@@ -60,6 +60,7 @@
 
 
 static void      panel_application_finalize           (GObject                *object);
+static gboolean  panel_application_autosave_timer     (gpointer                user_data);
 static void      panel_application_plugin_move        (GtkWidget              *item,
                                                        PanelApplication       *application);
 static gboolean  panel_application_plugin_insert      (PanelApplication       *application,
@@ -124,6 +125,9 @@ struct _PanelApplication
   /* internal list of opened dialogs */
   GSList             *dialogs;
 
+  /* autosave timer for plugins */
+  guint               autosave_timer_id;
+
 #ifdef GDK_WINDOWING_X11
   guint               wait_for_wm_timeout_id;
 #endif
@@ -220,6 +224,10 @@ panel_application_init (PanelApplication *application)
 
   /* get a factory reference so it never unloads */
   application->factory = panel_module_factory_get ();
+
+  /* start the autosave timer for plugins */
+  application->autosave_timer_id = g_timeout_add_seconds (60 * 10,
+      panel_application_autosave_timer, application);
 }
 
 
@@ -231,6 +239,14 @@ panel_application_finalize (GObject *object)
 
   panel_return_if_fail (application->dialogs == NULL);
 
+  if (application->autosave_timer_id != 0)
+    {
+      g_source_remove (application->autosave_timer_id);
+
+      /* save plugins */
+      panel_application_autosave_timer (application);
+    }
+
 #ifdef GDK_WINDOWING_X11
   /* stop autostart timeout */
   if (application->wait_for_wm_timeout_id != 0)
@@ -251,6 +267,19 @@ panel_application_finalize (GObject *object)
 
 
 
+static gboolean
+panel_application_autosave_timer (gpointer user_data)
+{
+  PanelApplication *application = PANEL_APPLICATION (user_data);
+
+  /* emit a save signal for the plugins */
+  panel_application_save (application, SAVE_PLUGIN_PROVIDERS);
+
+  return TRUE;
+}
+
+
+
 static void
 panel_application_xfconf_window_bindings (PanelApplication *application,
                                           PanelWindow      *window,


More information about the Xfce4-commits mailing list