From 2474984ffff9a483fd0cad80b02b9b156bbd9b50 Mon Sep 17 00:00:00 2001 From: GiWoong Kim Date: Fri, 14 Feb 2014 18:35:32 +0900 Subject: [PATCH] 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 --- .../org/tizen/emulator/skin/EmulatorSkin.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) 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"); } } } -- 2.34.1