Index: src/main/java/unix/org/apache/harmony/awt/wtk/linux/LinuxEvent.java =================================================================== --- src/main/java/unix/org/apache/harmony/awt/wtk/linux/LinuxEvent.java (revision 524103) +++ src/main/java/unix/org/apache/harmony/awt/wtk/linux/LinuxEvent.java (working copy) @@ -282,6 +282,10 @@ private void processMotionEvent(X11.XMotionEvent event) { LinuxWindow win = (LinuxWindow) factory.getWindowById(windowId); + + if (win == null) { + return; + } localPos = new Point(event.get_x(), event.get_y()); if (!localPos.equals(win.queryPointer())) { @@ -357,6 +361,11 @@ private void processConfigureEvent(X11.XConfigureEvent event) { LinuxWindow win = (LinuxWindow)factory.getWindowById(windowId); + + if (win == null) { + return; + } + boolean child = win.isChild(); boolean isSynthetic = event.get_send_event() != 0; @@ -441,9 +450,11 @@ */ private void processInsetsChange(Insets newInsets) { LinuxWindow win = (LinuxWindow) factory.getWindowById(windowId); + if ((win == null) || win.isChild() || win.isUndecorated()) { return; } + eventId = ID_INSETS_CHANGED; if (newInsets != null) { @@ -482,6 +493,11 @@ private void deriveNewWindowState(int typesCount, CLongPointer types) { LinuxWindow win = (LinuxWindow) factory.getWindowById(windowId); + + if (win == null) { + return; + } + int oldState = win.getState(); int newState = 0; boolean oldAlwaysOnTop = win.alwaysOnTop; @@ -610,17 +626,20 @@ } private long getContentId(long winId) { - if (factory.validWindowId(winId)) { - LinuxWindow win = (LinuxWindow) factory - .getWindowById(winId); + LinuxWindow win = (LinuxWindow) factory.getWindowById(winId); + + if (win != null) { LinuxWindow content = win.getContentWindow(); + if (content != null) { long contentId = content.getId(); + if (factory.validWindowId(contentId)) { return contentId; } } } + return winId; } Index: src/main/java/unix/org/apache/harmony/awt/wtk/linux/LinuxWindow.java =================================================================== --- src/main/java/unix/org/apache/harmony/awt/wtk/linux/LinuxWindow.java (revision 524103) +++ src/main/java/unix/org/apache/harmony/awt/wtk/linux/LinuxWindow.java (working copy) @@ -636,12 +636,17 @@ PointerPointer children = bridge.createPointerPointer(1, true); Int32Pointer count = bridge.createInt32Pointer(1, false); - x11.XQueryTree(display, windowID, root, parent, children, count); - VoidPointer data = children.get(0); - if (data != null) { - x11.XFree(data); + if (x11.XQueryTree(display, windowID, root, parent, children, count) != 0) { + final VoidPointer data = children.get(0); + + if (data != null) { + x11.XFree(data); + } + + return parent.get(0); } - return parent.get(0); + + return 0; } private long getFrameID(long windowId, long rootID) {