diff options
author | Michael Hanson <hansonorders@verison.net> | 2010-07-03 20:18:28 (GMT) |
---|---|---|
committer | Michael Hanson <hansonorders@verison.net> | 2010-07-03 20:18:28 (GMT) |
commit | 5b7e3372145ae9e6f6194264502ef2e87d7671eb (patch) | |
tree | 4af2384e643a501dd51760d3cfb2579e880faaf9 /abs/core-testing/qt/QtWebKit_Flash.patch | |
parent | ab87a13cab11a69b88de8e4dd09a5acedbcd0668 (diff) | |
parent | d2dc8a70eea843372cc99c3cd3da109f739f1451 (diff) | |
download | linhes_pkgbuild-5b7e3372145ae9e6f6194264502ef2e87d7671eb.zip linhes_pkgbuild-5b7e3372145ae9e6f6194264502ef2e87d7671eb.tar.gz linhes_pkgbuild-5b7e3372145ae9e6f6194264502ef2e87d7671eb.tar.bz2 |
Merge branch 'master' of mihanson@knoppmyth.net:LinHES-PKGBUILD
Diffstat (limited to 'abs/core-testing/qt/QtWebKit_Flash.patch')
-rw-r--r-- | abs/core-testing/qt/QtWebKit_Flash.patch | 48 |
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 |