Index: remoting/host/remoting_me2me_host.cc |
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc |
index be25fa363bd9e0e28aa3ef1fa00777313f1a5ae9..2231d357f677182fc56c88d371a4513693a010de 100644 |
--- a/remoting/host/remoting_me2me_host.cc |
+++ b/remoting/host/remoting_me2me_host.cc |
@@ -249,8 +249,25 @@ class HostProcess |
} |
#if defined(OS_MACOSX) || defined(OS_WIN) |
- host_user_interface_.reset(new HostUserInterface(context_.get())); |
-#endif |
+ bool want_user_interface = true; |
+ |
+#if defined(OS_MACOSX) |
+ // Don't try to display any UI on top of the system's login screen as this |
+ // is rejected by the Window Server on OS X 10.7.4, and prevents the |
+ // capturer from working (http://crbug.com/140984). |
+ base::mac::ScopedCFTypeRef<CFDictionaryRef> session( |
+ CGSessionCopyCurrentDictionary()); |
+ const void* logged_in = CFDictionaryGetValue(session, |
+ kCGSessionLoginDoneKey); |
+ if (logged_in != kCFBooleanTrue) { |
+ want_user_interface = false; |
+ } |
+#endif // OS_MACOSX |
+ |
+ if (want_user_interface) { |
+ host_user_interface_.reset(new HostUserInterface(context_.get())); |
+ } |
+#endif // OS_MACOSX || OS_WIN |
StartWatchingPolicy(); |
@@ -520,9 +537,11 @@ class HostProcess |
host_event_logger_ = HostEventLogger::Create(host_, kApplicationName); |
#if defined(OS_MACOSX) || defined(OS_WIN) |
- host_user_interface_->Start( |
- host_, base::Bind(&HostProcess::OnDisconnectRequested, |
- base::Unretained(this))); |
+ if (host_user_interface_.get()) { |
+ host_user_interface_->Start( |
+ host_, base::Bind(&HostProcess::OnDisconnectRequested, |
+ base::Unretained(this))); |
+ } |
#endif |
host_->Start(); |