summaryrefslogtreecommitdiffstats
path: root/abs/core-testing/qt/QtWebKit_Flash.patch
diff options
context:
space:
mode:
authorBritney Fransen <brfransen@gmail.com>2010-07-01 01:15:12 (GMT)
committerBritney Fransen <brfransen@gmail.com>2010-07-01 01:15:12 (GMT)
commitcd9c1fc487bb65016930c42af2acf1c620a427d0 (patch)
treeaf1183eb3ea0ac004d623d2728cd05715aa25908 /abs/core-testing/qt/QtWebKit_Flash.patch
parent3d977abc95064e7f0efdf52ef83adc6ae952419b (diff)
downloadlinhes_pkgbuild-cd9c1fc487bb65016930c42af2acf1c620a427d0.zip
linhes_pkgbuild-cd9c1fc487bb65016930c42af2acf1c620a427d0.tar.gz
linhes_pkgbuild-cd9c1fc487bb65016930c42af2acf1c620a427d0.tar.bz2
qt: added QtWebKit_Flash.patch to fix crash with Flash 10.1 and webkit browsers like mythbrowser. http://trac.webkit.org/changeset/61307
Diffstat (limited to 'abs/core-testing/qt/QtWebKit_Flash.patch')
-rw-r--r--abs/core-testing/qt/QtWebKit_Flash.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/abs/core-testing/qt/QtWebKit_Flash.patch b/abs/core-testing/qt/QtWebKit_Flash.patch
new file mode 100644
index 0000000..102f73c
--- /dev/null
+++ b/abs/core-testing/qt/QtWebKit_Flash.patch
@@ -0,0 +1,48 @@
+--- PluginPackageQt.cpp.orig 2010-06-30 21:29:47.178707288 +0000
++++ PluginPackageQt.cpp 2010-06-30 21:35:40.185441603 +0000
+@@ -36,6 +36,8 @@
+
+ namespace WebCore {
+
++typedef void gtkInitFunc(int *argc, char ***argv);
++
+ bool PluginPackage::fetchInfo()
+ {
+ if (!load())
+@@ -100,7 +102,8 @@
+
+ NP_InitializeFuncPtr NP_Initialize;
+ NPError npErr;
+-
++ gtkInitFunc* gtkInit;
++
+ NP_Initialize = (NP_InitializeFuncPtr)m_module->resolve("NP_Initialize");
+ m_NPP_Shutdown = (NPP_ShutdownProcPtr)m_module->resolve("NP_Shutdown");
+
+@@ -157,6 +160,26 @@
+ m_browserFuncs.enumerate = _NPN_Enumerate;
+ m_browserFuncs.construct = _NPN_Construct;
+
++ // WORKAROUND: Prevent gtk based plugin crashes such as BR# 40567 by
++ // explicitly forcing the initializing of Gtk, i.e. calling gtk_init,
++ // whenver the symbol is present in the plugin library loaded above.
++ // Note that this workaround is based on code from the NSPluginClass ctor
++ // in KDE's kdebase/apps/nsplugins/viewer/nsplugin.cpp file.
++ gtkInit = (gtkInitFunc*)m_module->resolve("gtk_init");
++ if (gtkInit) {
++ // Prevent gtk_init() from replacing the X error handlers, since the Gtk
++ // handlers abort when they receive an X error, thus killing the viewer.
++#ifdef Q_WS_X11
++ int (*old_error_handler)(Display*, XErrorEvent*) = XSetErrorHandler(0);
++ int (*old_io_error_handler)(Display*) = XSetIOErrorHandler(0);
++#endif
++ gtkInit(0, 0);
++#ifdef Q_WS_X11
++ XSetErrorHandler(old_error_handler);
++ XSetIOErrorHandler(old_io_error_handler);
++#endif
++}
++
+ #if defined(XP_UNIX)
+ npErr = NP_Initialize(&m_browserFuncs, &m_pluginFuncs);
+ #else