src/macosx/classes/sun/lwawt/macosx/CToolkitThreadBlockedHandler.java

Print this page

        

*** 23,51 **** * questions. */ package sun.lwawt.macosx; import sun.awt.datatransfer.ToolkitThreadBlockedHandler; ! final class CToolkitThreadBlockedHandler implements ToolkitThreadBlockedHandler { ! private final LWCToolkit toolkit = (LWCToolkit)java.awt.Toolkit.getDefaultToolkit(); ! ! public void lock() { ! } ! ! public void unlock() { ! } ! ! protected boolean isOwned() { ! return false; } public void enter() { ! // Execute the next AppKit event while we are waiting for system to ! // finish our request - this will save us from biting our own tail ! toolkit.executeNextAppKitEvent(); } public void exit() { } } --- 23,57 ---- * questions. */ package sun.lwawt.macosx; + import sun.awt.Mutex; import sun.awt.datatransfer.ToolkitThreadBlockedHandler; ! final class CToolkitThreadBlockedHandler extends Mutex implements ToolkitThreadBlockedHandler { ! private long awtRunLoopMediator = 0; ! private final boolean processEvents; ! ! CToolkitThreadBlockedHandler() { ! super(); ! this.processEvents = true; } public void enter() { ! if (!isOwned()) { ! throw new IllegalMonitorStateException(); ! } ! awtRunLoopMediator = LWCToolkit.createAWTRunLoopMediator(); ! unlock(); ! LWCToolkit.doAWTRunLoop(awtRunLoopMediator, processEvents); ! lock(); } public void exit() { + if (!isOwned()) { + throw new IllegalMonitorStateException(); + } + LWCToolkit.stopAWTRunLoop(awtRunLoopMediator); + awtRunLoopMediator = 0; } }