]> Dogcows Code - chaz/openbox/blobdiff - src/XDisplay.cc
new i18n class using overloaded operator() instead of getMessage()
[chaz/openbox] / src / XDisplay.cc
index 8de6f138f4d9fa517d536248d008373ff7625180..1dfd55d04341d4aae3249ba3f7dbb99af7bf2cce 100644 (file)
 #include <algorithm>
 
 using std::cerr;
+using std::endl;
 
+std::string XDisplay::_app_name;
+Window      XDisplay::_last_bad_window = None;
+  
+/*
+ * X error handler to handle all X errors while the application is
+ * running.
+ */
 int XDisplay::XErrorHandler(Display *d, XErrorEvent *e) {
-  d=d;e=e;
-  return 0;
+#ifdef DEBUG
+  char errtxt[128];
+  XGetErrorText(d, e->error_code, errtxt, sizeof(errtxt)/sizeof(char));
+  cerr << _app_name.c_str() << ": X error: " << 
+    errtxt << "(" << e->error_code << ") opcodes " <<
+    e->request_code << "/" << e->minor_code << endl;
+  cerr.flags(std::ios_base::hex);
+  cerr << "  resource 0x" << e->resourceid << endl;
+  cerr.flags(std::ios_base::dec);
+#endif
+  
+  if (e->error_code == BadWindow)
+    _last_bad_window = e->resourceid;
+  
+  return False;
 }
 
 
-XDisplay::XDisplay(const char *dpyname) {
+XDisplay::XDisplay(const std::string &application_name, const char *dpyname) {
+  _app_name = application_name;
   _grabs = 0;
   _hasshape = false;
   
This page took 0.019897 seconds and 4 git commands to generate.