Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar-emulator
diff options
context:
space:
mode:
authorMarco 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)
commit75130719b516b3d2c0a74e14da2ef376ce3908ed (patch)
tree39ed0a5e81481a0392173ceac7da3843c66b20b2 /sugar-emulator
parent527e22ba5dbcbc9fcec877e95479ae71d7ddf317 (diff)
Check for locks before using a display.
Patch by reinier@heeres.eu
Diffstat (limited to 'sugar-emulator')
-rwxr-xr-xsugar-emulator29
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: