Author: carlosg
Date: Sun Feb 17 17:00:09 2008
New Revision: 4163
URL: http://svn.gnome.org/viewvc/gnome-system-tools?rev=4163&view=rev

Log:
2008-02-17  Carlos Garnacho  <[EMAIL PROTECTED]>

        * gst-tool.[ch] (gst_tool_add_configuration_object)
        (configuration_object_committed) (configuration_object_changed)
        (gst_tool_commit_async): Do not reload the configuration if there's a
        quite certain possibility that the tool is the one that caused the
        change.


Modified:
   trunk/src/common/ChangeLog
   trunk/src/common/gst-tool.c
   trunk/src/common/gst-tool.h

Modified: trunk/src/common/gst-tool.c
==============================================================================
--- trunk/src/common/gst-tool.c (original)
+++ trunk/src/common/gst-tool.c Sun Feb 17 17:00:09 2008
@@ -25,6 +25,7 @@
 #include <glib.h>
 #include <glib/gi18n.h>
 #include <gconf/gconf-client.h>
+#include <time.h>
 
 #ifdef ENABLE_GNOME
 #include <libgnomeui/libgnomeui.h>
@@ -516,6 +517,8 @@
        user_data->func = func;
        user_data->data = data;
 
+       tool->last_commit_time = time (NULL);
+
        if (message)
                gst_tool_show_report_window (tool, message);
 
@@ -565,6 +568,18 @@
                              GstTool    *tool)
 {
        gboolean do_update = TRUE;
+       time_t current_time;
+
+       current_time = time (NULL);
+
+       /* If we get ::changed shortly after having committed,
+        * there's a good chance that the tool has been the
+        * origin of the change. Of course there could be the
+        * possibility that this isn't true, but will happen
+        * quite rarely.
+        */
+       if (current_time - tool->last_commit_time <= 2)
+               return;
 
        if (gst_dialog_get_editing (tool->main_dialog)) {
                GtkWidget *parent, *dialog;
@@ -596,6 +611,13 @@
        }
 }
 
+static void
+configuration_object_committed (OobsObject *object,
+                               GstTool    *tool)
+{
+       tool->last_commit_time = time (NULL);
+}
+
 void
 gst_tool_add_configuration_object (GstTool    *tool,
                                   OobsObject *object)
@@ -607,4 +629,6 @@
 
        g_signal_connect (object, "changed",
                          G_CALLBACK (configuration_object_changed), tool);
+       g_signal_connect (object, "committed",
+                         G_CALLBACK (configuration_object_committed), tool);
 }

Modified: trunk/src/common/gst-tool.h
==============================================================================
--- trunk/src/common/gst-tool.h (original)
+++ trunk/src/common/gst-tool.h Sun Feb 17 17:00:09 2008
@@ -60,6 +60,8 @@
        GstDialog *main_dialog;
        GtkWidget *configuration_changed_dialog;
 
+       time_t last_commit_time;
+
        /* Progress report widgets */
        GtkWidget *report_window;
        GtkWidget *report_label;
_______________________________________________
SVN-commits-list mailing list (read only)
http://mail.gnome.org/mailman/listinfo/svn-commits-list

Want to limit the commits to a few modules? Go to above URL, log in to edit 
your options and select the modules ('topics') you want.
Module maintainer? It is possible to set the reply-to to your development 
mailing list. Email [EMAIL PROTECTED] if interested.

Reply via email to