touch: EmulatorFingers refactoring
authorGiWoong Kim <giwoong.kim@samsung.com>
Fri, 5 Jul 2013 05:17:06 +0000 (14:17 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Fri, 5 Jul 2013 05:48:35 +0000 (14:48 +0900)
EmulatorFingers refactoring for maru_shm

Change-Id: I006f2b6c87b4782d1213cd5976152dbcf1d719f1
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorFingers.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSdlSkin.java
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/EmulatorSkinMain.java

index 98517274bbd4731d9d97810ea1acee9647155eec..edaa31065855016fa7109cef3de747654b0dcf7f 100644 (file)
@@ -1,7 +1,7 @@
 /**
+ * Multi-touch
  *
- *
- * Copyright (C) 2011 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
  *
  * Contact:
  * Munkyu Im <munkyu.im@samsung.com>
@@ -61,30 +61,31 @@ public class EmulatorFingers {
        private int maxTouchPoint;
        protected int fingerCnt;
        private int fingerCntMax;
+
+       private int grabFingerID = 0;
+       private ArrayList<FingerPoint> FingerPointList;
+       protected FingerPoint fingerSlot;
+
        protected int fingerPointSize;
        protected int fingerPointSizeHalf;
        private Color fingerPointColor;
        private Color fingerPointOutlineColor;
-       private int grabFingerID = 0;
        protected Image fingerSlotimage;
        protected ImageData imageData;
-       protected FingerPoint fingerSlot;
-       protected SocketCommunicator communicator;
-       protected EmulatorSkin emulatorSkin;
-       ArrayList<FingerPoint> FingerPointList;
 
-       EmulatorSkinState currentState;
+       protected SocketCommunicator communicator;
+       private EmulatorSkinState currentState;
 
-       EmulatorFingers(EmulatorSkinState currentState) {
+       /**
+        *  Constructor
+        */
+       EmulatorFingers(EmulatorSkinState currentState, SocketCommunicator communicator) {
                this.currentState = currentState;
+               this.communicator = communicator;
+
                initMultiTouchState();
        }
 
-       protected void setCommunicator(SocketCommunicator communicator) {
-                this.communicator = communicator;
-        }
-
-       //private fingerPointSurface;
        protected class FingerPoint {
                int id;
                int originX;
@@ -139,10 +140,6 @@ public class EmulatorFingers {
                return null;
        }
 
-       protected void setEmulatorSkin(EmulatorSkin emulatorSkin) {
-               this.emulatorSkin = emulatorSkin;
-       }
-
        public void initMultiTouchState() {
                this.multiTouchEnable = 0;
                this.fingerCntMax = this.currentState.getMaxTouchPoint();
@@ -542,7 +539,7 @@ public class EmulatorFingers {
        }
 
        public void setMaxTouchPoint(int cnt) {
-               if (cnt <=0) {
+               if (cnt <= 0) {
                        cnt = 1;
                }
 
index 632b55b49d02ea6cd8111ec009607318ea97a454..26f617bff99f725da1764155d4315a08acf40bc6 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * Emulator Skin Process
  *
- * Copyright (C) 2011 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
  *
  * Contact:
  * GiWoong Kim <giwoong.kim@samsung.com>
@@ -49,9 +49,9 @@ public class EmulatorSdlSkin extends EmulatorSkin {
        /**
         *  Constructor
         */
-       public EmulatorSdlSkin(EmulatorSkinState state, EmulatorFingers finger,
+       public EmulatorSdlSkin(EmulatorSkinState state,
                        EmulatorConfig config, SkinInformation skinInfo, boolean isOnTop) {
-               super(state, finger, config, skinInfo, SWT.EMBEDDED, isOnTop);
+               super(state, config, skinInfo, SWT.EMBEDDED, isOnTop);
        }
 
        public long initLayout() {
index 33c896fc952799866b2b8ad41d068ba26ccf895e..dcbdd84b9170275d6a56c38956988376ff682568 100644 (file)
@@ -67,6 +67,10 @@ public class EmulatorShmSkin extends EmulatorSkin {
        private static Logger logger = SkinLogger.getSkinLogger(
                        EmulatorShmSkin.class).getLogger();
 
+       private EmulatorFingers finger;
+       private int multiTouchKey;
+       private int multiTouchKeySub;
+
        static {
                /* load JNI library file */
                try {
@@ -200,18 +204,19 @@ public class EmulatorShmSkin extends EmulatorSkin {
        /**
         *  Constructor
         */
-       public EmulatorShmSkin(EmulatorSkinState state, EmulatorFingers finger,
+       public EmulatorShmSkin(EmulatorSkinState state,
                        EmulatorConfig config, SkinInformation skinInfo, boolean isOnTop) {
-               super(state, finger, config, skinInfo, SWT.NONE, isOnTop);
+               super(state, config, skinInfo, SWT.NONE, isOnTop);
+
                this.paletteData = new PaletteData(RED_MASK, GREEN_MASK, BLUE_MASK);
        }
 
        protected void skinFinalize() {
                pollThread.stopRequest();
 
-               super.finger.setMultiTouchEnable(0);
-               super.finger.clearFingerSlot();
-               super.finger.cleanup_multiTouchState();
+               finger.setMultiTouchEnable(0);
+               finger.clearFingerSlot();
+               finger.cleanup_multiTouchState();
 
                super.skinFinalize();
        }
@@ -219,6 +224,14 @@ public class EmulatorShmSkin extends EmulatorSkin {
        public long initLayout() {
                super.initLayout();
 
+               finger = new EmulatorFingers(currentState, communicator);
+               if (SwtUtil.isMacPlatform() == true) {
+                       multiTouchKey = SWT.COMMAND;
+               } else {
+                       multiTouchKey = SWT.CTRL;
+               }
+               multiTouchKeySub = SWT.SHIFT;
+
                /* base + 1 = sdb port */
                /* base + 2 = shared memory key */
                int shmkey = config.getArgInt(ArgsConstants.NET_BASE_PORT) + 2;
@@ -467,10 +480,10 @@ public class EmulatorShmSkin extends EmulatorSkin {
        @Override
        protected void keyReleasedDelivery(int keyCode, int stateMask, int keyLocation) {
                /* check multi-touch */
-               if (keyCode == SWT.SHIFT || keyCode == SWT.COMMAND) {
+               if (keyCode == multiTouchKeySub || keyCode == multiTouchKey) {
                        int tempStateMask = stateMask & ~SWT.BUTTON1;
 
-                       if (tempStateMask == (SWT.SHIFT | SWT.COMMAND)) {
+                       if (tempStateMask == (multiTouchKeySub | multiTouchKey)) {
                                finger.setMultiTouchEnable(1);
 
                                logger.info("enable multi-touch = mode1");
@@ -496,8 +509,8 @@ public class EmulatorShmSkin extends EmulatorSkin {
 
                int tempStateMask = stateMask & ~SWT.BUTTON1;
 
-               if ((keyCode == SWT.SHIFT && (tempStateMask & SWT.COMMAND) != 0) ||
-                               (keyCode == SWT.COMMAND && (tempStateMask & SWT.SHIFT) != 0))
+               if ((keyCode == multiTouchKeySub && (tempStateMask & multiTouchKey) != 0) ||
+                               (keyCode == multiTouchKey && (tempStateMask & multiTouchKeySub) != 0))
                {
                        finger.setMultiTouchEnable(2);
 
@@ -513,7 +526,7 @@ public class EmulatorShmSkin extends EmulatorSkin {
                        }
 
                        logger.info("enable multi-touch = mode2");
-               } else if (keyCode == SWT.SHIFT || keyCode == SWT.COMMAND) {
+               } else if (keyCode == multiTouchKeySub || keyCode == multiTouchKey) {
                        finger.setMultiTouchEnable(1);
 
                        /* add a finger before start the multi-touch processing
index 7250626ad0cec0e33bb58f1f19e9d1cbfdf85ffe..e4018d8de4c9d90a21b63de58afa1f32962d9a2b 100644 (file)
@@ -156,7 +156,6 @@ public class EmulatorSkin {
                        SkinLogger.getSkinLogger(EmulatorSkin.class).getLogger();
 
        protected EmulatorConfig config;
-       protected EmulatorFingers finger;
        protected Shell shell;
        protected ImageRegistry imageRegistry;
        protected Canvas lcdCanvas;
@@ -208,10 +207,9 @@ public class EmulatorSkin {
         * @param config : configuration of emulator skin
         * @param isOnTop : always on top flag
        */
-       protected EmulatorSkin(EmulatorSkinState state, EmulatorFingers finger,
+       protected EmulatorSkin(EmulatorSkinState state,
                        EmulatorConfig config, SkinInformation skinInfo,
                        int displayCanvasStyle, boolean isOnTop) {
-               this.finger = finger;
                this.config = config;
                this.skinInfo = skinInfo;
 
@@ -242,7 +240,6 @@ public class EmulatorSkin {
 
        public void setCommunicator(SocketCommunicator communicator) {
                this.communicator = communicator;
-               this.finger.setCommunicator(this.communicator);
        }
 
        private void setColorVM() {
index 57369176a0ea5cfb0e9ee86af88440c64608d766..997d5db299c9cd32e6fcd0c36391994ba7aef648 100644 (file)
@@ -146,19 +146,6 @@ public class EmulatorSkinMain {
                        String skinPath = ImageRegistry.getSkinPath(
                                        (String) argsMap.get(ArgsConstants.SKIN_PATH));
 
-                       /* get maxtouchpoint from startup argument */
-                       int maxtouchpoint;
-                       if(argsMap.containsKey(ArgsConstants.MAX_TOUCHPOINT)) {
-                               maxtouchpoint = Integer.parseInt(
-                                               argsMap.get(ArgsConstants.MAX_TOUCHPOINT));
-                               logger.info("maxtouchpoint info:" + maxtouchpoint);
-                       }
-                       else {
-                               maxtouchpoint = 1;
-                               logger.info(ArgsConstants.MAX_TOUCHPOINT +
-                                               " does not exist set maxtouchpoint info to " + maxtouchpoint);
-                       }
-
                        /* set skin information */
                        String skinInfoFilePath = skinPath + File.separator + SKIN_INFO_FILE_NAME;
                        Properties skinInfoProperties = loadProperties(skinInfoFilePath, false);
@@ -261,23 +248,35 @@ public class EmulatorSkinMain {
                                        SkinPropertiesConstants.WINDOW_ONTOP, Boolean.FALSE.toString());
                        boolean isOnTop = Boolean.parseBoolean(onTopVal);
 
-                       /* create a skin */
-                       EmulatorSkin skin;
+                       /* prepare for VM state management */
                        EmulatorSkinState currentState = new EmulatorSkinState();
+
+                       /* get MaxTouchPoint from startup argument */
+                       int maxtouchpoint = 0;
+                       if (argsMap.containsKey(ArgsConstants.MAX_TOUCHPOINT)) {
+                               maxtouchpoint = Integer.parseInt(
+                                               argsMap.get(ArgsConstants.MAX_TOUCHPOINT));
+                               logger.info("maximum touch point : " + maxtouchpoint);
+                       } else {
+                               maxtouchpoint = 1;
+                               logger.info(ArgsConstants.MAX_TOUCHPOINT +
+                                               " does not exist set maxtouchpoint info to " + maxtouchpoint);
+                       }
+
                        currentState.setMaxTouchPoint(maxtouchpoint);
-                       EmulatorFingers finger = new EmulatorFingers(currentState);
 
+                       /* create a skin */
+                       EmulatorSkin skin = null;
                        if (useSharedMemory == 1) {
-                               skin = new EmulatorShmSkin(currentState, finger, config, skinInfo, isOnTop);
-                       } else { // linux & windows
-                               skin = new EmulatorSdlSkin(currentState, finger, config, skinInfo, isOnTop);
+                               skin = new EmulatorShmSkin(currentState, config, skinInfo, isOnTop);
+                       } else { /* linux & windows */
+                               skin = new EmulatorSdlSkin(currentState, config, skinInfo, isOnTop);
                        }
 
                        /* create a qemu communicator */
                        int uid = config.getArgInt(ArgsConstants.UID);
                        communicator = new SocketCommunicator(config, uid, skin);
                        skin.setCommunicator(communicator);
-                       finger.setEmulatorSkin(skin);
 
                        /* initialize a skin layout */
                        long windowHandleId = skin.initLayout();