Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Silbe <sascha-pgp@silbe.org>2010-06-02 11:03:10 (GMT)
committer Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>2010-06-02 11:03:10 (GMT)
commitcb4fdde40a56e6576d4a966cc28cda3fdea471a4 (patch)
tree34009950030c40ec4957bf02dcce1c33a46def81
parente9bc53279851db9811e59d9b4ba8e4d088fcd1e7 (diff)
sugar-emulator: better error messages in case of failures (#1755)
Replaces traceback with error message in these cases: - virtual X server cannot be executed - virtual X server doesn't work Provides explicit error message in these cases: - DISPLAY not set Signed-off-by: Sascha Silbe <sascha-pgp@silbe.org>
-rw-r--r--src/jarabe/util/emulator.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/jarabe/util/emulator.py b/src/jarabe/util/emulator.py
index 607d840..d9dca7f 100644
--- a/src/jarabe/util/emulator.py
+++ b/src/jarabe/util/emulator.py
@@ -17,6 +17,7 @@
import os
import signal
import subprocess
+import sys
import time
from optparse import OptionParser
@@ -26,6 +27,10 @@ import gobject
from sugar import env
+ERROR_NO_DISPLAY = 30
+ERROR_NO_SERVER = 31
+
+
default_dimensions = (800, 600)
def _run_xephyr(display, dpi, dimensions, fullscreen):
cmd = [ 'Xephyr' ]
@@ -59,7 +64,12 @@ def _run_xephyr(display, dpi, dimensions, fullscreen):
cmd.append('-noreset')
- pipe = subprocess.Popen(cmd)
+ try:
+ pipe = subprocess.Popen(cmd)
+
+ except OSError, exc:
+ sys.stderr.write('Error executing server: %s\n' % (exc, ))
+ return None
os.environ['DISPLAY'] = ":%d" % (display)
os.environ['SUGAR_EMULATOR_PID'] = str(pipe.pid)
@@ -87,6 +97,8 @@ def _start_xephyr(dpi, dimensions, fullscreen):
for display in range(30, 40):
if not _check_server(display):
pipe = _run_xephyr(display, dpi, dimensions, fullscreen)
+ if pipe is None:
+ return None
for i_ in range(10):
if _check_server(display):
@@ -96,6 +108,8 @@ def _start_xephyr(dpi, dimensions, fullscreen):
_kill_pipe(pipe)
+ return None
+
def _start_window_manager():
cmd = ['metacity']
@@ -132,9 +146,17 @@ def main():
help='Do not run emulator in fullscreen mode')
(options, args) = parser.parse_args()
+ if not os.environ.get('DISPLAY'):
+ sys.stderr.write('DISPLAY not set, cannot connect to host X server.\n')
+ return ERROR_NO_DISPLAY
+
_setup_env()
server = _start_xephyr(options.dpi, options.dimensions, options.fullscreen)
+ if server is None:
+ sys.stderr.write('Failed to start server. Please check output above'
+ ' for any error message.\n')
+ return ERROR_NO_SERVER
if options.scaling:
os.environ['SUGAR_SCALING'] = options.scaling