[Xfce4-commits] <midori:master> Optimize icon lookups and tag received icon-loaded

Christian Dywan noreply at xfce.org
Thu Jan 24 01:30:01 CET 2013


Updating branch refs/heads/master
         to 05a3233396b531f3cf9fef033508412f8e47f6fa (commit)
       from b82ae64b2866e8cd068bddb893b82899fdb13523 (commit)

commit 05a3233396b531f3cf9fef033508412f8e47f6fa
Author: Christian Dywan <christian at twotoasts.de>
Date:   Thu Jan 24 01:24:17 2013 +0100

    Optimize icon lookups and tag received icon-loaded

 katze/katze-item.c      |   24 +++++++++++++++---------
 katze/midori-paths.vala |   11 +++++++----
 2 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/katze/katze-item.c b/katze/katze-item.c
index 01300c1..4de44cf 100644
--- a/katze/katze-item.c
+++ b/katze/katze-item.c
@@ -445,16 +445,12 @@ katze_item_get_pixbuf (KatzeItem* item,
 
     g_return_val_if_fail (KATZE_IS_ITEM (item), NULL);
 
+    if (KATZE_ITEM_IS_FOLDER (item))
+        return gtk_widget_render_icon (widget, GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU, NULL);
     if ((pixbuf = midori_paths_get_icon (item->uri, widget)))
         return pixbuf;
     if ((pixbuf = midori_paths_get_icon (katze_item_get_icon (item), widget)))
         return pixbuf;
-    if (widget != NULL)
-    {
-        if (KATZE_ITEM_IS_FOLDER (item))
-            return gtk_widget_render_icon (widget, GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU, NULL);
-        return gtk_widget_render_icon (widget, GTK_STOCK_FILE, GTK_ICON_SIZE_MENU, NULL);
-    }
     return NULL;
 }
 
@@ -469,10 +465,18 @@ katze_item_icon_loaded_cb (WebKitIconDatabase*    database,
                            const gchar*           frame_uri,
                            GtkWidget*             image)
 {
+    /* This signal fires extremely often (WebKit bug?), we must throttle it */
+    if (g_object_get_data (G_OBJECT (image), "midori-icon-loaded"))
+        return;
+
     KatzeItem* item = g_object_get_data (G_OBJECT (image), "KatzeItem");
-    GdkPixbuf* pixbuf = katze_item_get_pixbuf (item, image);
-    gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
-    g_object_unref (pixbuf);
+    GdkPixbuf* pixbuf = midori_paths_get_icon (frame_uri, image);
+    if (pixbuf != NULL)
+    {
+        gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
+        g_object_unref (pixbuf);
+        g_object_set_data (G_OBJECT (image), "midori-icon-loaded", (void*)1);
+    }
 }
 #endif
 
@@ -519,6 +523,8 @@ katze_item_get_image (KatzeItem* item,
     gtk_widget_show (image);
     if (pixbuf != NULL)
         g_object_unref (pixbuf);
+    if (KATZE_ITEM_IS_FOLDER (item))
+        return image;
     #if WEBKIT_CHECK_VERSION (1, 8, 0)
     g_signal_connect (webkit_get_favicon_database (), "icon-loaded",
         G_CALLBACK (katze_item_icon_loaded_cb), image);
diff --git a/katze/midori-paths.vala b/katze/midori-paths.vala
index 5cced9f..50de349 100644
--- a/katze/midori-paths.vala
+++ b/katze/midori-paths.vala
@@ -112,12 +112,15 @@ namespace Midori {
                 tmp_dir = Path.build_path (Path.DIR_SEPARATOR_S,
                     Environment.get_tmp_dir (), "midori-" + Environment.get_user_name ());
             }
+#if HAVE_WEBKIT_1_3_13
+            if (user_data_dir != null) {
+                string folder = Path.build_filename (user_data_dir, "webkit", "icondatabase");
 #if HAVE_WEBKIT_1_8_0
-            if (user_data_dir != null)
-                WebKit.get_favicon_database ().set_path (Path.build_filename (user_data_dir, "webkit", "icondatabase"));
+                WebKit.get_favicon_database ().set_path (folder);
 #elif HAVE_WEBKIT_1_3_13
-            if (user_data_dir != null)
-                WebKit.get_icon_database ().set_path (Path.build_filename (user_data_dir, "webkit", "icondatabase"));
+                WebKit.get_icon_database ().set_path (folder);
+#endif
+            }
 #endif
             if (strcmp (Environment.get_variable ("MIDORI_DEBUG"), "paths") == 0) {
                 stdout.printf ("config: %s\ncache: %s\nuser_data: %s\ntmp: %s\n",


More information about the Xfce4-commits mailing list