summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java11
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/internal/webkit/WebKitGTK.java22
2 files changed, 33 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
index f253856721..fa826ecfe9 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/browser/WebKit.java
@@ -665,6 +665,17 @@ public void create (Composite parent, int style) {
size.x -= minSize.width; size.y -= minSize.height;
browser.setSize (size);
}
+
+ /*
+ * WebKitGTK version 1.10.x, and possibly other versions as well, crash
+ * sporadically in webkitWebViewRegisterForIconNotification(). Work
+ * around this crash by disabling WebKit's icon database, which is fine
+ * to do since the Browser does not make use of it in any way.
+ */
+ long /*int*/ database = WebKitGTK.webkit_get_favicon_database ();
+ if (database != 0) {
+ WebKitGTK.webkit_favicon_database_set_path (database, 0);
+ }
}
void addEventHandlers (long /*int*/ web_view, boolean top) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/internal/webkit/WebKitGTK.java b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/internal/webkit/WebKitGTK.java
index 029041b089..ceac57968b 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/internal/webkit/WebKitGTK.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT WebKit/gtk/org/eclipse/swt/internal/webkit/WebKitGTK.java
@@ -831,6 +831,17 @@ public static final void webkit_download_start (long /*int*/ download) {
}
/** @method flags=dynamic */
+public static final native void _webkit_favicon_database_set_path (long /*int*/ database, long /*int*/ path);
+public static final void webkit_favicon_database_set_path (long /*int*/ database, long /*int*/ path) {
+ lock.lock();
+ try {
+ _webkit_favicon_database_set_path (database, path);
+ } finally {
+ lock.unlock();
+ }
+}
+
+/** @method flags=dynamic */
public static final native long /*int*/ _webkit_get_default_session ();
public static final long /*int*/ webkit_get_default_session () {
lock.lock();
@@ -842,6 +853,17 @@ public static final long /*int*/ webkit_get_default_session () {
}
/** @method flags=dynamic */
+public static final native long /*int*/ _webkit_get_favicon_database ();
+public static final long /*int*/ webkit_get_favicon_database () {
+ lock.lock();
+ try {
+ return _webkit_get_favicon_database ();
+ } finally {
+ lock.unlock();
+ }
+}
+
+/** @method flags=dynamic */
public static final native int _webkit_major_version ();
public static final int webkit_major_version () {
lock.lock();