communication: close the data stream 46/10646/1
authorGiWoong Kim <giwoong.kim@samsung.com>
Sat, 5 Oct 2013 03:50:51 +0000 (12:50 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Tue, 8 Oct 2013 06:19:35 +0000 (15:19 +0900)
close the data stream when emulator is shutting down
& remove some warnings & etc

Change-Id: I0474e1bbb03c40ef6ed712c055fe8d231edd62e5
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/comm/sock/SocketCommunicator.java
tizen/src/skin/client/src/org/tizen/emulator/skin/custom/GeneralKeyWindow.java
tizen/src/skin/client/src/org/tizen/emulator/skin/screenshot/ShmScreenShotWindow.java
tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java

index 8ad232d3b0da738950a0ed255cfbac564062c501..a3a8068bf6ebab5ff37c14c28ee59d1183cc77f8 100644 (file)
@@ -184,7 +184,8 @@ public class EmulatorShmSkin extends EmulatorSkin {
                }
 
                public void getPixelsFromSharedMemory() {
-                       int result = getPixels(arrayFramebuffer);
+                       //int result =
+                       getPixels(arrayFramebuffer);
                        //logger.info("getPixels native function returned " + result);
 
                        communicator.sendToQEMU(
index 9242ea95055342a62037c26de6b201beff3e85c0..25195248329ca3b351de54b0d4bb8b46eba57aa9 100755 (executable)
@@ -193,7 +193,10 @@ 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);
+                       if (SkinUtil.setTopMost(shell, true) == false) {
+                               logger.info("failed to set top most");
+                               this.isOnTop = false;
+                       }
                }
 
                this.displayCanvasStyle = displayCanvasStyle;
index dc5135289303f20e9cc2bdee166fa9818bed933a..c8b3a2f7e149a4667e5ad3a28f7fbbb2af932025 100755 (executable)
@@ -87,10 +87,10 @@ public class SocketCommunicator implements ICommunicator {
        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 LONG_WAIT_INTERVAL = 3; /* milli-seconds */
+       public final static int LONG_WAIT_LIMIT = 3000; /* milli-seconds */
+       public final static int SHORT_WAIT_INTERVAL = 1; /* milli-seconds */
+       public final static int SHORT_WAIT_LIMIT = 2000; /* milli-seconds */
 
        public final static int MAX_SEND_QUEUE_SIZE = 100000;
 
@@ -105,8 +105,8 @@ public class SocketCommunicator implements ICommunicator {
        private EmulatorSkin skin;
 
        private Socket socket;
-       private DataInputStream dis;
-       private DataOutputStream dos;
+       private DataInputStream sockInputStream;
+       private DataOutputStream sockOutputStream;
 
        private AtomicInteger heartbeatCount;
        private boolean isTerminated;
@@ -138,24 +138,24 @@ public class SocketCommunicator implements ICommunicator {
                this.skin = skin;
 
                this.screenShotDataTransfer = new DataTranfer();
-               this.screenShotDataTransfer.sleep = SCREENSHOT_WAIT_INTERVAL;
-               this.screenShotDataTransfer.maxWaitTime = SCREENSHOT_WAIT_LIMIT;
+               this.screenShotDataTransfer.sleep = LONG_WAIT_INTERVAL;
+               this.screenShotDataTransfer.maxWaitTime = LONG_WAIT_LIMIT;
 
                this.detailInfoTransfer = new DataTranfer();
-               this.detailInfoTransfer.sleep = DETAIL_INFO_WAIT_INTERVAL;
-               this.detailInfoTransfer.maxWaitTime = DETAIL_INFO_WAIT_LIMIT;
+               this.detailInfoTransfer.sleep = SHORT_WAIT_INTERVAL;
+               this.detailInfoTransfer.maxWaitTime = SHORT_WAIT_LIMIT;
 
                this.progressDataTransfer = new DataTranfer();
-               this.progressDataTransfer.sleep = SCREENSHOT_WAIT_INTERVAL;
-               this.progressDataTransfer.maxWaitTime = SCREENSHOT_WAIT_LIMIT;
+               this.progressDataTransfer.sleep = SHORT_WAIT_INTERVAL;
+               this.progressDataTransfer.maxWaitTime = SHORT_WAIT_LIMIT;
 
                this.brightnessDataTransfer = new DataTranfer();
-               this.brightnessDataTransfer.sleep = SCREENSHOT_WAIT_INTERVAL;
-               this.brightnessDataTransfer.maxWaitTime = SCREENSHOT_WAIT_LIMIT;
+               this.brightnessDataTransfer.sleep = LONG_WAIT_INTERVAL;
+               this.brightnessDataTransfer.maxWaitTime = LONG_WAIT_LIMIT;
 
                this.ecpTransfer = new DataTranfer();
-               this.ecpTransfer.sleep = SCREENSHOT_WAIT_INTERVAL;
-               this.ecpTransfer.maxWaitTime = SCREENSHOT_WAIT_LIMIT;
+               this.ecpTransfer.sleep = LONG_WAIT_INTERVAL;
+               this.ecpTransfer.maxWaitTime = LONG_WAIT_LIMIT;
                
                this.heartbeatCount = new AtomicInteger(0);
                //this.heartbeatExecutor = Executors.newSingleThreadScheduledExecutor();
@@ -224,8 +224,8 @@ public class SocketCommunicator implements ICommunicator {
                };
 
                try {
-                       dis = new DataInputStream(socket.getInputStream());
-                       dos = new DataOutputStream(socket.getOutputStream());
+                       sockInputStream = new DataInputStream(socket.getInputStream());
+                       sockOutputStream = new DataOutputStream(socket.getOutputStream());
                } catch (IOException e) {
                        logger.log(Level.SEVERE, e.getMessage(), e);
                        terminate();
@@ -280,10 +280,9 @@ public class SocketCommunicator implements ICommunicator {
                        }
 
                        try {
-
-                               int reqId = dis.readInt();
-                               short cmd = dis.readShort();
-                               int length = dis.readInt();
+                               int reqId = sockInputStream.readInt();
+                               short cmd = sockInputStream.readShort();
+                               int length = sockInputStream.readInt();
 
                                if (logger.isLoggable(Level.FINE)) {
                                        logger.fine("[Socket] read - reqId:" + reqId +
@@ -299,7 +298,7 @@ public class SocketCommunicator implements ICommunicator {
                                        continue;
                                }
 
-                               switch ( command ) {
+                               switch (command) {
                                case HEART_BEAT: {
                                        resetHeartbeatCount();
 
@@ -311,14 +310,14 @@ public class SocketCommunicator implements ICommunicator {
                                        break;
                                }
                                case SCREEN_SHOT_DATA: {
-                                       logger.info( "received SCREEN_SHOT_DATA from QEMU." );
-                                       receiveData( screenShotDataTransfer, length );
+                                       logger.info("received SCREEN_SHOT_DATA from QEMU.");
+                                       receiveData(screenShotDataTransfer, length );
 
                                        break;
                                }
                                case DETAIL_INFO_DATA: {
-                                       logger.info( "received DETAIL_INFO_DATA from QEMU." );
-                                       receiveData( detailInfoTransfer, length );
+                                       logger.info("received DETAIL_INFO_DATA from QEMU.");
+                                       receiveData( detailInfoTransfer, length);
 
                                        break;
                                }
@@ -443,7 +442,7 @@ public class SocketCommunicator implements ICommunicator {
                                        break;
                                }
                                default: {
-                                       logger.severe("Unknown command from QEMU. command:" + cmd);
+                                       logger.severe("Unknown command from QEMU. command : " + cmd);
                                        break;
                                }
                                }
@@ -465,7 +464,7 @@ public class SocketCommunicator implements ICommunicator {
                                dataTransfer.timer.cancel();
                        }
 
-                       byte[] data = readData(dis, length);
+                       byte[] data = readData(sockInputStream, length);
 
                        if (null != data) {
                                logger.info("finished receiving data from QEMU.");
@@ -490,7 +489,6 @@ public class SocketCommunicator implements ICommunicator {
 
                BufferedInputStream bfis = new BufferedInputStream(is, length);
                byte[] data = new byte[length];
-
                int read = 0;
                int total = 0;
 
@@ -510,7 +508,7 @@ public class SocketCommunicator implements ICommunicator {
                        }
                }
 
-               logger.info("finished reading stream. read:" + total);
+               logger.info("finished reading stream. read : " + total);
 
                return data;
        }
@@ -582,7 +580,6 @@ public class SocketCommunicator implements ICommunicator {
        
        private void sendToQEMUInternal(SkinSendData sendData) {
                try {
-
                        if (null == sendData) {
                                return;
                        }
@@ -609,8 +606,8 @@ public class SocketCommunicator implements ICommunicator {
 
                        dataOutputStream.flush();
 
-                       dos.write(bao.toByteArray());
-                       dos.flush();
+                       sockOutputStream.write(bao.toByteArray());
+                       sockOutputStream.flush();
 
                        bao.reset();
 
@@ -736,13 +733,11 @@ public class SocketCommunicator implements ICommunicator {
                }
 
                IOUtil.closeSocket(socket);
+               IOUtil.close(sockInputStream);
+               IOUtil.close(sockOutputStream);
 
-               try {
-                       bao.close();
-                       dataOutputStream.close();
-               } catch (IOException e) {
-                       e.printStackTrace();
-               }
+               IOUtil.close(bao);
+               IOUtil.close(dataOutputStream);
 
                synchronized (this) {
                        skin.shutdown();
@@ -751,7 +746,6 @@ public class SocketCommunicator implements ICommunicator {
 }
 
 class SkinSendData {
-
        private SendCommand command;
        private ISendData data;
 
@@ -767,5 +761,4 @@ class SkinSendData {
        public ISendData getSendData() {
                return data;
        }
-
 }
index 7c15bf01009358f889128bcdba02ca32c36a7b27..fb784f4ca2030d83013b1a91eb10ac3046dde2e7 100644 (file)
@@ -100,13 +100,8 @@ public class GeneralKeyWindow extends SkinWindow {
 
                this.skin = skin;
                this.parent = skin.getShell();
-               if (SwtUtil.isMacPlatform() == false) {
-                       this.shell = new Shell(parent,
-                                       SWT.NO_TRIM | SWT.RESIZE | SWT.TOOL);
-               } else {
-                       this.shell = new Shell(parent.getDisplay(),
-                                       SWT.NO_TRIM | SWT.RESIZE | SWT.TOOL);
-               }
+               this.shell = new Shell(parent.getDisplay() /* for Mac & Always on Top */,
+                               SWT.NO_TRIM | SWT.RESIZE | SWT.TOOL | SWT.NO_FOCUS);
 
                this.imageRegistry = new GeneralKeyWindowImageRegistry(shell.getDisplay());
                this.frameMaker = new SkinPatches(PATCH_IMAGES_PATH);
index 7fa310e424987aeb9e15d347611917accdc31e07..401b55516b5b7aa5aa6c2e7c310fcaf0b1bf82a9 100644 (file)
@@ -62,8 +62,9 @@ public class ShmScreenShotWindow extends ScreenShotDialog {
                int height = config.getArgInt(ArgsConstants.RESOLUTION_HEIGHT);
 
                int[] arrayFramebuffer = new int[width * height];
-               int result =
-                               ((EmulatorShmSkin) emulatorSkin).getPixels(arrayFramebuffer);
+
+               //int result =
+               ((EmulatorShmSkin) emulatorSkin).getPixels(arrayFramebuffer);
                //logger.info("getPixels native function returned " + result);
 
                ImageData imageData = new ImageData(width, height, 24, paletteData_ARGB);
index 6d267216a3a1013618e92558e0e3982d94375a74..924d97988368073a3a7a616d9ed7ba6a8d420dde 100644 (file)
@@ -1017,6 +1017,8 @@ public class SkinUtil {
                        return false;
                }
 
+               logger.info("set Always on Top : " + isOnTop);
+
                /* internal/Library.java::arch() */
                String osArch = System.getProperty("os.arch"); /* $NON-NLS-1$ */