From 0188cfaac316ddf25faa850038e1b63060bdc718 Mon Sep 17 00:00:00 2001
From: Olivier Fourdan <fourdan.olivier@wanadoo.fr>
Date: Sat, 7 Jan 2006 17:58:20 +0000
Subject: [PATCH] Some obvious optimizations to speed up MCS startup.

(Old svn revision: 19350)
---
 mcs-plugin/margins.c      | 15 +++++++------
 mcs-plugin/workspaces.c   | 46 ++++++++++++++++-----------------------
 mcs-plugin/xfwm4_plugin.c |  8 -------
 3 files changed, 27 insertions(+), 42 deletions(-)

diff --git a/mcs-plugin/margins.c b/mcs-plugin/margins.c
index d882850ba..ea11661b2 100644
--- a/mcs-plugin/margins.c
+++ b/mcs-plugin/margins.c
@@ -55,7 +55,7 @@ static char *options[] = {
     "Xfwm/BottomMargin"
 };
 
-static void set_margin (int side, int margin);
+static void set_margin (int side, int margin, gboolean save);
 
 /* create margins channel */
 void
@@ -78,10 +78,8 @@ create_margins_channel (McsPlugin * mcs_plugin)
 
         n = (setting) ? setting->data.v_int : 0;
 
-        set_margin (i, n);
+        set_margin (i, n, FALSE);
     }
-
-    save_margins_channel ();
 }
 
 /* write channel to file */
@@ -93,7 +91,7 @@ save_margins_channel (void)
 
 /* setting a margin */
 static void
-set_margin (int side, int margin)
+set_margin (int side, int margin, gboolean save)
 {
     mcs_manager_set_int (mcs_manager, options[side], CHANNEL2, margin);
 
@@ -101,7 +99,10 @@ set_margin (int side, int margin)
 
     mcs_manager_notify (mcs_manager, CHANNEL2);
 
-    save_margins_channel ();
+    if (save)
+    {
+        save_margins_channel ();
+    }
 }
 
 static void
@@ -110,7 +111,7 @@ margin_changed (GtkSpinButton * spin, gpointer p)
     int i = GPOINTER_TO_INT (p);
     int n = gtk_spin_button_get_value_as_int (spin);
 
-    set_margin (i, n);
+    set_margin (i, n, TRUE);
 }
 
 void
diff --git a/mcs-plugin/workspaces.c b/mcs-plugin/workspaces.c
index 822543a8c..4a23c4866 100644
--- a/mcs-plugin/workspaces.c
+++ b/mcs-plugin/workspaces.c
@@ -68,8 +68,8 @@ enum
 };
 
 static void save_workspaces_channel (McsManager * manager);
-static void set_workspace_count (McsManager * manager, int count);
-static void set_workspace_names (McsManager * manager, char **names);
+static void set_workspace_count (McsManager * manager, int count, gboolean save);
+static void set_workspace_names (McsManager * manager, char **names, gboolean save);
 static void watch_workspaces_hint (McsManager * manager);
 
 /* very useful functions */
@@ -86,7 +86,7 @@ array_size (char **array)
 }
 
 static void
-update_names (McsManager * manager, int n)
+update_names (McsManager * manager, int n, gboolean save)
 {
     char **tmpnames;
     int i, len;
@@ -126,7 +126,7 @@ update_names (McsManager * manager, int n)
     g_strfreev (ws_names);
     ws_names = tmpnames;
 
-    set_workspace_names (manager, ws_names);
+    set_workspace_names (manager, ws_names, save);
 }
 
 /* the settings channel */
@@ -175,27 +175,15 @@ create_workspaces_channel (McsPlugin * mcs_plugin)
         {
             ws_count = DEFAULT_NBR_WS;
         }
-        set_workspace_count (mcs_manager, ws_count);
+        set_workspace_count (mcs_manager, ws_count, FALSE);
     }
 
     len = (ws_names) ? array_size (ws_names) : 0;
     n = (len > ws_count) ? len : ws_count;
 
-    update_names (mcs_manager, n);
+    update_names (mcs_manager, n, FALSE);
 
-    save_workspaces_channel (mcs_manager);
-
-    /* check for changes made by other programs */
-    /* XXX I don't think this should be called at all.
-       Problem is when the module is unloaded, the callback
-       remains and crashes the MCS manager on workspace count
-       change.
-       Safer to remove it for now.
-
-       XXX added g_module_unload () to remove callbacks.
-     */
-       
-       watch_workspaces_hint (mcs_manager);
+    watch_workspaces_hint (mcs_manager);
 }
 
 static void
@@ -205,23 +193,25 @@ save_workspaces_channel (McsManager * manager)
 }
 
 static void
-set_workspace_count (McsManager * manager, int count)
+set_workspace_count (McsManager * manager, int count, gboolean save)
 {
     int len;
 
     mcs_manager_set_int (manager, "Xfwm/WorkspaceCount", CHANNEL1, ws_count);
 
     mcs_manager_notify (manager, CHANNEL1);
-    save_workspaces_channel (manager);
+
+    if (save)
+        save_workspaces_channel (manager);
 
     len = array_size (ws_names);
 
     if (len < ws_count)
-        update_names (manager, ws_count);
+        update_names (manager, ws_count, save);
 }
 
 static void
-set_workspace_names (McsManager * manager, char **names)
+set_workspace_names (McsManager * manager, char **names, gboolean save)
 {
     char *string;
     static Atom xa_NET_DESKTOP_NAMES = 0;
@@ -232,7 +222,9 @@ set_workspace_names (McsManager * manager, char **names)
     mcs_manager_set_string (manager, "names", CHANNEL1, string);
 
     mcs_manager_notify (manager, CHANNEL1);
-    save_workspaces_channel (manager);
+
+    if (save)
+        save_workspaces_channel (manager);
 
     if (!xa_NET_DESKTOP_NAMES)
     {
@@ -398,7 +390,7 @@ edit_name_dialog (GtkTreeModel * model, GtkTreeIter * iter,
         gtk_list_store_set (GTK_LIST_STORE (model), iter,
                             NAME_COLUMN, ws_names[n], -1);
 
-        set_workspace_names (manager, ws_names);
+        set_workspace_names (manager, ws_names, TRUE);
     }
 
     gtk_widget_destroy (dialog);
@@ -510,7 +502,7 @@ count_changed (GtkSpinButton * spin, McsManager * manager)
     int n = gtk_spin_button_get_value_as_int (spin);
 
     ws_count = n;
-    set_workspace_count (manager, n);
+    set_workspace_count (manager, n, TRUE);
 
     treeview_set_rows (manager, n);
 }
@@ -573,7 +565,7 @@ update_channel (NetkScreen * screen, NetkWorkspace * ws, McsManager * manager)
 {
     ws_count = netk_screen_get_workspace_count (screen);
 
-    set_workspace_count (manager, ws_count);
+    set_workspace_count (manager, ws_count, TRUE);
 }
 
 static void
diff --git a/mcs-plugin/xfwm4_plugin.c b/mcs-plugin/xfwm4_plugin.c
index 6c30de99b..3854ccbeb 100644
--- a/mcs-plugin/xfwm4_plugin.c
+++ b/mcs-plugin/xfwm4_plugin.c
@@ -49,14 +49,6 @@
 
 #define INDICATOR_SIZE 11
 
-typedef struct _TitleRadioButton TitleRadioButton;
-struct _TitleRadioButton
-{
-    GtkWidget *radio_buttons[STATES];
-    guint active;
-    GSList *radio_group;
-};
-
 typedef struct _MenuTmpl MenuTmpl;
 struct _MenuTmpl
 {
-- 
GitLab