diff -u qt4-x11-4.6.2/debian/changelog qt4-x11-4.6.2/debian/changelog --- qt4-x11-4.6.2/debian/changelog +++ qt4-x11-4.6.2/debian/changelog @@ -1,3 +1,11 @@ +qt4-x11 (4:4.6.2-0ubuntu5.1) lucid-proposed; urgency=low + + * Add kubuntu_13_qtwebkit_initialise_gtk.diff prevent crashes due + to Gtk based plugin such as flashplugin 10.1 by explicitly forcing + the initializing of Gtk LP: #634774 + + -- Apoorv Parle Fri, 10 Sep 2010 14:32:24 +0530 + qt4-x11 (4:4.6.2-0ubuntu5) lucid; urgency=low [ Alessandro Ghersi ] diff -u qt4-x11-4.6.2/debian/patches/series qt4-x11-4.6.2/debian/patches/series --- qt4-x11-4.6.2/debian/patches/series +++ qt4-x11-4.6.2/debian/patches/series @@ -53,0 +54 @@ +kubuntu_13_qtwebkit_initialise_gtk.diff only in patch2: unchanged: --- qt4-x11-4.6.2.orig/debian/patches/kubuntu_13_qtwebkit_initialise_gtk.diff +++ qt4-x11-4.6.2/debian/patches/kubuntu_13_qtwebkit_initialise_gtk.diff @@ -0,0 +1,48 @@ +--- qt4-x11-4.6.2.orig/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp ++++ qt4-x11-4.6.2/src/3rdparty/webkit/WebCore/plugins/qt/PluginPackageQt.cpp +@@ -35,6 +35,8 @@ + + namespace WebCore { + ++typedef void gtkInitFunc(int *argc, char ***argv); ++ + bool PluginPackage::fetchInfo() + { + if (!load()) +@@ -109,7 +111,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"); + +@@ -126,6 +129,26 @@ + // It does so in NP_Initialize with a null instance, therefore it is done this way: + m_browserFuncs.getvalue = staticPluginQuirkRequiresGtkToolKit_NPN_GetValue; + } ++ ++ // 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);