--- a/src/video/x11/SDL_x11events.c Tue Jul 13 23:14:00 2010 -0700
+++ b/src/video/x11/SDL_x11events.c Wed Jul 14 00:08:46 2010 -0700
@@ -292,51 +292,77 @@
case PropertyNotify:{
#ifdef DEBUG_XEVENTS
+ unsigned char *propdata;
+ int status, real_format;
+ Atom real_type;
+ unsigned long items_read, items_left, i;
+
char *name = XGetAtomName(display, xevent.xproperty.atom);
- printf("PropertyNotify (atom = %s)\n", name ? name : "NULL");
if (name) {
+ printf("PropertyNotify: %s\n", name);
XFree(name);
}
+
+ status = XGetWindowProperty(display, data->xwindow, xevent.xproperty.atom, 0L, 8192L, False, AnyPropertyType, &real_type, &real_format, &items_read, &items_left, &propdata);
+ if (status == Success) {
+ if (real_type == XA_INTEGER) {
+ int *values = (int *)propdata;
+
+ printf("{");
+ for (i = 0; i < items_read; i++) {
+ printf(" %d", values[i]);
+ }
+ printf(" }\n");
+ } else if (real_type == XA_CARDINAL) {
+ if (real_format == 32) {
+ Uint32 *values = (Uint32 *)propdata;
+
+ printf("{");
+ for (i = 0; i < items_read; i++) {
+ printf(" %d", values[i]);
+ }
+ printf(" }\n");
+ } else if (real_format == 16) {
+ Uint16 *values = (Uint16 *)propdata;
+
+ printf("{");
+ for (i = 0; i < items_read; i++) {
+ printf(" %d", values[i]);
+ }
+ printf(" }\n");
+ } else if (real_format == 8) {
+ Uint8 *values = (Uint8 *)propdata;
+
+ printf("{");
+ for (i = 0; i < items_read; i++) {
+ printf(" %d", values[i]);
+ }
+ printf(" }\n");
+ }
+ } else if (real_type == XA_STRING ||
+ real_type == videodata->UTF8_STRING) {
+ printf("{ \"%s\" }\n", propdata);
+ } else if (real_type == XA_ATOM) {
+ Atom *atoms = (Atom *)propdata;
+
+ printf("{");
+ for (i = 0; i < items_read; i++) {
+ char *name = XGetAtomName(display, atoms[i]);
+ if (name) {
+ printf(" %s", name);
+ XFree(name);
+ }
+ }
+ printf(" }\n");
+ } else {
+ char *name = XGetAtomName(display, real_type);
+ printf("Unknown type: %ld (%s)\n", real_type, name ? name : "UNKNOWN");
+ if (name) {
+ XFree(name);
+ }
+ }
+ }
#endif
- if (xevent.xproperty.atom == videodata->_NET_WM_STATE) {
- unsigned char *propdata;
- int status, real_format;
- Atom real_type;
- unsigned long items_read, items_left, i;
-
-#ifdef DEBUG_XEVENTS
- printf("_NET_WM_STATE: {");
-#endif
- status = XGetWindowProperty(display, data->xwindow, videodata->_NET_WM_STATE, 0L, 8192L, False, XA_ATOM, &real_type, &real_format, &items_read, &items_left, &propdata);
- if (status == Success) {
- Atom *atoms = (Atom *)propdata;
- for (i = 0; i < items_read; i++) {
- if (atoms[i] == videodata->_NET_WM_STATE_HIDDEN) {
-#ifdef DEBUG_XEVENTS
- printf(" _NET_WM_STATE_HIDDEN");
-#endif
- }
- if (atoms[i] == videodata->_NET_WM_STATE_MAXIMIZED_HORZ) {
-#ifdef DEBUG_XEVENTS
- printf(" _NET_WM_STATE_MAXIMIZED_HORZ");
-#endif
- }
- if (atoms[i] == videodata->_NET_WM_STATE_MAXIMIZED_VERT) {
-#ifdef DEBUG_XEVENTS
- printf(" _NET_WM_STATE_MAXIMIZED_VERT");
-#endif
- }
- if (atoms[i] == videodata->_NET_WM_STATE_FULLSCREEN) {
-#ifdef DEBUG_XEVENTS
- printf(" _NET_WM_STATE_FULLSCREEN");
-#endif
- }
- }
- }
-#ifdef DEBUG_XEVENTS
- printf(" }\n");
-#endif
- }
}
break;
@@ -355,8 +381,7 @@
req->requestor, req->target);
#endif
- sevent.xselection.type = SelectionNotify;
- sevent.xselection.display = req->display;
+ sevent.xany.type = SelectionNotify;
sevent.xselection.selection = req->selection;
sevent.xselection.target = None;
sevent.xselection.property = None;
--- a/src/video/x11/SDL_x11window.c Tue Jul 13 23:14:00 2010 -0700
+++ b/src/video/x11/SDL_x11window.c Wed Jul 14 00:08:46 2010 -0700
@@ -682,8 +682,6 @@
XEvent e;
e.xany.type = ClientMessage;
- e.xclient.display = data->display;
- e.xclient.window = w;
e.xclient.message_type = _NET_WM_STATE;
e.xclient.format = 32;
e.xclient.data.l[0] = _NET_WM_STATE_ADD;
@@ -955,8 +953,6 @@
XEvent e;
e.xany.type = ClientMessage;
- e.xclient.display = display;
- e.xclient.window = data->xwindow;
e.xclient.message_type = _NET_WM_STATE;
e.xclient.format = 32;
e.xclient.data.l[0] =