Undo "Don't queue thumbs already waiting, 5 seconds timeout"

For now the behavior isn't reliable enough and should
be investigated more.
This commit is contained in:
Christian Dywan 2011-11-10 19:45:23 +01:00
parent 37d14e16b7
commit 6f6a57a623

View file

@ -62,9 +62,6 @@ midori_view_speed_dial_get_thumb (MidoriView* view,
gchar* dial_id, gchar* dial_id,
gchar* url); gchar* url);
static void
midori_view_speed_dial_thumb_apply (MidoriView* view);
struct _MidoriView struct _MidoriView
{ {
GtkVBox parent_instance; GtkVBox parent_instance;
@ -191,7 +188,6 @@ static guint signals[LAST_SIGNAL];
static gchar* speeddial_markup = NULL; static gchar* speeddial_markup = NULL;
static GtkWidget* thumb_view = NULL; static GtkWidget* thumb_view = NULL;
static GList* thumb_queue = NULL; static GList* thumb_queue = NULL;
static guint thumb_timeout = 0;
static void static void
midori_view_finalize (GObject* object); midori_view_finalize (GObject* object);
@ -5316,22 +5312,6 @@ static void
thumb_view_load_status_cb (WebKitWebView* thumb_view_, thumb_view_load_status_cb (WebKitWebView* thumb_view_,
GParamSpec* pspec, GParamSpec* pspec,
MidoriView* view) MidoriView* view)
{
if (webkit_web_view_get_load_status (thumb_view_) != WEBKIT_LOAD_FINISHED)
return;
midori_view_speed_dial_thumb_apply (view);
}
static void
midori_view_speed_dial_thumb_timeout (MidoriView* view)
{
webkit_web_view_stop_loading (WEBKIT_WEB_VIEW (thumb_view));
midori_view_speed_dial_thumb_apply (view);
}
static void
midori_view_speed_dial_thumb_apply (MidoriView* view)
{ {
GdkPixbuf* img; GdkPixbuf* img;
#if HAVE_OFFSCREEN #if HAVE_OFFSCREEN
@ -5346,8 +5326,8 @@ midori_view_speed_dial_thumb_apply (MidoriView* view)
GKeyFile* key_file; GKeyFile* key_file;
const gchar* title; const gchar* title;
if (thumb_timeout > 0) if (webkit_web_view_get_load_status (thumb_view_) != WEBKIT_LOAD_FINISHED)
g_source_remove (thumb_timeout); return;
spec = g_object_get_data (G_OBJECT (thumb_view), "spec"); spec = g_object_get_data (G_OBJECT (thumb_view), "spec");
url = strstr (spec, "|") + 1; url = strstr (spec, "|") + 1;
@ -5385,10 +5365,6 @@ midori_view_speed_dial_thumb_apply (MidoriView* view)
thumb_queue = g_list_remove (thumb_queue, spec); thumb_queue = g_list_remove (thumb_queue, spec);
if (thumb_queue != NULL) if (thumb_queue != NULL)
{ {
/* At best wait 5 seconds for a single thumbnail to load */
thumb_timeout = g_timeout_add_seconds (5,
(GSourceFunc)midori_view_speed_dial_thumb_timeout, view);
g_object_set_data_full (G_OBJECT (thumb_view), "spec", g_object_set_data_full (G_OBJECT (thumb_view), "spec",
thumb_queue->data, (GDestroyNotify)g_free); thumb_queue->data, (GDestroyNotify)g_free);
webkit_web_view_open (WEBKIT_WEB_VIEW (thumb_view), webkit_web_view_open (WEBKIT_WEB_VIEW (thumb_view),
@ -5399,14 +5375,6 @@ midori_view_speed_dial_thumb_apply (MidoriView* view)
thumb_view, thumb_view_load_status_cb, view); thumb_view, thumb_view_load_status_cb, view);
} }
static gint
midori_view_speed_dial_thumb_cf (gconstpointer spec1,
gconstpointer spec2)
{
/* Compare URL without dial id */
return strcmp (strstr (spec1, "|") + 1, strstr (spec2, "|") + 1);
}
/** /**
* midori_view_speed_dial_get_thumb * midori_view_speed_dial_get_thumb
* @view: a #MidoriView * @view: a #MidoriView
@ -5420,7 +5388,6 @@ midori_view_speed_dial_get_thumb (MidoriView* view,
{ {
WebKitWebSettings* settings; WebKitWebSettings* settings;
GtkWidget* browser; GtkWidget* browser;
gchar* spec;
#if !HAVE_OFFSCREEN #if !HAVE_OFFSCREEN
GtkWidget* notebook; GtkWidget* notebook;
GtkWidget* label; GtkWidget* label;
@ -5470,23 +5437,10 @@ midori_view_speed_dial_get_thumb (MidoriView* view,
g_object_unref (notebook); g_object_unref (notebook);
#endif #endif
spec = g_strconcat (dial_id, "|", url, NULL); thumb_queue = g_list_append (thumb_queue, g_strconcat (dial_id, "|", url, NULL));
/* If spec is already queued, there's nothing to be done */
if (g_list_find_custom (thumb_queue, spec, midori_view_speed_dial_thumb_cf))
{
g_free (spec);
return;
}
thumb_queue = g_list_append (thumb_queue, spec);
if (g_list_nth_data (thumb_queue, 1) != NULL) if (g_list_nth_data (thumb_queue, 1) != NULL)
return; return;
/* At best wait 5 seconds for a single thumbnail to load */
if (thumb_timeout > 0)
g_source_remove (thumb_timeout);
thumb_timeout = g_timeout_add_seconds (5,
(GSourceFunc)midori_view_speed_dial_thumb_timeout, view);
g_object_set_data_full (G_OBJECT (thumb_view), "spec", g_object_set_data_full (G_OBJECT (thumb_view), "spec",
thumb_queue->data, (GDestroyNotify)g_free); thumb_queue->data, (GDestroyNotify)g_free);
g_signal_connect (thumb_view, "notify::load-status", g_signal_connect (thumb_view, "notify::load-status",