[gimp] Simplify GimpDisplayShell's icon update API



commit 7c39a22dc205d244783a3c8636036528d83a9954
Author: Michael Natterer <mitch gimp org>
Date:   Thu Oct 8 10:33:28 2009 +0200

    Simplify GimpDisplayShell's icon update API
    
    It makes no sense to distinguish between idle and immediate update in
    the public API, the code can simply decide by itself to immediately
    update a NULL image's icon.

 app/display/gimpdisplayshell-handlers.c |    4 +-
 app/display/gimpdisplayshell-icon.c     |   79 ++++++++++++++----------------
 app/display/gimpdisplayshell-icon.h     |    3 +-
 3 files changed, 40 insertions(+), 46 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-handlers.c b/app/display/gimpdisplayshell-handlers.c
index 5cec9eb..79e77d4 100644
--- a/app/display/gimpdisplayshell-handlers.c
+++ b/app/display/gimpdisplayshell-handlers.c
@@ -295,7 +295,7 @@ gimp_display_shell_disconnect (GimpDisplayShell *shell)
 
   g_return_if_fail (GIMP_IS_IMAGE (image));
 
-  gimp_display_shell_icon_idle_stop (shell);
+  gimp_display_shell_icon_update_stop (shell);
 
   if (shell->grid_gc)
     {
@@ -572,7 +572,7 @@ static void
 gimp_display_shell_invalidate_preview_handler (GimpImage        *image,
                                                GimpDisplayShell *shell)
 {
-  gimp_display_shell_icon_idle_update (shell);
+  gimp_display_shell_icon_update (shell);
 }
 
 static void
diff --git a/app/display/gimpdisplayshell-icon.c b/app/display/gimpdisplayshell-icon.c
index c046a50..a0675e4 100644
--- a/app/display/gimpdisplayshell-icon.c
+++ b/app/display/gimpdisplayshell-icon.c
@@ -24,7 +24,6 @@
 
 #include "core/gimp.h"
 #include "core/gimpimage.h"
-#include "core/gimpviewable.h"
 
 #include "gimpdisplay.h"
 #include "gimpdisplayshell.h"
@@ -33,18 +32,51 @@
 
 #define GIMP_DISPLAY_UPDATE_ICON_TIMEOUT  1000
 
-static gboolean   gimp_display_shell_idle_update_icon  (gpointer data);
+static gboolean   gimp_display_shell_icon_update_idle (gpointer data);
 
 
+/*  public functions  */
+
 void
 gimp_display_shell_icon_update (GimpDisplayShell *shell)
 {
-  GimpImage *image;
-  GdkPixbuf *pixbuf = NULL;
+  g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
+
+  gimp_display_shell_icon_update_stop (shell);
 
+  if (gimp_display_get_image (shell->display))
+    shell->icon_idle_id = g_timeout_add_full (G_PRIORITY_LOW,
+                                              GIMP_DISPLAY_UPDATE_ICON_TIMEOUT,
+                                              gimp_display_shell_icon_update_idle,
+                                              shell,
+                                              NULL);
+  else
+    gimp_display_shell_icon_update_idle (shell);
+}
+
+void
+gimp_display_shell_icon_update_stop (GimpDisplayShell *shell)
+{
   g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
 
-  image = gimp_display_get_image (shell->display);
+  if (shell->icon_idle_id)
+    {
+      g_source_remove (shell->icon_idle_id);
+      shell->icon_idle_id = 0;
+    }
+}
+
+
+/*  private functions  */
+
+static gboolean
+gimp_display_shell_icon_update_idle (gpointer data)
+{
+  GimpDisplayShell *shell  = GIMP_DISPLAY_SHELL (data);
+  GimpImage        *image  = gimp_display_get_image (shell->display);
+  GdkPixbuf        *pixbuf = NULL;
+
+  shell->icon_idle_id = 0;
 
   if (image)
     {
@@ -71,43 +103,6 @@ gimp_display_shell_icon_update (GimpDisplayShell *shell)
     }
 
   g_object_set (shell, "icon", pixbuf, NULL);
-}
-
-void
-gimp_display_shell_icon_idle_update (GimpDisplayShell *shell)
-{
-  g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
-
-  if (shell->icon_idle_id)
-    g_source_remove (shell->icon_idle_id);
-
-  shell->icon_idle_id = g_timeout_add_full (G_PRIORITY_LOW,
-                                            GIMP_DISPLAY_UPDATE_ICON_TIMEOUT,
-                                            gimp_display_shell_idle_update_icon,
-                                            shell,
-                                            NULL);
-}
-
-void
-gimp_display_shell_icon_idle_stop (GimpDisplayShell *shell)
-{
-  g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
-
-  if (shell->icon_idle_id)
-    {
-      g_source_remove (shell->icon_idle_id);
-      shell->icon_idle_id = 0;
-    }
-}
-
-static gboolean
-gimp_display_shell_idle_update_icon (gpointer data)
-{
-  GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (data);
-
-  shell->icon_idle_id = 0;
-
-  gimp_display_shell_icon_update (shell);
 
   return FALSE;
 }
diff --git a/app/display/gimpdisplayshell-icon.h b/app/display/gimpdisplayshell-icon.h
index ba45f0f..a94e72b 100644
--- a/app/display/gimpdisplayshell-icon.h
+++ b/app/display/gimpdisplayshell-icon.h
@@ -20,8 +20,7 @@
 
 
 void  gimp_display_shell_icon_update      (GimpDisplayShell *shell);
-void  gimp_display_shell_icon_idle_update (GimpDisplayShell *shell);
-void  gimp_display_shell_icon_idle_stop   (GimpDisplayShell *shell);
+void  gimp_display_shell_icon_update_stop (GimpDisplayShell *shell);
 
 
 #endif  /*  __GIMP_DISPLAY_SHELL_ICON_H__  */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]