Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar-emulator
diff options
context:
space:
mode:
authorMike C. Fletcher <mcfletch@raistlin.(none)>2007-04-22 03:01:56 (GMT)
committer Mike C. Fletcher <mcfletch@raistlin.(none)>2007-04-22 03:01:56 (GMT)
commita0ee487a401f63805d760c4a2003c2c434864b70 (patch)
tree1d03d8a56ffcfbe35533beab90314f465d769beb /sugar-emulator
parent60c9e0ecb8cac1aa0017bece6346921b0b89805b (diff)
Restructure to not execute code on speculative import
Add logging messages at "info" level to provide feedback while launching in order to make debugging unsuccessful launches easier.
Diffstat (limited to 'sugar-emulator')
-rwxr-xr-xsugar-emulator58
1 files changed, 40 insertions, 18 deletions
diff --git a/sugar-emulator b/sugar-emulator
index 29b0260..dbbaab9 100755
--- a/sugar-emulator
+++ b/sugar-emulator
@@ -19,6 +19,10 @@
import os
import sys
import socket
+import logging
+
+log = logging.getLogger( 'sugar-emulator' )
+log.setLevel( logging.DEBUG )
import pygtk
pygtk.require('2.0')
@@ -27,6 +31,7 @@ import gobject
def _get_display_number():
"""Find a free display number trying to connect to 6000+ ports"""
+ log.info( "Attempting to find free port for X11 (Xephyr)" )
retries = 20
display_number = 1
display_is_free = False
@@ -43,6 +48,10 @@ def _get_display_number():
display_is_free = True
if display_is_free:
+ log.info(
+ ' Found free port: #%s (%s)',
+ display_number, display_number+6000
+ )
return display_number
else:
logging.error('Cannot find a free display.')
@@ -50,6 +59,7 @@ def _get_display_number():
def _start_xephyr():
display = _get_display_number()
+ log.info( 'Starting the Xephyr nested X display on display %s', display )
cmd = [ 'Xephyr' ]
cmd.append(':%d' % display)
@@ -66,6 +76,7 @@ def _start_xephyr():
cmd.append('-dpi')
cmd.append('%d' % int(dpi/1024))
+ log.debug( 'Xephyr command: %s', " ".join( cmd ) )
result = gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH)
pid = result[0]
@@ -73,11 +84,13 @@ def _start_xephyr():
os.environ['SUGAR_EMULATOR_PID'] = str(pid)
def _start_matchbox():
+ log.info( 'Starting the matchbox window manager' )
cmd = ['matchbox-window-manager']
cmd.extend(['-use_titlebar', 'no'])
cmd.extend(['-theme', 'olpc'])
+ log.debug( 'Matchbox command: %s', " ".join( cmd) )
gobject.spawn_async(cmd, flags=gobject.SPAWN_SEARCH_PATH)
def _setup_env():
@@ -89,23 +102,32 @@ def _setup_env():
if os.environ.has_key('PYTHONPATH'):
path = os.environ['PYTHONPATH']
os.environ['PYTHONPATH'] = source_dir + ':' + path
+ log.info( 'Set PYTHONPATH=%s', os.environ['PYTHONPATH'] )
-_setup_env()
-_start_xephyr()
-
-from sugar import env
-
-if env.is_emulator():
- gtkrc_filename = 'sugar.gtkrc'
-else:
- gtkrc_filename = 'sugar-xo.gtkrc'
-
-os.environ['GTK2_RC_FILES'] = env.get_data_path(gtkrc_filename)
-
-if len(sys.argv) == 1:
- program = 'sugar-shell'
-else:
- _start_matchbox()
- program = sys.argv[1]
+def main():
+ """Script-level operations"""
+ logging.basicConfig()
+ _setup_env()
+ _start_xephyr()
+
+ from sugar import env
+
+ if env.is_emulator():
+ gtkrc_filename = 'sugar.gtkrc'
+ else:
+ gtkrc_filename = 'sugar-xo.gtkrc'
+
+ os.environ['GTK2_RC_FILES'] = env.get_data_path(gtkrc_filename)
+
+ if len(sys.argv) == 1:
+ program = 'sugar-shell'
+ else:
+ _start_matchbox()
+ program = sys.argv[1]
+
+ command = ['dbus-launch', 'dbus-launch', '--exit-with-session', program]
+ log.info( "Attempting to launch sugar to replace this process: %s", " ".join(command) )
+ os.execlp( *command )
-os.execlp('dbus-launch', 'dbus-launch', '--exit-with-session', program)
+if __name__ == "__main__":
+ main()