src/solaris/classes/sun/awt/X11/XlibWrapper.java

Print this page

        

@@ -597,12 +597,10 @@
         } catch (Exception e) {
             dataModel = 32;
         }
 
         isBuildInternal = getBuildInternal();
-
-//      System.loadLibrary("mawt");
     }
 
     static int getDataModel() {
         return dataModel;
     }

@@ -646,6 +644,41 @@
         String javaVersion = XToolkit.getSystemProperty("java.version");
         return javaVersion != null && javaVersion.contains("internal");
     }
 
     static native void PrintXErrorEvent(long display, long event_ptr);
+
+    /**
+     * The interface to be implemented by a predicate object used with the
+     * CheckIfEvent() method.
+     */
+    public static interface CheckEventPredicate {
+
+        /**
+         * Returns true if the event matches some criteria, false otherwise.
+         */
+        boolean doesMatch(XEvent event);
+    }
+
+    /**
+     * Invokes the XCheckIfEvent().
+     * The returned event (if any) MUST BE disposed by the caller.
+     *
+     * @return the matched event or null if no match found.
+     */
+    public static XEvent CheckIfEvent(long display, CheckEventPredicate predicate) {
+        XEvent ev = new XEvent();
+
+        if (CheckIfEvent(display, ev, ev.pData, predicate)) {
+            return ev;
+        } else {
+            ev.dispose();
+            return null;
+        }
+    }
+
+    /*
+     * NOTE: The passed event_return MUST be equal to the event.pData.
+     */
+    private static native boolean CheckIfEvent(long display, XEvent event,
+            long event_return, CheckEventPredicate predicate);
 }