skin: Command+Q handling on MacOS 13/36513/2
authorGiWoong Kim <giwoong.kim@samsung.com>
Mon, 9 Mar 2015 10:36:13 +0000 (19:36 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Tue, 10 Mar 2015 01:55:47 +0000 (10:55 +0900)
Change-Id: If229ed37e5336602ec84e060fa9ad14d42264382
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorShmSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/menu/GeneralKeyWindow.java
tizen/src/skin/client/src/org/tizen/emulator/skin/menu/SpecialKeyWindow.java

index 774333c..408ff78 100644 (file)
@@ -195,13 +195,15 @@ public class EmulatorShmSkin extends EmulatorSkin {
                        dataFramebuffer.setPixels(0, 0,
                                        sizeFramebuffer, arrayFramebuffer, 0);
 
-                       display.asyncExec(new Runnable() {
-                               @Override
-                               public void run() {
-                                       imageFramebuffer.dispose();
-                                       imageFramebuffer = new Image(display, dataFramebuffer);
-                               }
-                       });
+                       if (display.isDisposed() == false) {
+                               display.asyncExec(new Runnable() {
+                                       @Override
+                                       public void run() {
+                                               imageFramebuffer.dispose();
+                                               imageFramebuffer = new Image(display, dataFramebuffer);
+                                       }
+                               });
+                       }
                }
 
                public void stopRequest() {
index ce19d61..a339ae0 100644 (file)
@@ -221,6 +221,21 @@ public class EmulatorSkin {
                setColorVM(); /* generate a identity color */
 
                this.keyWindowKeeper = new KeyWindowKeeper(this);
+
+               if (SwtUtil.isMacPlatform() == true) {
+                       shell.getDisplay().addListener(SWT.Close, new Listener() {
+                               @Override
+                               public void handleEvent(Event e) {
+                                       if (pressedKeyEventList.size() == 1) {
+                                               KeyEventData data = pressedKeyEventList.get(0);
+                                               if (data.keycode == SWT.COMMAND && data.stateMask == 0) {
+                                                       logger.info("COMMAND terminated!");
+                                                       EmulatorSkinMain.terminateImmediately(-1);
+                                               }
+                                       }
+                               }
+                       });
+               }
        }
 
        public void setCommunicator(SocketCommunicator communicator) {
index 8857421..85266e6 100644 (file)
@@ -380,7 +380,9 @@ public class GeneralKeyWindow extends SkinWindow {
                                logger.info("activate");
 
                                if (SwtUtil.isMacPlatform() == true) {
-                                       parent.moveAbove(shell);
+                                       if (parent.isDisposed() == false) {
+                                               parent.moveAbove(shell);
+                                       }
                                } else {
                                        shell.getDisplay().asyncExec(new Runnable() {
                                                @Override
index ad68a27..c8f7367 100644 (file)
@@ -231,7 +231,9 @@ public class SpecialKeyWindow extends SkinWindow {
                                logger.info("activate");
 
                                if (SwtUtil.isMacPlatform() == true) {
-                                       parent.moveAbove(shell);
+                                       if (parent.isDisposed() == false) {
+                                               parent.moveAbove(shell);
+                                       }
                                } else {
                                        shell.getDisplay().asyncExec(new Runnable() {
                                                @Override