From: Jinhyung Choi Date: Wed, 2 Jul 2014 10:03:35 +0000 (+0900) Subject: skin: fixed launch ecp (removed processbuild redirection) X-Git-Tag: Tizen_Studio_1.3_Release_p2.3.1~297 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=80692f5f7e032e285b095dd2090aa2868f8665ee;p=sdk%2Femulator%2Fqemu.git skin: fixed launch ecp (removed processbuild redirection) processbuilder redirection is not supported by java 1.6 Change-Id: Ibf5e88844f13dca62f21dfe4be1b00f171567822 Signed-off-by: Jinhyung Choi --- 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 b2ec2a5448..752b75ead0 100755 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java @@ -29,8 +29,11 @@ package org.tizen.emulator.skin; +import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; @@ -104,6 +107,7 @@ import org.tizen.emulator.skin.log.SkinLogger; import org.tizen.emulator.skin.menu.KeyWindowKeeper; import org.tizen.emulator.skin.menu.PopupMenu; import org.tizen.emulator.skin.screenshot.ScreenShotDialog; +import org.tizen.emulator.skin.util.IOUtil; import org.tizen.emulator.skin.util.SkinUtil; import org.tizen.emulator.skin.util.SwtUtil; @@ -1842,44 +1846,38 @@ public class EmulatorSkin { try { SkinUtil.openMessage(shell, null, "Control Panel file does not exist in the following path.\n" - + ecpFile.getCanonicalPath(), + + ecpFile.getCanonicalPath(), SWT.ICON_ERROR, config); } catch (IOException ee) { logger.log(Level.SEVERE, ee.getMessage(), ee); } return; - } + } - String emulName = SkinUtil.getVmName(config); - int portSdb = config.getArgInt(ArgsConstants.VM_BASE_PORT); + String emulName = SkinUtil.getVmName(config); + int portSdb = config.getArgInt(ArgsConstants.VM_BASE_PORT); ProcessBuilder procEcp = new ProcessBuilder(); procEcp.redirectErrorStream(true); - File nullFile = null; // FIXME: appropriate running binary setting is necessary. if (SwtUtil.isWindowsPlatform()) { procEcp.command("java.exe", "-jar", ecpPath, "vmname=" + emulName, "base.port=" + portSdb); - nullFile = new File("NUL:"); } else if (SwtUtil.isMacPlatform()) { procEcp.command("java", "-jar", "-XstartOnFirstThread", ecpPath, "vmname=" + emulName, "base.port=" + portSdb); - nullFile = new File("/dev/null"); } else { /* Linux */ procEcp.command("java", "-jar", ecpPath, "vmname=" + emulName, "base.port=" + portSdb); - nullFile = new File("/dev/null"); - } - if (nullFile != null) { - procEcp.redirectOutput(ProcessBuilder.Redirect.to(nullFile)); } logger.info(procEcp.command().toString()); + Process proc = null; try { - procEcp.start(); /* open ECP */ + proc = procEcp.start(); /* open ECP */ } catch (Exception ee) { logger.log(Level.SEVERE, ee.getMessage(), ee); SkinUtil.openMessage( @@ -1888,6 +1886,26 @@ public class EmulatorSkin { "Fail to open control panel : \n" + ee.getMessage(), SWT.ICON_ERROR, config); } + + if (proc != null) { + final InputStream in = proc.getInputStream(); + final BufferedReader br = new BufferedReader( + new InputStreamReader(in)); + new Thread(new Runnable() { + @Override + public void run() { + try { + while (br.readLine() != null) { + // do nothing + } + } catch (IOException e) { + logger.log(Level.SEVERE, e.getMessage(), e); + } finally { + IOUtil.close(in); + } + } + }).start(); + } } };