[evolution-rss] temporary fix for webkit in non-main thread
- From: Lucian Langa <lucilanga src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [evolution-rss] temporary fix for webkit in non-main thread
- Date: Wed, 19 Aug 2009 08:07:02 +0000 (UTC)
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]