[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