|
@@ -7,13 +7,19 @@ static Bool isDestroyNotify( Display* dpy, XEvent* ev, XPointer win ) {
|
7
|
7
|
}
|
8
|
8
|
|
9
|
9
|
int slop::XEngineErrorHandler( Display* dpy, XErrorEvent* event ) {
|
10
|
|
- // Ignore XGrabKeyboard BadAccess errors
|
|
10
|
+ // Ignore XGrabKeyboard BadAccess errors, we can work without it.
|
11
|
11
|
// 31 = XGrabKeyboard's request code
|
12
|
12
|
if ( event->request_code == 31 && event->error_code == BadAccess ) {
|
13
|
13
|
return 0;
|
14
|
14
|
}
|
15
|
|
- // Otherwise call the default error handler
|
16
|
|
- //return slop::OldXErrorHandler( dpy, event );
|
|
15
|
+ // Everything else should be fatal as I don't like undefined behavior.
|
|
16
|
+ char buffer[1024];
|
|
17
|
+ XGetErrorText( dpy, event->error_code, buffer, 1024 );
|
|
18
|
+ fprintf( stderr,
|
|
19
|
+ "_X Error of failed request: %s\n_ Major opcode of failed request: % 3d\n_ Serial number of failed request:% 5d\n_ Current serial number in output stream:?????\n",
|
|
20
|
+ buffer,
|
|
21
|
+ event->request_code,
|
|
22
|
+ event->serial );
|
17
|
23
|
exit(1);
|
18
|
24
|
}
|
19
|
25
|
|
|
@@ -303,8 +309,9 @@ slop::Rectangle::Rectangle( int x, int y, int width, int height, int border, int
|
303
|
309
|
rect.height = m_height;
|
304
|
310
|
|
305
|
311
|
XClassHint classhints;
|
306
|
|
- classhints.res_name = "slop";
|
307
|
|
- classhints.res_class = "slop";
|
|
312
|
+ char name[] = "slop";
|
|
313
|
+ classhints.res_name = name;
|
|
314
|
+ classhints.res_class = name;
|
308
|
315
|
XSetClassHint( xengine->m_display, m_window, &classhints );
|
309
|
316
|
|
310
|
317
|
XShapeCombineRectangles( xengine->m_display, m_window, ShapeBounding, 0, 0, &rect, 1, ShapeSubtract, 0);
|