[empathy/gnome-2-34] theme-adium: keep count of the pages loading instead of using a boolean



commit bfcf9b8485e5bb41b7c29b5a9b2245a71def5725
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date:   Thu Mar 24 15:00:37 2011 +0100

    theme-adium: keep count of the pages loading instead of using a boolean
    
    Each time theme_adium_clear() is called, WebKit has to reload the page. If we
    do multi calls to clear() in a short interval, we used to think the page was
    loaded while it was the *old* one which was actually loaded. (#645670)

 libempathy-gtk/empathy-theme-adium.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)
---
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
index 8c6301e..b2f759e 100644
--- a/libempathy-gtk/empathy-theme-adium.c
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -61,7 +61,7 @@ typedef struct {
 	EmpathyContact       *last_contact;
 	time_t                last_timestamp;
 	gboolean              last_is_backlog;
-	gboolean              page_loaded;
+	guint                 pages_loading;
 	GList                *message_queue;
 	GtkWidget            *inspector_window;
 	GSettings            *gsettings_chat;
@@ -451,7 +451,7 @@ theme_adium_append_message (EmpathyChatView *view,
 	gboolean               is_backlog;
 	gboolean               consecutive;
 
-	if (!priv->page_loaded) {
+	if (priv->pages_loading != 0) {
 		priv->message_queue = g_list_prepend (priv->message_queue,
 						      g_object_ref (msg));
 		return;
@@ -656,7 +656,7 @@ theme_adium_clear (EmpathyChatView *view)
 	EmpathyThemeAdiumPriv *priv = GET_PRIV (view);
 	gchar *basedir_uri;
 
-	priv->page_loaded = FALSE;
+	priv->pages_loading++;
 	basedir_uri = g_strconcat ("file://", priv->data->basedir, NULL);
 	webkit_web_view_load_html_string (WEBKIT_WEB_VIEW (view),
 					  priv->data->template_html,
@@ -860,7 +860,10 @@ theme_adium_load_finished_cb (WebKitWebView  *view,
 	EmpathyChatView       *chat_view = EMPATHY_CHAT_VIEW (view);
 
 	DEBUG ("Page loaded");
-	priv->page_loaded = TRUE;
+	priv->pages_loading--;
+
+	if (priv->pages_loading != 0)
+		return;
 
 	/* Display queued messages */
 	priv->message_queue = g_list_reverse (priv->message_queue);
@@ -1068,6 +1071,8 @@ theme_adium_constructed (GObject *object)
 			  object);
 
 	/* Load template */
+	priv->pages_loading = 1;
+
 	basedir_uri = g_strconcat ("file://", priv->data->basedir, NULL);
 	webkit_web_view_load_html_string (WEBKIT_WEB_VIEW (object),
 					  priv->data->template_html,



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