aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/xwin/winmultiwindowwm.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2010-07-23 12:54:07 +0000
committermarha <marha@users.sourceforge.net>2010-07-23 12:54:07 +0000
commit36df22a9b06d00d8e2ca97c274317d61e117c5fc (patch)
tree9b1bbb4af88129f5716202096de15665678d91e5 /xorg-server/hw/xwin/winmultiwindowwm.c
parent63dbb32737306d4c567a0bcbd7153da77cf864b5 (diff)
downloadvcxsrv-36df22a9b06d00d8e2ca97c274317d61e117c5fc.tar.gz
vcxsrv-36df22a9b06d00d8e2ca97c274317d61e117c5fc.tar.bz2
vcxsrv-36df22a9b06d00d8e2ca97c274317d61e117c5fc.zip
Fix a GDI bitmap resource leak of window icons
Internal WM workaround for Java AWT bug
Diffstat (limited to 'xorg-server/hw/xwin/winmultiwindowwm.c')
-rw-r--r--xorg-server/hw/xwin/winmultiwindowwm.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/xorg-server/hw/xwin/winmultiwindowwm.c b/xorg-server/hw/xwin/winmultiwindowwm.c
index ea1ff517d..913f01bac 100644
--- a/xorg-server/hw/xwin/winmultiwindowwm.c
+++ b/xorg-server/hw/xwin/winmultiwindowwm.c
@@ -1023,6 +1023,30 @@ winMultiWindowXMsgProc (void *pArg)
}
}
}
+ else if (event.type == ConfigureNotify)
+ {
+ if (!event.xconfigure.send_event)
+ {
+ /*
+ Java applications using AWT on JRE 1.6.0 break with non-reparenting WMs AWT
+ doesn't explicitly know about (See sun bug #6434227)
+
+ XDecoratedPeer.handleConfigureNotifyEvent() only processes non-synthetic
+ ConfigureNotify events to update window location if it's identified the
+ WM as a non-reparenting WM it knows about (compiz or lookingglass)
+
+ Rather than tell all sorts of lies to get XWM to recognize us as one of
+ those, simply send a synthetic ConfigureNotify for every non-synthetic one
+ */
+ XEvent event_send = event;
+ event_send.xconfigure.send_event = TRUE;
+ event_send.xconfigure.event = event.xconfigure.window;
+ XSendEvent(event.xconfigure.display,
+ event.xconfigure.window,
+ True, StructureNotifyMask,
+ &event_send);
+ }
+ }
else if (event.type == PropertyNotify
&& event.xproperty.atom == atmWmName)
{