From: giwoong.kim Date: Tue, 12 Mar 2013 02:15:42 +0000 (+0900) Subject: display: skip the display update X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~1051 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f7c7e606400f4c51f39df203685669a48d0b5add;p=sdk%2Femulator%2Fqemu.git display: skip the display update skip the display update when it is turned off on ShmSkin design. Signed-off-by: GiWoong Kim --- 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 b1c76c9c36..149137ca02 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 @@ -118,6 +118,18 @@ public class EmulatorSdlSkin extends EmulatorSkin { return windowHandleId; } + @Override + public void displayOn() { + logger.info("display on"); + /* do nothing */ + } + + @Override + public void displayOff() { + logger.info("display off"); + /* do nothing */ + } + @Override protected void openScreenShotWindow() { if (screenShotDialog != null) { 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 7ec849d12b..dd47b77094 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 @@ -74,6 +74,7 @@ public class EmulatorShmSkin extends EmulatorSkin { private volatile boolean stopRequest; private Runnable runnable; + private int intervalWait; public PollFBThread(int lcdWidth, int lcdHeight) { this.display = Display.getDefault(); @@ -83,25 +84,37 @@ public class EmulatorShmSkin extends EmulatorSkin { this.imageData = new ImageData(lcdWidth, lcdHeight, COLOR_DEPTH, paletteData); this.framebuffer = new Image(Display.getDefault(), imageData); + setWaitIntervalTime(30); + this.runnable = new Runnable() { @Override public void run() { // logger.info("update display framebuffer"); - if(lcdCanvas.isDisposed() == false) { + if (lcdCanvas.isDisposed() == false) { lcdCanvas.redraw(); } } }; } + public synchronized void setWaitIntervalTime(int ms) { + intervalWait = ms; + } + + public synchronized int getWaitIntervalTime() { + return intervalWait; + } + @Override public void run() { stopRequest = false; + Image temp; + while (!stopRequest) { - synchronized (this) { + synchronized(this) { try { - this.wait(30); /* 30ms */ + this.wait(intervalWait); /* ms */ } catch (InterruptedException e) { e.printStackTrace(); break; @@ -115,7 +128,7 @@ public class EmulatorShmSkin extends EmulatorSkin { imageData.setPixels(0, i, lcdWidth, array, i * lcdWidth); } - Image temp = framebuffer; + temp = framebuffer; framebuffer = new Image(display, imageData); temp.dispose(); @@ -133,6 +146,10 @@ public class EmulatorShmSkin extends EmulatorSkin { public void stopRequest() { stopRequest = true; + + synchronized(pollThread) { + pollThread.notify(); + } } } @@ -151,7 +168,7 @@ public class EmulatorShmSkin extends EmulatorSkin { super.finger.setMultiTouchEnable(0); super.finger.clearFingerSlot(); super.finger.cleanup_multiTouchState(); - + super.skinFinalize(); } @@ -178,18 +195,27 @@ public class EmulatorShmSkin extends EmulatorSkin { int x = lcdCanvas.getSize().x; int y = lcdCanvas.getSize().y; + + if (pollThread.getWaitIntervalTime() == 0) { + logger.info("draw black screen"); + + e.gc.drawRectangle(-1, -1, x + 1, y + 1); + return; + } + if (currentState.getCurrentAngle() == 0) { /* portrait */ e.gc.drawImage(pollThread.framebuffer, 0, 0, pollThread.lcdWidth, pollThread.lcdHeight, 0, 0, x, y); - + if (finger.getMultiTouchEnable() == 1) { finger.rearrangeFingerPoints(currentState.getCurrentResolutionWidth(), currentState.getCurrentResolutionHeight(), currentState.getCurrentScale(), currentState.getCurrentRotationId()); } - finger.drawImage(e, currentState.getCurrentAngle()); + + finger.drawImage(e, currentState.getCurrentAngle()); return; } @@ -212,15 +238,14 @@ public class EmulatorShmSkin extends EmulatorSkin { y = temp; transform.translate(x * -1, 0); } - - //draw finger image - //for when rotate while use multi touch + + /* draw finger image for when rotate while use multitouch */ if (finger.getMultiTouchEnable() == 1) { finger.rearrangeFingerPoints(currentState.getCurrentResolutionWidth(), currentState.getCurrentResolutionHeight(), currentState.getCurrentScale(), currentState.getCurrentRotationId()); - } + } //save current transform as "oldtransform" e.gc.getTransform(oldtransform); //set to new transfrom @@ -230,7 +255,7 @@ public class EmulatorShmSkin extends EmulatorSkin { 0, 0, x, y); //back to old transform e.gc.setTransform(oldtransform); - + transform.dispose(); finger.drawImage(e, currentState.getCurrentAngle()); } @@ -241,6 +266,35 @@ public class EmulatorShmSkin extends EmulatorSkin { return 0; } + @Override + public void displayOn() { + logger.info("display on"); + + if (pollThread.isAlive()) { + pollThread.setWaitIntervalTime(30); + + synchronized(pollThread) { + pollThread.notify(); + } + } + } + + @Override + public void displayOff() { + logger.info("display off"); + + if (pollThread.isAlive()) { + pollThread.setWaitIntervalTime(0); + + shell.getDisplay().asyncExec(new Runnable() { + @Override + public void run() { + lcdCanvas.redraw(); + } + }); + } + } + @Override protected void openScreenShotWindow() { if (screenShotDialog != null) { 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 17afe67518..7916488246 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 @@ -1034,7 +1034,23 @@ public class EmulatorSkin { } protected void openScreenShotWindow() { - //TODO: abstract + /* abstract */ + } + + public void dispalyBrightness(boolean on) { + if (on == true) { + displayOn(); + } else { + displayOff(); + } + } + + protected void displayOn() { + /* abstract */ + } + + protected void displayOff() { + /* abstract */ } public boolean isSelectKeyWindow() { diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java index 01dc15050d..5f3e7348d2 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/comm/sock/SocketCommunicator.java @@ -370,9 +370,9 @@ public class SocketCommunicator implements ICommunicator { } if (value == 0) { - logger.info("display off"); + skin.dispalyBrightness(false); } else { - logger.info("display on"); + skin.dispalyBrightness(true); } }