Index: sky/framework/embedder.dart |
diff --git a/sky/framework/embedder.dart b/sky/framework/embedder.dart |
index d91f8c4e15b1c74b95d9d06bb615a65382e12c5a..4a87d20d8d4f2473af1688b1b654c476b8583760 100644 |
--- a/sky/framework/embedder.dart |
+++ b/sky/framework/embedder.dart |
@@ -15,9 +15,20 @@ final _EmbedderImpl embedder = new _EmbedderImpl(); |
class _EmbedderImpl { |
ApplicationConnection _connection; |
ServiceRegistryProxy _serviceRegistry; |
+ ShellProxy _shell; |
+ bool _internalsHasNoShell; |
- final ShellProxy shell = new ShellProxy.fromHandle( |
- new core.MojoHandle(internals.takeShellProxyHandle())); |
+ ShellProxy get shell { |
+ if (_internalsHasNoShell || _shell != null) return _shell; |
+ |
+ try { |
+ _shell = new ShellProxy.fromHandle( |
+ new core.MojoHandle(internals.takeShellProxyHandle())); |
+ } catch (e) { |
+ _internalsHasNoShell = true; |
+ } |
+ return _shell; |
+ } |
ApplicationConnection get connection { |
if (_connection == null) { |