From: GiWoong Kim Date: Fri, 14 Feb 2014 09:35:32 +0000 (+0900) Subject: communication: block the Alt+F4 event for a while X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~490 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2474984ffff9a483fd0cad80b02b9b156bbd9b50;p=sdk%2Femulator%2Fqemu.git communication: block the Alt+F4 event for a while When short cut(Alt+F4) key repeating, block the event for a while Change-Id: I781b5be4b40600c95f6ece2324c20bb40f560994 Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java index 404d9477bb..b5ec0c1785 100755 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java @@ -37,6 +37,9 @@ import java.util.LinkedList; import java.util.List; import java.util.Map.Entry; import java.util.Random; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Level; import java.util.logging.Logger; @@ -164,6 +167,7 @@ public class EmulatorSkin { public ScreenShotDialog screenShotDialog; public SocketCommunicator communicator; + private AtomicBoolean demanderFlag = new AtomicBoolean(false); private ShellListener shellListener; private MenuDetectListener shellMenuDetectListener; @@ -469,14 +473,32 @@ public class EmulatorSkin { skinFinalize(); } else { - /* - * Skin have to be alive until receiving shutdown request - * from qemu - */ + /* Skin have to be alive until receiving shutdown request from qemu */ event.doit = false; - if (null != communicator) { - communicator.sendToQEMU(SendCommand.SEND_CLOSE_REQ, null, false); + if (pressedKeyEventList.isEmpty() == true + && demanderFlag.compareAndSet(false, true)) { + if (null != communicator) { + communicator.sendToQEMU( + SendCommand.SEND_CLOSE_REQ, null, false); + } + + /* block for a while */ + try { + /* In Close emulation, + * 1000ms parameter was used for sleep function. + * So, we need a bigger value than that.*/ + new Timer().schedule(new TimerTask() { + @Override + public void run() { + demanderFlag.set(false); + } + }, 1500); + } catch (IllegalArgumentException e) { + logger.log(Level.SEVERE, e.getMessage(), e); + } + } else { + logger.info("skip close request"); } } }