diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-05-30 16:48:40 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2007-05-30 16:48:40 (GMT) |
commit | 75130719b516b3d2c0a74e14da2ef376ce3908ed (patch) | |
tree | 39ed0a5e81481a0392173ceac7da3843c66b20b2 /sugar-emulator | |
parent | 527e22ba5dbcbc9fcec877e95479ae71d7ddf317 (diff) |
Check for locks before using a display.
Patch by reinier@heeres.eu
Diffstat (limited to 'sugar-emulator')
-rwxr-xr-x | sugar-emulator | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/sugar-emulator b/sugar-emulator index 912aa67..d2fbad8 100755 --- a/sugar-emulator +++ b/sugar-emulator @@ -36,23 +36,26 @@ def _get_display_number(): log.info( "Attempting to find free port for X11 (Xephyr)" ) retries = 20 display_number = 1 - display_is_free = False + display_is_free = False while not display_is_free and retries > 0: - s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - try: - s.connect(('127.0.0.1', 6000 + display_number)) - s.close() - - display_number += 1 - retries -= 1 - except: - display_is_free = True + lockstr = "/tmp/.X%d-lock" % display_number + if not os.path.exists(lockstr): + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + try: + s.connect(('127.0.0.1', 6000 + display_number)) + s.close() + except: + display_is_free = True + break + + display_number += 1 + retries -= 1 if display_is_free: - log.info( - ' Found free port: #%s (%s)', - display_number, display_number+6000 + log.info( + ' Found free port: #%s (%s)', + display_number, display_number+6000 ) return display_number else: |