Skip to content

Commit 005de7d

Browse files
committed
Upgrade emrun to latest: juj/emrun@e698275
1 parent 4d05e76 commit 005de7d

1 file changed

Lines changed: 34 additions & 17 deletions

File tree

emrun

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ def unquote_u(source):
163163
# Returns whether the browser page we spawned is still running.
164164
# (note, not perfect atm, in case we are running in detached mode)
165165
def is_browser_process_alive():
166+
global browser_process
166167
return browser_process and browser_process.poll() == None
167168

168169
# Kills browser_process and processname_killed_atexit.
@@ -172,9 +173,11 @@ def kill_browser_process():
172173
try:
173174
logv('Terminating browser process..')
174175
browser_process.kill()
175-
except:
176-
pass
176+
except Exception, e:
177+
logv('Failed with error ' + str(e) + '!')
177178
browser_process = None
179+
processname_killed_atexit = ''
180+
return
178181
if len(processname_killed_atexit) > 0:
179182
if emrun_options.android:
180183
logv("Terminating Android app '" + processname_killed_atexit + "'.")
@@ -270,15 +273,17 @@ class HTTPWebServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
270273
while self.is_running:
271274
now = tick()
272275
# Did user close browser?
273-
if not emrun_options.serve_after_close and browser_process and browser_process.poll() != None:
274-
if not have_received_messages:
275-
emrun_options.serve_after_close = True
276-
logv('Warning: emrun got detached from the target browser process. Cannot detect when user closes the browser. Behaving as if --serve_after_close was passed in.')
277-
if not emrun_options.browser:
278-
logv('Try passing the --browser=/path/to/browser option to avoid this from occurring. See https://github.com/kripken/emscripten/issues/3234 for more discussion.')
279-
else:
280-
self.shutdown()
281-
logv('Browser process has quit. Shutting down web server.. Pass --serve_after_close to keep serving the page even after the browser closes.')
276+
if browser_process:
277+
browser_quit_code = browser_process.poll()
278+
if not emrun_options.serve_after_close and browser_quit_code != None:
279+
if not have_received_messages:
280+
emrun_options.serve_after_close = True
281+
logv('Warning: emrun got detached from the target browser process (the process quit with code ' + str(browser_quit_code) + '). Cannot detect when user closes the browser. Behaving as if --serve_after_close was passed in.')
282+
if not emrun_options.browser:
283+
logv('Try passing the --browser=/path/to/browser option to avoid this from occurring. See https://github.com/kripken/emscripten/issues/3234 for more discussion.')
284+
else:
285+
self.shutdown()
286+
logv('Browser process has quit. Shutting down web server.. Pass --serve_after_close to keep serving the page even after the browser closes.')
282287

283288
# Serve HTTP
284289
self.handle_request()
@@ -356,6 +361,7 @@ class HTTPHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
356361
self.send_header("Content-Length", str(fs[6]))
357362
self.send_header("Last-Modified", self.date_time_string(fs.st_mtime))
358363
self.send_header('Cache-Control','no-cache, must-revalidate')
364+
self.send_header('Connection','close')
359365
self.send_header('Expires','-1')
360366
self.end_headers()
361367
page_last_served_time = tick()
@@ -424,6 +430,7 @@ class HTTPHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
424430
self.send_response(200)
425431
self.send_header("Content-type", "text/plain")
426432
self.send_header('Cache-Control','no-cache, must-revalidate')
433+
self.send_header('Connection','close')
427434
self.send_header('Expires','-1')
428435
self.end_headers()
429436
self.wfile.write('OK')
@@ -1020,7 +1027,15 @@ def main():
10201027
browser = [ADB, 'shell', 'am', 'start', '-a', 'android.intent.action.VIEW', '-n', browser_app, '-d', url]
10211028
processname_killed_atexit = browser_app[:browser_app.find('/')]
10221029
else: #Launching a web page on local system.
1030+
if options.browser:
1031+
# Be resilient to quotes and whitespace
1032+
options.browser = options.browser.strip()
1033+
if (options.browser.startswith('"') and options.browser.endswith('"')) or (options.browser.startswith("'") and options.browser.endswith("'")):
1034+
options.browser = options.browser[1:-1].strip()
10231035
browser = find_browser(str(options.browser))
1036+
if not browser:
1037+
loge('Unable to find browser "' + str(options.browser) + '"! Check the correctness of the passed --browser=xxx parameter!')
1038+
return 1
10241039
browser_exe = browser[0]
10251040
browser_args = []
10261041

@@ -1100,17 +1115,19 @@ def main():
11001115
if options.android:
11011116
browser_process = None
11021117

1103-
if browser_process and browser_process.poll() == None:
1104-
options.serve_after_close = True
1105-
logv('Warning: emrun got detached from the target browser process. Cannot detect when user closes the browser. Behaving as if --serve_after_close was passed in.')
1106-
if not options.browser:
1107-
logv('Try passing the --browser=/path/to/browser option to avoid this from occurring. See https://github.com/kripken/emscripten/issues/3234 for more discussion.')
1118+
if browser_process:
1119+
premature_quit_code = browser_process.poll()
1120+
if premature_quit_code != None:
1121+
options.serve_after_close = True
1122+
logv('Warning: emrun got immediately detached from the target browser process (the process quit with exit code ' + str(premature_quit_code) + '). Cannot detect when user closes the browser. Behaving as if --serve_after_close was passed in.')
1123+
if not options.browser:
1124+
logv('Try passing the --browser=/path/to/browser option to avoid this from occurring. See https://github.com/kripken/emscripten/issues/3234 for more discussion.')
11081125

11091126
if not options.no_server:
11101127
try:
11111128
httpd.serve_forever()
11121129
except KeyboardInterrupt:
1113-
httpd.server_close()
1130+
pass
11141131
httpd.server_close()
11151132

11161133
logv('Closed web server.')

0 commit comments

Comments
 (0)