| Index: remoting/host/desktop_environment.cc
|
| diff --git a/remoting/host/desktop_environment.cc b/remoting/host/desktop_environment.cc
|
| index 14e770e6b493987a43031d85b81e5c5ed4249e18..a011cebd22216b342127c19d7be69d2857dd0b93 100644
|
| --- a/remoting/host/desktop_environment.cc
|
| +++ b/remoting/host/desktop_environment.cc
|
| @@ -25,19 +25,20 @@ namespace remoting {
|
| // message queue.
|
| class UIThreadProxy : public base::RefCountedThreadSafe<UIThreadProxy> {
|
| public:
|
| - UIThreadProxy(ChromotingHostContext* context)
|
| - : context_(context) {
|
| + UIThreadProxy(base::MessageLoopProxy* message_loop)
|
| + : message_loop_(message_loop) {
|
| }
|
|
|
| void Detach() {
|
| - DCHECK(context_->IsUIThread());
|
| - context_ = NULL;
|
| + DCHECK(message_loop_->BelongsToCurrentThread());
|
| + message_loop_ = NULL;
|
| }
|
|
|
| void CallOnUIThread(const tracked_objects::Location& from_here,
|
| const base::Closure& closure) {
|
| - if (context_) {
|
| - context_->PostTaskToUIThread(from_here, base::Bind(
|
| + scoped_refptr<base::MessageLoopProxy> message_loop = message_loop_;
|
| + if (message_loop) {
|
| + message_loop->PostTask(from_here, base::Bind(
|
| &UIThreadProxy::CallClosure, this, closure));
|
| }
|
| }
|
| @@ -45,8 +46,9 @@ class UIThreadProxy : public base::RefCountedThreadSafe<UIThreadProxy> {
|
| void CallOnUIThreadDelayed(const tracked_objects::Location& from_here,
|
| const base::Closure& closure,
|
| int delay_ms) {
|
| - if (context_) {
|
| - context_->PostDelayedTaskToUIThread(from_here, base::Bind(
|
| + scoped_refptr<base::MessageLoopProxy> message_loop = message_loop_;
|
| + if (message_loop) {
|
| + message_loop->PostDelayedTask(from_here, base::Bind(
|
| &UIThreadProxy::CallClosure, this, closure), delay_ms);
|
| }
|
| }
|
| @@ -57,11 +59,11 @@ class UIThreadProxy : public base::RefCountedThreadSafe<UIThreadProxy> {
|
| virtual ~UIThreadProxy() { }
|
|
|
| void CallClosure(const base::Closure& closure) {
|
| - if (context_)
|
| + if (message_loop_)
|
| closure.Run();
|
| }
|
|
|
| - ChromotingHostContext* context_;
|
| + scoped_refptr<base::MessageLoopProxy> message_loop_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(UIThreadProxy);
|
| };
|
| @@ -98,14 +100,14 @@ DesktopEnvironment::DesktopEnvironment(ChromotingHostContext* context,
|
| local_input_monitor_(local_input_monitor),
|
| is_monitoring_local_inputs_(false),
|
| continue_timer_started_(false),
|
| - proxy_(new UIThreadProxy(context)) {
|
| + proxy_(new UIThreadProxy(context->ui_message_loop())) {
|
| }
|
|
|
| DesktopEnvironment::~DesktopEnvironment() {
|
| }
|
|
|
| void DesktopEnvironment::Shutdown() {
|
| - DCHECK(context_->IsUIThread());
|
| + DCHECK(context_->ui_message_loop()->BelongsToCurrentThread());
|
|
|
| MonitorLocalInputs(false);
|
| ShowDisconnectWindow(false, std::string());
|
| @@ -131,7 +133,7 @@ void DesktopEnvironment::OnPause(bool pause) {
|
| }
|
|
|
| void DesktopEnvironment::ProcessOnConnect(const std::string& username) {
|
| - DCHECK(context_->IsUIThread());
|
| + DCHECK(context_->ui_message_loop()->BelongsToCurrentThread());
|
|
|
| MonitorLocalInputs(true);
|
| ShowDisconnectWindow(true, username);
|
| @@ -139,7 +141,7 @@ void DesktopEnvironment::ProcessOnConnect(const std::string& username) {
|
| }
|
|
|
| void DesktopEnvironment::ProcessOnLastDisconnect() {
|
| - DCHECK(context_->IsUIThread());
|
| + DCHECK(context_->ui_message_loop()->BelongsToCurrentThread());
|
|
|
| MonitorLocalInputs(false);
|
| ShowDisconnectWindow(false, std::string());
|
| @@ -152,7 +154,7 @@ void DesktopEnvironment::ProcessOnPause(bool pause) {
|
| }
|
|
|
| void DesktopEnvironment::MonitorLocalInputs(bool enable) {
|
| - DCHECK(context_->IsUIThread());
|
| + DCHECK(context_->ui_message_loop()->BelongsToCurrentThread());
|
|
|
| if (enable == is_monitoring_local_inputs_)
|
| return;
|
| @@ -166,7 +168,7 @@ void DesktopEnvironment::MonitorLocalInputs(bool enable) {
|
|
|
| void DesktopEnvironment::ShowDisconnectWindow(bool show,
|
| const std::string& username) {
|
| - DCHECK(context_->IsUIThread());
|
| + DCHECK(context_->ui_message_loop()->BelongsToCurrentThread());
|
|
|
| if (show) {
|
| disconnect_window_->Show(host_, username);
|
| @@ -176,7 +178,7 @@ void DesktopEnvironment::ShowDisconnectWindow(bool show,
|
| }
|
|
|
| void DesktopEnvironment::ShowContinueWindow(bool show) {
|
| - DCHECK(context_->IsUIThread());
|
| + DCHECK(context_->ui_message_loop()->BelongsToCurrentThread());
|
|
|
| if (show) {
|
| continue_window_->Show(host_);
|
| @@ -186,7 +188,7 @@ void DesktopEnvironment::ShowContinueWindow(bool show) {
|
| }
|
|
|
| void DesktopEnvironment::StartContinueWindowTimer(bool start) {
|
| - DCHECK(context_->IsUIThread());
|
| + DCHECK(context_->ui_message_loop()->BelongsToCurrentThread());
|
|
|
| if (start && ! continue_timer_started_) {
|
| continue_timer_target_time_ = base::Time::Now() +
|
| @@ -201,7 +203,7 @@ void DesktopEnvironment::StartContinueWindowTimer(bool start) {
|
| }
|
|
|
| void DesktopEnvironment::ContinueWindowTimerFunc() {
|
| - DCHECK(context_->IsUIThread());
|
| + DCHECK(context_->ui_message_loop()->BelongsToCurrentThread());
|
|
|
| // This function may be called prematurely if timer was stopped and
|
| // then started again. In that case we just ignore this call.
|
|
|