From 164df7bf8518526c51e063d333a364934096652b Mon Sep 17 00:00:00 2001 From: Tomeu Date: Tue, 03 Apr 2007 18:17:30 +0000 Subject: Add XSetErrorHandler for not crashing on X errors caused by Gecko plugins. --- (limited to 'lib') diff --git a/lib/src/sugar-browser.cpp b/lib/src/sugar-browser.cpp index b8b69dc..ac0c419 100644 --- a/lib/src/sugar-browser.cpp +++ b/lib/src/sugar-browser.cpp @@ -24,6 +24,7 @@ #include "GeckoContentHandler.h" #include "GeckoDownload.h" +#include #include #include #include @@ -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 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); + old_handler = XSetErrorHandler (error_handler); + gtk_moz_embed_push_startup(); nsCOMPtr prefService; -- cgit v0.9.1