communication: give priority to the sendToQemu
authorgiwoong.kim <giwoong.kim@samsung.com>
Fri, 12 Apr 2013 09:08:54 +0000 (18:08 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Fri, 12 Apr 2013 09:08:54 +0000 (18:08 +0900)
give priority to the sendToQemu function for skin

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/EmulatorShmSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/comm/ICommunicator.java
tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java
tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java
tizen/src/skin/client/src/org/tizen/emulator/skin/dialog/DetailInfoDialog.java
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/GeneralPurposeSkinComposer.java
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/PhoneShapeSkinComposer.java
tizen/src/skin/client/src/org/tizen/emulator/skin/screenshot/SdlScreenShotWindow.java
tizen/src/skin/maruskin_server.c

index ccc6c90837656b668b701778447c9fa4be192ea7..98517274bbd4731d9d97810ea1acee9647155eec 100644 (file)
@@ -251,7 +251,8 @@ public class EmulatorFingers {
                                                mouseEventData = new MouseEventData(
                                                                MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
                                                                originX, originY, x, y, grabFingerID - 1);
-                                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                                               communicator.sendToQEMU(
+                                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                                        } 
                                }
 
@@ -267,7 +268,8 @@ public class EmulatorFingers {
                                mouseEventData = new MouseEventData(
                                                MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
                                                originX, originY, x, y, 0);
-                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                               communicator.sendToQEMU(
+                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                        }
                        else if ((finger = getFingerPointSearch(x, y)) != null)
                        { /* check the position of previous touch event */
@@ -282,7 +284,8 @@ public class EmulatorFingers {
                                mouseEventData = new MouseEventData(
                                                        MouseButtonType.LEFT.value(), MouseEventType.RELEASE.value(),
                                                        originX, originY, finger.x, finger.y, this.fingerCntMax - 1);
-                                       communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                                       communicator.sendToQEMU(
+                                                       SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
 
                                        finger.originX = originX;
                                        finger.originY = originY;
@@ -293,7 +296,8 @@ public class EmulatorFingers {
                                                mouseEventData = new MouseEventData(
                                                                MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
                                                                originX, originY, x, y, this.fingerCntMax - 1);
-                                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                                               communicator.sendToQEMU(
+                                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                                        }
                                }
                        }
@@ -303,7 +307,8 @@ public class EmulatorFingers {
                                mouseEventData = new MouseEventData(
                                                MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
                                                originX, originY, x, y, this.fingerCnt - 1);
-                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                               communicator.sendToQEMU(
+                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                        }
                } else if (touchType == MouseEventType.RELEASE.value()) { /* released */
                        logger.info("mouse up for multi touch");
@@ -360,7 +365,8 @@ public class EmulatorFingers {
                                                                mouseEventData = new MouseEventData(
                                                                                MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
                                                                                originX, originY, finger.x, finger.y, i);
-                                                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                                                               communicator.sendToQEMU(
+                                                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
 
                                                                /* logger.info(String.format(
                                                                                "id %d finger multi-touch dragging = (%d, %d)",
@@ -388,7 +394,8 @@ public class EmulatorFingers {
                                mouseEventData = new MouseEventData(
                                                MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
                                                originX, originY, x, y, 0);
-                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                               communicator.sendToQEMU(
+                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                        }
                        else if ((finger = this.getFingerPointSearch(x, y)) != null)
                        { /* check the position of previous touch event */
@@ -406,7 +413,8 @@ public class EmulatorFingers {
                                mouseEventData = new MouseEventData(
                                                MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
                                                originX, originY, x, y, this.fingerCnt - 1);
-                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                               communicator.sendToQEMU(
+                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                        }
                } else if (touchType == MouseEventType.RELEASE.value()) { /* released */
                        logger.info("mouse up for multi touch");
@@ -506,7 +514,8 @@ public class EmulatorFingers {
                                MouseEventData mouseEventData = new MouseEventData(
                                                MouseButtonType.LEFT.value(), MouseEventType.RELEASE.value(),
                                                0, 0, finger.x, finger.y, finger.id - 1);
-                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                               communicator.sendToQEMU(
+                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                        }
 
                        finger.id = 0;
index 62a866636d8c1159555e7e10cb564e163695d095..c88c77d6c2c67537c1a4b856bd07170cded3a037 100644 (file)
@@ -69,9 +69,10 @@ public class EmulatorShmSkin extends EmulatorSkin {
                private Display display;
                private int widthFB;
                private int heightFB;
+               private int sizeFramebuffer;
                private int[] arrayFramebuffer;
-               private ImageData imageData;
-               private Image framebuffer;
+               private ImageData dataFramebuffer;
+               private Image imageFramebuffer;
 
                private volatile boolean stopRequest;
                private Runnable runnable;
@@ -81,9 +82,13 @@ public class EmulatorShmSkin extends EmulatorSkin {
                        this.display = Display.getDefault();
                        this.widthFB = widthFB;
                        this.heightFB = heightFB;
-                       this.arrayFramebuffer = new int[widthFB * heightFB];
-                       this.imageData = new ImageData(widthFB, heightFB, COLOR_DEPTH, paletteData);
-                       this.framebuffer = new Image(Display.getDefault(), imageData);
+                       this.sizeFramebuffer = widthFB * heightFB;
+                       this.arrayFramebuffer = new int[sizeFramebuffer];
+
+                       this.dataFramebuffer =
+                                       new ImageData(widthFB, heightFB, COLOR_DEPTH, paletteData);
+                       this.imageFramebuffer =
+                                       new Image(Display.getDefault(), dataFramebuffer);
 
                        setDaemon(true);
                        setWaitIntervalTime(30);
@@ -112,7 +117,6 @@ public class EmulatorShmSkin extends EmulatorSkin {
                        stopRequest = false;
 
                        Image temp;
-                       int sizeFramebuffer = widthFB * heightFB;
 
                        while (!stopRequest) {
                                synchronized(this) {
@@ -127,10 +131,10 @@ public class EmulatorShmSkin extends EmulatorSkin {
                                int result = getPixels(arrayFramebuffer); /* from shared memory */
                                //logger.info("getPixels native function returned " + result);
 
-                               imageData.setPixels(0, 0, sizeFramebuffer, arrayFramebuffer, 0);
+                               dataFramebuffer.setPixels(0, 0, sizeFramebuffer, arrayFramebuffer, 0);
 
-                               temp = framebuffer;
-                               framebuffer = new Image(display, imageData);
+                               temp = imageFramebuffer;
+                               imageFramebuffer = new Image(display, dataFramebuffer);
                                temp.dispose();
 
                                if (display.isDisposed() == false) {
@@ -210,7 +214,7 @@ public class EmulatorShmSkin extends EmulatorSkin {
                                }
 
                                if (currentState.getCurrentAngle() == 0) { /* portrait */
-                                       e.gc.drawImage(pollThread.framebuffer,
+                                       e.gc.drawImage(pollThread.imageFramebuffer,
                                                        0, 0, pollThread.widthFB, pollThread.heightFB,
                                                        0, 0, x, y);
 
@@ -256,7 +260,7 @@ public class EmulatorShmSkin extends EmulatorSkin {
                                e.gc.getTransform(oldtransform);
                                /* set to new transfrom */
                                e.gc.setTransform(transform);
-                               e.gc.drawImage(pollThread.framebuffer,
+                               e.gc.drawImage(pollThread.imageFramebuffer,
                                                0, 0, pollThread.widthFB, pollThread.heightFB,
                                                0, 0, x, y);
                                /* back to old transform */
index e5f7f903c79ec5471b60892817294b3930fb07ab..433bc97ec9d3a8316eb4190ce0ed35dae5066f3d 100644 (file)
@@ -464,7 +464,7 @@ public class EmulatorSkin {
                                        event.doit = false;
 
                                        if (null != communicator) {
-                                               communicator.sendToQEMU(SendCommand.CLOSE, null);
+                                               communicator.sendToQEMU(SendCommand.CLOSE, null, false);
                                        }
                                }
                        }
@@ -524,7 +524,8 @@ public class EmulatorSkin {
 
                                DisplayStateData lcdStateData = new DisplayStateData(
                                                currentState.getCurrentScale(), currentState.getCurrentRotationId());
-                               communicator.sendToQEMU(SendCommand.CHANGE_LCD_STATE, lcdStateData);
+                               communicator.sendToQEMU(
+                                               SendCommand.CHANGE_LCD_STATE, lcdStateData, false);
                        }
                };
 
@@ -599,7 +600,8 @@ public class EmulatorSkin {
                                                KeyEventData keyEventData = new KeyEventData(
                                                                KeyEventType.RELEASED.value(), data.keycode,
                                                                data.stateMask, data.keyLocation);
-                                               communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
+                                               communicator.sendToQEMU(
+                                                               SendCommand.SEND_KEY_EVENT, keyEventData, false);
 
                                                logger.info("auto release : keycode=" + keyEventData.keycode +
                                                                ", stateMask=" + keyEventData.stateMask +
@@ -686,7 +688,8 @@ public class EmulatorSkin {
                                                        MouseButtonType.LEFT.value(), eventType,
                                                        e.x, e.y, geometry[0], geometry[1], 0);
 
-                                       communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                                       communicator.sendToQEMU(
+                                                       SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                                }
                        }
                };
@@ -731,7 +734,8 @@ public class EmulatorSkin {
                                                        MouseButtonType.LEFT.value(), MouseEventType.RELEASE.value(),
                                                        e.x, e.y, geometry[0], geometry[1], 0);
 
-                                       communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                                       communicator.sendToQEMU(
+                                                       SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                                } else if (2 == e.button) { /* wheel button */
                                        logger.info("wheelUp in display");
                                }
@@ -776,7 +780,8 @@ public class EmulatorSkin {
                                                        MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
                                                        e.x, e.y, geometry[0], geometry[1], 0);
 
-                                       communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                                       communicator.sendToQEMU(
+                                                       SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                                }
                        }
 
@@ -810,7 +815,8 @@ public class EmulatorSkin {
                                                MouseButtonType.WHEEL.value(), eventType,
                                                e.x, e.y, geometry[0], geometry[1], e.count);
 
-                               communicator.sendToQEMU(SendCommand.SEND_MOUSE_EVENT, mouseEventData);
+                               communicator.sendToQEMU(
+                                               SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                        }
                };
 
@@ -850,7 +856,8 @@ public class EmulatorSkin {
                                                KeyEventData keyEventData = new KeyEventData(
                                                                KeyEventType.RELEASED.value(),
                                                                disappearKeycode, disappearStateMask, disappearKeyLocation);
-                                               communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
+                                               communicator.sendToQEMU(
+                                                               SendCommand.SEND_KEY_EVENT, keyEventData, false);
 
                                                removePressedKey(keyEventData);
 
@@ -877,7 +884,8 @@ public class EmulatorSkin {
 
                                KeyEventData keyEventData = new KeyEventData(
                                                KeyEventType.RELEASED.value(), keyCode, stateMask, e.keyLocation);
-                               communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
+                               communicator.sendToQEMU(
+                                               SendCommand.SEND_KEY_EVENT, keyEventData, false);
 
                                removePressedKey(keyEventData);
                        }
@@ -925,7 +933,8 @@ public class EmulatorSkin {
 
                                                                KeyEventData keyEventData = new KeyEventData(KeyEventType.RELEASED.value(),
                                                                                previousKeyCode, previousStateMask, previous.keyLocation);
-                                                               communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
+                                                               communicator.sendToQEMU(
+                                                                               SendCommand.SEND_KEY_EVENT, keyEventData, false);
 
                                                                removePressedKey(keyEventData);
                                                        }
@@ -980,7 +989,8 @@ public class EmulatorSkin {
 
                                KeyEventData keyEventData = new KeyEventData(
                                                KeyEventType.PRESSED.value(), keyCode, stateMask, e.keyLocation);
-                               communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
+                               communicator.sendToQEMU(
+                                               SendCommand.SEND_KEY_EVENT, keyEventData, false);
 
                                addPressedKey(keyEventData);
                        }
@@ -1304,7 +1314,8 @@ public class EmulatorSkin {
                                                        ee.getMessage(), SWT.ICON_ERROR, config);
                                }
 
-                               communicator.sendToQEMU(SendCommand.OPEN_SHELL, null);
+                               communicator.sendToQEMU(
+                                               SendCommand.OPEN_SHELL, null, false);
                        }
                } );
 
@@ -1319,7 +1330,8 @@ public class EmulatorSkin {
                        @Override
                        public void widgetSelected(SelectionEvent e) {
                                logger.info("Close Menu is selected");
-                               communicator.sendToQEMU(SendCommand.CLOSE, null);
+                               communicator.sendToQEMU(
+                                               SendCommand.CLOSE, null, false);
                        }
                } );
 
@@ -1433,7 +1445,8 @@ public class EmulatorSkin {
 
                                DisplayStateData lcdStateData =
                                                new DisplayStateData(currentState.getCurrentScale(), rotationId);
-                               communicator.sendToQEMU(SendCommand.CHANGE_LCD_STATE, lcdStateData);
+                               communicator.sendToQEMU(
+                                               SendCommand.CHANGE_LCD_STATE, lcdStateData, false);
                        }
                };
 
@@ -1507,7 +1520,8 @@ public class EmulatorSkin {
 
                                DisplayStateData lcdStateData =
                                                new DisplayStateData(scale, currentState.getCurrentRotationId());
-                               communicator.sendToQEMU(SendCommand.CHANGE_LCD_STATE, lcdStateData);
+                               communicator.sendToQEMU(
+                                               SendCommand.CHANGE_LCD_STATE, lcdStateData, false);
 
                        }
                };
@@ -1537,7 +1551,8 @@ public class EmulatorSkin {
                                logger.info("Ram dump menu is selected");
 
                                communicator.setRamdumpFlag(true);
-                               communicator.sendToQEMU(SendCommand.RAM_DUMP, null);
+                               communicator.sendToQEMU(
+                                               SendCommand.RAM_DUMP, null, false);
 
                                RamdumpDialog ramdumpDialog;
                                try {
@@ -1616,8 +1631,8 @@ public class EmulatorSkin {
                                        isOnKbd = on;
                                        logger.info("Host Keyboard " + isOnKbd);
 
-                                       communicator.sendToQEMU(
-                                                       SendCommand.HOST_KBD, new BooleanData(on, SendCommand.HOST_KBD.toString()));
+                                       communicator.sendToQEMU(SendCommand.HOST_KBD,
+                                                       new BooleanData(on, SendCommand.HOST_KBD.toString()), false);
                                }
 
                        }
index 30ca206f43f705f1caed7fca7828517168df9721..129711db65454e7ab590ef637846887d64ed1625 100644 (file)
@@ -297,8 +297,7 @@ public interface ICommunicator extends Runnable {
                }
        }
 
-       public void sendToQEMU( SendCommand command, ISendData data );
-       
+       public void sendToQEMU(SendCommand command, ISendData data, boolean urgent);
+
        public void terminate();
-       
 }
index 5f3e7348d2662c1482c5ce630053554c1ac156a5..3caace2b34885131c2cbaf88d7542e6b5f49ee1b 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * 
  *
- * 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>
@@ -83,13 +83,13 @@ public class SocketCommunicator implements ICommunicator {
 
        }
 
-       public static final int HEART_BEAT_INTERVAL = 1; //second
+       public static final int HEART_BEAT_INTERVAL = 1; /* seconds */
        public static final int HEART_BEAT_EXPIRE = 15;
 
-       public final static int SCREENSHOT_WAIT_INTERVAL = 3; // milli-seconds
-       public final static int SCREENSHOT_WAIT_LIMIT = 3000; // milli-seconds
-       public final static int DETAIL_INFO_WAIT_INTERVAL = 1; // milli-seconds
-       public final static int DETAIL_INFO_WAIT_LIMIT = 3000; // milli-seconds
+       public final static int SCREENSHOT_WAIT_INTERVAL = 3; /* milli-seconds */
+       public final static int SCREENSHOT_WAIT_LIMIT = 3000; /* milli-seconds */
+       public final static int DETAIL_INFO_WAIT_INTERVAL = 1; /* milli-seconds */
+       public final static int DETAIL_INFO_WAIT_LIMIT = 3000; /* milli-seconds */
 
        public final static int MAX_SEND_QUEUE_SIZE = 100000;
 
@@ -240,7 +240,7 @@ public class SocketCommunicator implements ICommunicator {
                        StartData startData = new StartData(initialData, width, height, scale, rotation);
                        logger.info("StartData" + startData);
 
-                       sendToQEMU( SendCommand.SEND_START, startData );
+                       sendToQEMU(SendCommand.SEND_START, startData, false);
 
                } catch ( IOException e ) {
                        logger.log( Level.SEVERE, e.getMessage(), e );
@@ -296,10 +296,12 @@ public class SocketCommunicator implements ICommunicator {
                                switch ( command ) {
                                case HEART_BEAT: {
                                        resetHeartbeatCount();
-                                       if ( logger.isLoggable( Level.FINE ) ) {
-                                               logger.fine( "received HEAR_BEAT from QEMU." );
+
+                                       if (logger.isLoggable(Level.FINE)) {
+                                               logger.fine("received HEAR_BEAT from QEMU.");
                                        }
-                                       sendToQEMU( SendCommand.RESPONSE_HEART_BEAT, null );
+
+                                       sendToQEMU(SendCommand.RESPONSE_HEART_BEAT, null, true);
                                        break;
                                }
                                case SCREEN_SHOT_DATA: {
@@ -387,7 +389,7 @@ public class SocketCommunicator implements ICommunicator {
                                }
                                case SHUTDOWN: {
                                        logger.info("received RESPONSE_SHUTDOWN from QEMU.");
-                                       sendToQEMU(SendCommand.RESPONSE_SHUTDOWN, null);
+                                       sendToQEMU(SendCommand.RESPONSE_SHUTDOWN, null, false);
                                        terminate();
                                        break;
                                }
@@ -467,32 +469,10 @@ public class SocketCommunicator implements ICommunicator {
 
        }
 
-       public synchronized DataTranfer sendToQEMU(
-                       SendCommand command, ISendData data, boolean useDataTransfer) {
-
-               DataTranfer dataTranfer = null;
-               
-               if ( useDataTransfer ) {
-
-                       if ( SendCommand.SCREEN_SHOT.equals( command ) ) {
-                               dataTranfer = resetDataTransfer( screenShotDataTransfer );
-                       } else if ( SendCommand.DETAIL_INFO.equals( command ) ) {
-                               dataTranfer = resetDataTransfer( detailInfoTransfer );
-                       }
-               }
-
-               sendToQEMU( command, data );
-               
-               return dataTranfer;
-
-       }
-       
-       private DataTranfer resetDataTransfer( final DataTranfer dataTransfer ) {
-               
-               synchronized ( dataTransfer ) {
-                       
-                       if ( dataTransfer.isTransferState ) {
-                               logger.severe( "Already transter state for getting data." );
+       private DataTranfer resetDataTransfer(final DataTranfer dataTransfer) {
+               synchronized(dataTransfer) {
+                       if (dataTransfer.isTransferState) {
+                               logger.severe("Already transter state for getting data.");
                                return null;
                        }
 
@@ -504,7 +484,7 @@ public class SocketCommunicator implements ICommunicator {
                        TimerTask timerTask = new TimerTask() {
                                @Override
                                public void run() {
-                                       synchronized ( dataTransfer ) {
+                                       synchronized(dataTransfer) {
                                                dataTransfer.isTransferState = false;
                                                dataTransfer.timer = null;
                                                dataTransfer.receivedData = null;
@@ -518,15 +498,37 @@ public class SocketCommunicator implements ICommunicator {
                }
 
        }
-       
+
+       public synchronized DataTranfer sendDataToQEMU(
+                       SendCommand command, ISendData data, boolean useDataTransfer) {
+               DataTranfer dataTranfer = null;
+
+               if (useDataTransfer) {
+                       if (SendCommand.SCREEN_SHOT.equals(command)) {
+                               dataTranfer = resetDataTransfer(screenShotDataTransfer);
+                       } else if (SendCommand.DETAIL_INFO.equals(command)) {
+                               dataTranfer = resetDataTransfer(detailInfoTransfer);
+                       }
+               }
+
+               sendToQEMU(command, data, false);
+
+               return dataTranfer;
+       }
+
        @Override
-       public void sendToQEMU(SendCommand command, ISendData data) {
+       public void sendToQEMU(SendCommand command, ISendData data, boolean urgent) {
                synchronized(sendQueue) {
                        if (MAX_SEND_QUEUE_SIZE < sendQueue.size()) {
                                logger.warning(
                                                "Send queue size exceeded max value, do not push data into send queue.");
                        } else {
-                               sendQueue.add(new SkinSendData(command, data));
+                               if (urgent == true) {
+                                       sendQueue.addFirst(new SkinSendData(command, data));
+                               } else {
+                                       sendQueue.add(new SkinSendData(command, data));
+                               }
+
                                sendQueue.notifyAll();
                        }
                }
index 0eb30aa8ae0ab82128ca758f1d867a9b1dd6ff4b..ec5ee13b51a81024fa214544e2e33e1169c7ac4c 100644 (file)
@@ -248,14 +248,16 @@ public class KeyWindow extends SkinWindow {
                                        public void mouseDown(MouseEvent e) {
                                                KeyEventData keyEventData = new KeyEventData(
                                                                KeyEventType.PRESSED.value(), keycode, 0, 0);
-                                               communicator.sendToQEMU(SendCommand.SEND_HARD_KEY_EVENT, keyEventData);
+                                               communicator.sendToQEMU(
+                                                               SendCommand.SEND_HARD_KEY_EVENT, keyEventData, false);
                                        }
 
                                        @Override
                                        public void mouseUp(MouseEvent e) {
                                                KeyEventData keyEventData = new KeyEventData(
                                                                KeyEventType.RELEASED.value(), keycode, 0, 0);
-                                               communicator.sendToQEMU(SendCommand.SEND_HARD_KEY_EVENT, keyEventData);
+                                               communicator.sendToQEMU(
+                                                               SendCommand.SEND_HARD_KEY_EVENT, keyEventData, false);
                                        }
 
                                        @Override
index d85c7370cd6bdf9b1807e1de73100aa5030eae72..3718d46366dfde8cc67e6cd25ebb87cb296b06fc 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * Display the emulator detail information
  *
- * 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>
@@ -74,7 +74,8 @@ public class DetailInfoDialog extends SkinDialog {
        public final static String VALUE_SUPPORTED = "Supported";
        public final static String VALUE_NOTSUPPORTED = "Not Supported";
 
-       private Logger logger = SkinLogger.getSkinLogger( DetailInfoDialog.class ).getLogger();
+       private Logger logger =
+                       SkinLogger.getSkinLogger(DetailInfoDialog.class).getLogger();
 
        private SocketCommunicator communicator;
        private EmulatorConfig config;
@@ -207,8 +208,9 @@ public class DetailInfoDialog extends SkinDialog {
 
                String infoData = null;
 
-               DataTranfer dataTranfer = communicator.sendToQEMU( SendCommand.DETAIL_INFO, null, true );
-               byte[] receivedData = communicator.getReceivedData( dataTranfer );
+               DataTranfer dataTranfer =
+                               communicator.sendDataToQEMU(SendCommand.DETAIL_INFO, null, true);
+               byte[] receivedData = communicator.getReceivedData(dataTranfer);
 
                if ( null != receivedData ) {
                        infoData = new String( receivedData );
index 08e75c461100a8bf707d438e81bf129afdffb1ef..1d05518e39b9cd04aa845b56127c35ee0a9be996 100644 (file)
@@ -373,7 +373,8 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                                        while skipping of framebuffer drawing */
                                        DisplayStateData lcdStateData = new DisplayStateData(
                                                        currentState.getCurrentScale(), currentState.getCurrentRotationId());
-                                       skin.communicator.sendToQEMU(SendCommand.CHANGE_LCD_STATE, lcdStateData);
+                                       skin.communicator.sendToQEMU(
+                                                       SendCommand.CHANGE_LCD_STATE, lcdStateData, false);
                                }
 
                                /* general shell does not support native transparency,
index 349d35c2fbeff9a485e32e84c25864b1a3060a5c..42906ba20c332ef7400b1573792546aa17bc6534 100644 (file)
@@ -279,7 +279,8 @@ public class PhoneShapeSkinComposer implements ISkinComposer {
                                        while skipping of framebuffer drawing */
                                        DisplayStateData lcdStateData = new DisplayStateData(
                                                        currentState.getCurrentScale(), currentState.getCurrentRotationId());
-                                       skin.communicator.sendToQEMU(SendCommand.CHANGE_LCD_STATE, lcdStateData);
+                                       skin.communicator.sendToQEMU(
+                                                       SendCommand.CHANGE_LCD_STATE, lcdStateData, false);
                                }
 
                                /* general shell does not support native transparency,
@@ -395,7 +396,8 @@ public class PhoneShapeSkinComposer implements ISkinComposer {
                                                /* send event */
                                                KeyEventData keyEventData = new KeyEventData(
                                                                KeyEventType.RELEASED.value(), pressedHWKey.getKeyCode(), 0, 0);
-                                               communicator.sendToQEMU(SendCommand.SEND_HARD_KEY_EVENT, keyEventData);
+                                               communicator.sendToQEMU(
+                                                               SendCommand.SEND_HARD_KEY_EVENT, keyEventData, false);
 
                                                currentState.setCurrentPressedHWKey(null);
 
@@ -431,7 +433,8 @@ public class PhoneShapeSkinComposer implements ISkinComposer {
                                                /* send event */
                                                KeyEventData keyEventData = new KeyEventData(
                                                                KeyEventType.PRESSED.value(), hwKey.getKeyCode(), 0, 0);
-                                               communicator.sendToQEMU(SendCommand.SEND_HARD_KEY_EVENT, keyEventData);
+                                               communicator.sendToQEMU(
+                                                               SendCommand.SEND_HARD_KEY_EVENT, keyEventData, false);
 
                                                currentState.setCurrentPressedHWKey(hwKey);
 
@@ -447,9 +450,9 @@ public class PhoneShapeSkinComposer implements ISkinComposer {
                                                                                if (gc != null) {
                                                                                        gc.drawImage(currentState.getCurrentKeyPressedImage(),
                                                                                                        hwKey.getRegion().x, hwKey.getRegion().y,
-                                                                                                       hwKey.getRegion().width, hwKey.getRegion().height, //src
+                                                                                                       hwKey.getRegion().width, hwKey.getRegion().height, /* src */
                                                                                                        hwKey.getRegion().x, hwKey.getRegion().y,
-                                                                                                       hwKey.getRegion().width, hwKey.getRegion().height); //dst
+                                                                                                       hwKey.getRegion().width, hwKey.getRegion().height); /* dst */
 
                                                                                        gc.dispose();
 
index d482afce7df16665dc26f78505f80e98894347f4..7cbc72853098ac490f13717c921d828757872d6a 100644 (file)
@@ -59,7 +59,7 @@ public class SdlScreenShotWindow extends ScreenShotDialog {
        }
 
        protected void capture() throws ScreenShotException {
-               DataTranfer dataTranfer = communicator.sendToQEMU(
+               DataTranfer dataTranfer = communicator.sendDataToQEMU(
                                SendCommand.SCREEN_SHOT, null, true);
                byte[] receivedData = communicator.getReceivedData(dataTranfer);
 
index 17458a8ad2ac6c7c5b6df3a06de341639ed171ec..4c76bbc757d26a68da2bcdc9cc5777092c7e015b 100644 (file)
@@ -923,16 +923,16 @@ static void* run_skin_server(void* args)
                     break;
                 }
                 case RECV_RESPONSE_HEART_BEAT: {
+                    pthread_mutex_lock(&mutex_recv_heartbeat_count);
+                    recv_heartbeat_count = 0;
+                    pthread_mutex_unlock(&mutex_recv_heartbeat_count);
+
                     log_cnt += sprintf(log_buf + log_cnt, "RECV_RESPONSE_HEART_BEAT ==\n");
 #if 0
                     TRACE(log_buf);
 #endif
                     TRACE("recv HB req_id:%d\n", req_id);
 
-                    pthread_mutex_lock(&mutex_recv_heartbeat_count);
-                    recv_heartbeat_count = 0;
-                    pthread_mutex_unlock(&mutex_recv_heartbeat_count);
-
                     break;
                 }
                 case RECV_OPEN_SHELL: {