From: GiWoong Kim Date: Thu, 25 Jul 2013 02:39:07 +0000 (+0900) Subject: touch: clean up some source code for the multi-touch X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~878 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=69d08a1de0be087052da616bc174f1351abed9b6;p=sdk%2Femulator%2Fqemu.git touch: clean up some source code for the multi-touch clean up some source code for the multi-touch of maru_shm Change-Id: I36003f2751c7dcc020369fc7c7e9a07b3beb73a9 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 edaa310658..3fc35c55f3 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 @@ -49,6 +49,8 @@ import org.tizen.emulator.skin.log.SkinLogger; public class EmulatorFingers { private static final int MAX_FINGER_CNT = 10; + private static final int FINGER_POINT_SIZE = 32; + private static final int RED_MASK = 0x0000FF00; private static final int GREEN_MASK = 0x00FF0000; private static final int BLUE_MASK = 0xFF000000; @@ -60,7 +62,6 @@ public class EmulatorFingers { private int multiTouchEnable; private int maxTouchPoint; protected int fingerCnt; - private int fingerCntMax; private int grabFingerID = 0; private ArrayList FingerPointList; @@ -79,19 +80,20 @@ public class EmulatorFingers { /** * Constructor */ - EmulatorFingers(EmulatorSkinState currentState, SocketCommunicator communicator) { + EmulatorFingers(int maximum, + EmulatorSkinState currentState, SocketCommunicator communicator) { this.currentState = currentState; this.communicator = communicator; - initMultiTouchState(); + initMultiTouchState(maximum); } protected class FingerPoint { - int id; - int originX; - int originY; - int x; - int y; + private int id; + private int originX; + private int originY; + private int x; + private int y; FingerPoint(int originX, int originY, int x, int y) { this.originX = originX; @@ -110,7 +112,7 @@ public class EmulatorFingers { } public FingerPoint getFingerPointFromSlot(int index) { - if (index < 0 || index > this.fingerCntMax) { + if (index < 0 || index > getMaxTouchPoint()) { return null; } @@ -140,16 +142,16 @@ public class EmulatorFingers { return null; } - public void initMultiTouchState() { - this.multiTouchEnable = 0; - this.fingerCntMax = this.currentState.getMaxTouchPoint(); + public void initMultiTouchState(int maximum) { + multiTouchEnable = 0; - if (this.fingerCntMax > MAX_FINGER_CNT) { - this.fingerCntMax = MAX_FINGER_CNT; - setMaxTouchPoint(this.fingerCntMax); + int fingerCntMax = maximum; + if (fingerCntMax > MAX_FINGER_CNT) { + fingerCntMax = MAX_FINGER_CNT; } + setMaxTouchPoint(fingerCntMax); - logger.info("maxTouchPoint="+ this.fingerCntMax); + logger.info("maxTouchPoint : " + getMaxTouchPoint()); this.fingerCnt = 0; if (this.fingerSlot != null) { @@ -157,11 +159,11 @@ public class EmulatorFingers { } FingerPointList = new ArrayList(); - int i; - for (i = 0; i <= fingerCntMax; i++) { + for (int i = 0; i <= getMaxTouchPoint(); i++) { FingerPointList.add(new FingerPoint(-1, -1, -1, -1)); } - this.fingerPointSize = 32; + + this.fingerPointSize = FINGER_POINT_SIZE; this.fingerPointSizeHalf = this.fingerPointSize / 2; this.fingerPointOutlineColor = new Color(Display.getCurrent(), 0xDD, 0xDD, 0xDD); @@ -175,12 +177,12 @@ public class EmulatorFingers { GC gc = new GC(this.fingerSlotimage); - gc.setForeground(this.fingerPointOutlineColor); - gc.drawOval(0, 0, this.fingerPointSize + 2, this.fingerPointSize + 2); - gc.setBackground(this.fingerPointColor); gc.fillOval(2, 2, this.fingerPointSize, this.fingerPointSize); + gc.setForeground(this.fingerPointOutlineColor); + gc.drawOval(0, 0, this.fingerPointSize + 2, this.fingerPointSize + 2); + gc.dispose(); } @@ -193,18 +195,18 @@ public class EmulatorFingers { } protected int addFingerPoint(int originX, int originY, int x, int y) { - if (this.fingerCnt == this.fingerCntMax) { + if (this.fingerCnt == getMaxTouchPoint()) { logger.info("support multi-touch up to " - + this.fingerCntMax + " fingers"); + + getMaxTouchPoint() + " fingers"); return -1; } this.fingerCnt += 1; - FingerPointList.get(fingerCnt -1).id = this.fingerCnt; - FingerPointList.get(fingerCnt -1).originX = originX; - FingerPointList.get(fingerCnt -1).originY = originY; - FingerPointList.get(fingerCnt -1).x = x; - FingerPointList.get(fingerCnt -1).y = y; + FingerPointList.get(fingerCnt - 1).id = this.fingerCnt; + FingerPointList.get(fingerCnt - 1).originX = originX; + FingerPointList.get(fingerCnt - 1).originY = originY; + FingerPointList.get(fingerCnt - 1).x = x; + FingerPointList.get(fingerCnt - 1).y = y; logger.info(this.fingerCnt + " finger touching"); return this.fingerCnt; @@ -274,13 +276,13 @@ public class EmulatorFingers { this.grabFingerID = finger.id; logger.info(String.format("id %d finger is grabbed\n", this.grabFingerID)); } - else if (this.fingerCnt == this.fingerCntMax) + else if (this.fingerCnt == getMaxTouchPoint()) { /* Let's assume that this event is last finger touch input */ - finger = getFingerPointFromSlot(this.fingerCntMax - 1); + finger = getFingerPointFromSlot(getMaxTouchPoint() - 1); if (finger != null) { mouseEventData = new MouseEventData( MouseButtonType.LEFT.value(), MouseEventType.RELEASE.value(), - originX, originY, finger.x, finger.y, this.fingerCntMax - 1); + originX, originY, finger.x, finger.y, getMaxTouchPoint() - 1); communicator.sendToQEMU( SendCommand.SEND_MOUSE_EVENT, mouseEventData, false); @@ -292,7 +294,7 @@ public class EmulatorFingers { if (finger.id != 0) { mouseEventData = new MouseEventData( MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(), - originX, originY, x, y, this.fingerCntMax - 1); + originX, originY, x, y, getMaxTouchPoint() - 1); communicator.sendToQEMU( SendCommand.SEND_MOUSE_EVENT, mouseEventData, false); } @@ -400,7 +402,7 @@ public class EmulatorFingers { this.grabFingerID = finger.id; logger.info(String.format("id %d finger is grabbed\n", this.grabFingerID)); } - else if (this.fingerCnt == this.fingerCntMax) + else if (this.fingerCnt == getMaxTouchPoint()) { /* Let's assume that this event is last finger touch input */ /* do nothing */ } 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 26f617bff9..b1e59a6d02 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 @@ -49,9 +49,9 @@ public class EmulatorSdlSkin extends EmulatorSkin { /** * Constructor */ - public EmulatorSdlSkin(EmulatorSkinState state, - EmulatorConfig config, SkinInformation skinInfo, boolean isOnTop) { - super(state, config, skinInfo, SWT.EMBEDDED, isOnTop); + public EmulatorSdlSkin(EmulatorConfig config, + SkinInformation skinInfo, boolean isOnTop) { + super(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 b3980d8672..7f58b8ef7a 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 @@ -64,17 +64,13 @@ public class EmulatorShmSkin extends EmulatorSkin { public static final int BLUE_MASK = 0x000000FF; public static final int COLOR_DEPTH = 24; /* no need to Alpha channel */ - private static Logger logger = SkinLogger.getSkinLogger( - EmulatorShmSkin.class).getLogger(); - - private EmulatorFingers finger; - private int multiTouchKey; - private int multiTouchKeySub; - /* touch values */ protected static int pressingX = -1, pressingY = -1; protected static int pressingOriginX = -1, pressingOriginY = -1; + private static Logger logger = SkinLogger.getSkinLogger( + EmulatorShmSkin.class).getLogger(); + static { /* load JNI library file */ try { @@ -102,6 +98,11 @@ public class EmulatorShmSkin extends EmulatorSkin { private PaletteData paletteData; private PollFBThread pollThread; + private int maxTouchPoint; + private EmulatorFingers finger; + private int multiTouchKey; + private int multiTouchKeySub; + class PollFBThread extends Thread { private Display display; private int widthFB; @@ -208,11 +209,14 @@ public class EmulatorShmSkin extends EmulatorSkin { /** * Constructor */ - public EmulatorShmSkin(EmulatorSkinState state, - EmulatorConfig config, SkinInformation skinInfo, boolean isOnTop) { - super(state, config, skinInfo, SWT.NONE, isOnTop); + public EmulatorShmSkin(EmulatorConfig config, + SkinInformation skinInfo, boolean isOnTop) { + super(config, skinInfo, SWT.NONE, isOnTop); this.paletteData = new PaletteData(RED_MASK, GREEN_MASK, BLUE_MASK); + + /* get MaxTouchPoint from startup argument */ + this.maxTouchPoint = config.getArgInt(ArgsConstants.MAX_TOUCHPOINT); } protected void skinFinalize() { @@ -228,7 +232,7 @@ public class EmulatorShmSkin extends EmulatorSkin { public long initLayout() { super.initLayout(); - finger = new EmulatorFingers(currentState, communicator); + finger = new EmulatorFingers(maxTouchPoint, currentState, communicator); if (SwtUtil.isMacPlatform() == true) { multiTouchKey = SWT.COMMAND; } else { 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 32c96fd7de..8f46fe6ce1 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 @@ -197,8 +197,7 @@ public class EmulatorSkin { * @param config : configuration of emulator skin * @param isOnTop : always on top flag */ - protected EmulatorSkin(EmulatorSkinState state, - EmulatorConfig config, SkinInformation skinInfo, + protected EmulatorSkin(EmulatorConfig config, SkinInformation skinInfo, int displayCanvasStyle, boolean isOnTop) { this.config = config; this.skinInfo = skinInfo; @@ -211,17 +210,17 @@ public class EmulatorSkin { int style = SWT.NO_TRIM | SWT.DOUBLE_BUFFERED; this.shell = new Shell(Display.getDefault(), style); - if (isOnTop == true) { SkinUtil.setTopMost(shell, true); } this.displayCanvasStyle = displayCanvasStyle; + /* prepare for VM state management */ + this.currentState = new EmulatorSkinState(); + setColorVM(); /* generate a identity color */ this.keyWindowKeeper = new KeyWindowKeeper(this); - - this.currentState = state; } public void setCommunicator(SocketCommunicator communicator) { 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 a43d25eb90..c3375594f9 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 @@ -75,7 +75,6 @@ public class EmulatorSkinMain { private static Logger logger; - public EmulatorSkinState currentState; private static int useSharedMemory = 0; static { @@ -191,7 +190,6 @@ public class EmulatorSkinMain { Properties skinProperties = loadProperties(skinPropFilePath, true); if (null == skinProperties) { logger.severe("Fail to load skin properties file."); - System.exit(-1); } /* set emulator window config property */ @@ -236,29 +234,12 @@ public class EmulatorSkinMain { SkinPropertiesConstants.WINDOW_ONTOP, Boolean.FALSE.toString()); boolean isOnTop = Boolean.parseBoolean(onTopVal); - /* 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); - /* create a skin */ EmulatorSkin skin = null; if (useSharedMemory == 1) { - skin = new EmulatorShmSkin(currentState, config, skinInfo, isOnTop); + skin = new EmulatorShmSkin(config, skinInfo, isOnTop); } else { /* linux & windows */ - skin = new EmulatorSdlSkin(currentState, config, skinInfo, isOnTop); + skin = new EmulatorSdlSkin(config, skinInfo, isOnTop); } /* create a qemu communicator */ diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinState.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinState.java index 4f55a8caf9..4a83ea612f 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinState.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinState.java @@ -40,7 +40,6 @@ public class EmulatorSkinState { private int currentScale; private short currentRotationId; private int currentAngle; - private int maxTouchPoint; private Rectangle displayBounds; private boolean updateDisplayBounds; @@ -57,7 +56,6 @@ public class EmulatorSkinState { this.currentScale = 50; this.currentRotationId = RotationInfo.PORTRAIT.id(); this.currentAngle = 0; - this.maxTouchPoint = 0; this.displayBounds = null; this.updateDisplayBounds = false; @@ -186,13 +184,4 @@ public class EmulatorSkinState { public synchronized void setCurrentHoveredHWKey(HWKey hwKey) { this.currentHoveredHWKey = hwKey; } - - /* max touch point */ - public synchronized void setMaxTouchPoint(int maxTouchPoint) { - this.maxTouchPoint = maxTouchPoint; - } - - public synchronized int getMaxTouchPoint() { - return maxTouchPoint; - } }