[evolution-rss] temporary fix for webkit in non-main thread



commit d61f90e009a1f0731eba32db72e2c4a9e7ef254d
Author: Lucian Langa <lucilanga gnome org>
Date:   Wed Aug 19 11:06:51 2009 +0300

    temporary fix for webkit in non-main thread

 configure.ac |   10 +++++-----
 src/rss.c    |   26 +++++++++++++++++++++-----
 2 files changed, 26 insertions(+), 10 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 47278e9..63e202f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -186,11 +186,11 @@ if test "x$have_webkit" == "xno"; then
 	AC_DEFINE_UNQUOTED(WEBKIT_UNSTD, 1, [unstandard webkit installation])
 	WEBKIT_CFLAGS=$WebKitGtk_CFLAGS
 	WEBKIT_LIBS=$WebKitGtk_LIBS
-	WEBKIT_VERSION=`$PKG_CONFIG --modversion WebKitGtk` 
-	WEBKIT_VERSION=`echo $WEBKIT_VERSION|$AWK -F . '{print $1 * 1000000 + $2 * 1000 + $3}'`
+	WEBKIT_S_VERSION=`$PKG_CONFIG --modversion WebKitGtk` 
+	WEBKIT_VERSION=`echo $WEBKIT_S_VERSION|$AWK -F . '{print $1 * 1000000 + $2 * 1000 + $3}'`
 else
-	WEBKIT_VERSION=`$PKG_CONFIG --modversion webkit-1.0` 
-	WEBKIT_VERSION=`echo $WEBKIT_VERSION|$AWK -F . '{print $1 * 1000000 + $2 * 1000 + $3}'`
+	WEBKIT_S_VERSION=`$PKG_CONFIG --modversion webkit-1.0` 
+	WEBKIT_VERSION=`echo $WEBKIT_S_VERSION|$AWK -F . '{print $1 * 1000000 + $2 * 1000 + $3}'`
 	
 fi
 AC_SUBST([WEBKIT_VERSION])
@@ -341,7 +341,7 @@ pixmaps/Makefile
 
 kits="gtkHTML"
 if test "x$have_webkit" != "xno" -a "$enable_webkit" = "yes"; then
-        kits=$kits", WebKit"
+        kits=$kits", WebKit ($WEBKIT_S_VERSION)"
 fi
 # rename libxul to xulrunner to prevent confusion on debian
 if test "x$gecko_cv_gecko" == "xlibxul"; then
diff --git a/src/rss.c b/src/rss.c
index e1c0771..38837ee 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -1615,6 +1615,13 @@ gecko_over_link(GtkMozEmbed *mozembed)
 }
 
 gboolean
+show_webkit(GtkWidget *webkit)
+{
+	gtk_widget_show_all(webkit);
+	return FALSE;
+}
+
+gboolean
 gecko_click(GtkMozEmbed *mozembed, gpointer dom_event, gpointer user_data)
 {
 	gint button;
@@ -1669,7 +1676,6 @@ org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
 
 	guint engine = fallback_engine();
 	moz = gtk_scrolled_window_new(NULL,NULL);
-//	moz = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(moz),
                                        GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
 	
@@ -1679,6 +1685,8 @@ org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
 		rf->mozembed = (GtkWidget *)webkit_web_view_new();
 		webkit_set_preferences();
 		gtk_container_add(GTK_CONTAINER(moz), GTK_WIDGET(rf->mozembed));
+		//gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(moz), GTK_WIDGET(rf->mozembed));
+		//gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(moz), GTK_SHADOW_ETCHED_OUT);
 		g_signal_connect (rf->mozembed, "populate-popup", G_CALLBACK (webkit_click), moz);
 		g_signal_connect (rf->mozembed, "hovering-over-link", G_CALLBACK (webkit_over_link), moz);
 //add zoom level
@@ -1695,8 +1703,9 @@ org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
 		gecko_set_preferences();
 
 		/* FIXME add all those profile shits */
-		gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(moz), GTK_WIDGET(rf->mozembed));
-		gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(moz), GTK_SHADOW_ETCHED_OUT);
+		gtk_container_add(GTK_CONTAINER(moz), GTK_WIDGET(rf->mozembed));
+		//gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(moz), GTK_WIDGET(rf->mozembed));
+		//gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(moz), GTK_SHADOW_ETCHED_OUT);
 		g_signal_connect (rf->mozembed, "dom_mouse_click", G_CALLBACK(gecko_click), moz);
 		g_signal_connect (rf->mozembed, "link_message", G_CALLBACK(gecko_over_link), moz);
 		g_signal_connect (rf->mozembed, "net_start", G_CALLBACK(gecko_net_start), po->stopbut);
@@ -1732,9 +1741,16 @@ org_gnome_rss_browser (EMFormatHTML *efh, void *eb, EMFormatHTMLPObject *pobject
 
 //	gtk_container_set_resize_mode(w, GTK_RESIZE_PARENT);
 //	gtk_scrolled_window_set_policy(w, GTK_POLICY_NEVER, GTK_POLICY_NEVER);
-	gtk_widget_show_all(moz);
+	//aparently webkit will hang if its not run from the main thread when compiled
+	//with soup
+	//this is as ugly as can be
+	if (engine == 1)
+		g_idle_add(show_webkit, moz);
+	if (engine == 2)
+		gtk_widget_show_all(moz);
+		
         gtk_container_add ((GtkContainer *) eb, moz);
-        gtk_container_check_resize ((GtkContainer *) eb);
+///        gtk_container_check_resize ((GtkContainer *) eb);
 //	gtk_widget_set_size_request((GtkWidget *)rf->mozembed, 330, 330);
 //        gtk_container_add ((GtkContainer *) eb, rf->mozembed);
 	EMFormat *myf = (EMFormat *)efh;



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