Enhance support for Flash in Konqueror (closes Bug 351)

Patch courtesy of Ilya


git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1224648 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 13 years ago
parent c4a00b7ddb
commit 790391e3a9

@ -1330,6 +1330,9 @@ DCOPRef NSPluginViewer::newClass( TQString plugin )
/****************************************************************************/
bool NSPluginClass::s_initedGTK = false;
typedef void gtkInitFunc(int *argc, char ***argv);
NSPluginClass::NSPluginClass( const TQString &library,
TQObject *parent, const char *name )
@ -1377,6 +1380,23 @@ NSPluginClass::NSPluginClass( const TQString &library,
// initialize plugin
kdDebug(1431) << "Plugin library " << library << " loaded!" << endl;
// see if it uses gtk
if (!s_initedGTK) {
gtkInitFunc* gtkInit = (gtkInitFunc*)_handle->symbol("gtk_init");
if (gtkInit) {
kdDebug(1431) << "Calling gtk_init for the plugin" << endl;
// Prevent gtk_init() from replacing the X error handlers, since the Gtk
// handlers abort when they receive an X error, thus killing the viewer.
int (*old_error_handler)(Display*,XErrorEvent*) = XSetErrorHandler(0);
int (*old_io_error_handler)(Display*) = XSetIOErrorHandler(0);
gtkInit(0, 0);
XSetErrorHandler(old_error_handler);
XSetIOErrorHandler(old_io_error_handler);
s_initedGTK = true;
}
}
_constructed = true;
_error = initialize()!=NPERR_NO_ERROR;
}

@ -315,6 +315,10 @@ private:
TQPtrList<NSPluginInstance> _trash;
TQCString _app;
// If plugins use gtk, we call the gtk_init function for them ---
// but only do it once.
static bool s_initedGTK;
};

Loading…
Cancel
Save