Check for locks before using a display.

Patch by reinier@heeres.eu
This commit is contained in:
Marco Pesenti Gritti 2007-05-30 18:48:40 +02:00
parent 527e22ba5d
commit 75130719b5

View File

@ -36,23 +36,26 @@ def _get_display_number():
log.info( "Attempting to find free port for X11 (Xephyr)" ) log.info( "Attempting to find free port for X11 (Xephyr)" )
retries = 20 retries = 20
display_number = 1 display_number = 1
display_is_free = False display_is_free = False
while not display_is_free and retries > 0: while not display_is_free and retries > 0:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) lockstr = "/tmp/.X%d-lock" % display_number
try: if not os.path.exists(lockstr):
s.connect(('127.0.0.1', 6000 + display_number)) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.close() try:
s.connect(('127.0.0.1', 6000 + display_number))
s.close()
except:
display_is_free = True
break
display_number += 1 display_number += 1
retries -= 1 retries -= 1
except:
display_is_free = True
if display_is_free: if display_is_free:
log.info( log.info(
' Found free port: #%s (%s)', ' Found free port: #%s (%s)',
display_number, display_number+6000 display_number, display_number+6000
) )
return display_number return display_number
else: else: