From: GiWoong Kim Date: Fri, 5 Jul 2013 05:17:06 +0000 (+0900) Subject: touch: EmulatorFingers refactoring X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~920 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=99fd9f37bffcfcdcc3c096e5dfa00f026e32be08;p=sdk%2Femulator%2Fqemu.git touch: EmulatorFingers refactoring EmulatorFingers refactoring for maru_shm Change-Id: I006f2b6c87b4782d1213cd5976152dbcf1d719f1 Signed-off-by: GiWoong Kim --- diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorFingers.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorFingers.java index 98517274bb..edaa310658 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorFingers.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorFingers.java @@ -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 @@ -61,30 +61,31 @@ public class EmulatorFingers { private int maxTouchPoint; protected int fingerCnt; private int fingerCntMax; + + private int grabFingerID = 0; + private ArrayList 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 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; } diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSdlSkin.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSdlSkin.java index 632b55b49d..26f617bff9 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSdlSkin.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSdlSkin.java @@ -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 @@ -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() { diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorShmSkin.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorShmSkin.java index 33c896fc95..dcbdd84b91 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorShmSkin.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorShmSkin.java @@ -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 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 7250626ad0..e4018d8de4 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java @@ -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() { diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java index 57369176a0..997d5db299 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java @@ -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();