Add XSetErrorHandler for not crashing on X errors caused by Gecko plugins.
This commit is contained in:
parent
ba08492778
commit
164df7bf85
@ -24,6 +24,7 @@
|
|||||||
#include "GeckoContentHandler.h"
|
#include "GeckoContentHandler.h"
|
||||||
#include "GeckoDownload.h"
|
#include "GeckoDownload.h"
|
||||||
|
|
||||||
|
#include <gdk/gdkx.h>
|
||||||
#include <gtkmozembed_internal.h>
|
#include <gtkmozembed_internal.h>
|
||||||
#include <nsCOMPtr.h>
|
#include <nsCOMPtr.h>
|
||||||
#include <nsIPrefService.h>
|
#include <nsIPrefService.h>
|
||||||
@ -89,6 +90,34 @@ static const nsModuleComponentInfo sSugarComponents[] = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int (*old_handler) (Display *, XErrorEvent *);
|
||||||
|
|
||||||
|
static int
|
||||||
|
error_handler (Display *d, XErrorEvent *e)
|
||||||
|
{
|
||||||
|
gchar buf[64];
|
||||||
|
gchar *msg;
|
||||||
|
|
||||||
|
XGetErrorText (d, e->error_code, buf, 63);
|
||||||
|
|
||||||
|
msg =
|
||||||
|
g_strdup_printf ("The program '%s' received an X Window System error.\n"
|
||||||
|
"This probably reflects a bug in the program.\n"
|
||||||
|
"The error was '%s'.\n"
|
||||||
|
" (Details: serial %ld error_code %d request_code %d minor_code %d)\n",
|
||||||
|
g_get_prgname (),
|
||||||
|
buf,
|
||||||
|
e->serial,
|
||||||
|
e->error_code,
|
||||||
|
e->request_code,
|
||||||
|
e->minor_code);
|
||||||
|
|
||||||
|
g_error ("%s", msg);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
/*return (*old_handler)(d, e);*/
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
setup_plugin_path ()
|
setup_plugin_path ()
|
||||||
{
|
{
|
||||||
@ -113,6 +142,8 @@ sugar_browser_startup(const char *profile_path, const char *profile_name)
|
|||||||
|
|
||||||
gtk_moz_embed_set_profile_path(profile_path, profile_name);
|
gtk_moz_embed_set_profile_path(profile_path, profile_name);
|
||||||
|
|
||||||
|
old_handler = XSetErrorHandler (error_handler);
|
||||||
|
|
||||||
gtk_moz_embed_push_startup();
|
gtk_moz_embed_push_startup();
|
||||||
|
|
||||||
nsCOMPtr<nsIPrefService> prefService;
|
nsCOMPtr<nsIPrefService> prefService;
|
||||||
|
Loading…
Reference in New Issue
Block a user