Index: remoting/host/local_input_monitor_win.cc |
diff --git a/remoting/host/local_input_monitor_win.cc b/remoting/host/local_input_monitor_win.cc |
index 85a20306a444b1cb6031fa4146d22b0d75937dce..c2d43e44d5c6aa2163604df57a4e34fb92c2b674 100644 |
--- a/remoting/host/local_input_monitor_win.cc |
+++ b/remoting/host/local_input_monitor_win.cc |
@@ -12,7 +12,6 @@ |
#include "base/stringprintf.h" |
#include "base/threading/non_thread_safe.h" |
#include "base/win/wrapped_window_proc.h" |
-#include "remoting/host/mouse_move_observer.h" |
#include "third_party/skia/include/core/SkPoint.h" |
namespace remoting { |
@@ -30,21 +29,19 @@ class LocalInputMonitorWin : public base::NonThreadSafe, |
public: |
LocalInputMonitorWin( |
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner); |
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
+ SessionController::Delegate* delegate); |
~LocalInputMonitorWin(); |
- virtual void Start(MouseMoveObserver* mouse_move_observer, |
- const base::Closure& disconnect_callback) OVERRIDE; |
- virtual void Stop() OVERRIDE; |
- |
private: |
// The actual implementation resides in LocalInputMonitorWin::Core class. |
class Core : public base::RefCountedThreadSafe<Core> { |
public: |
Core(scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner); |
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
+ SessionController::Delegate* delegate); |
- void Start(MouseMoveObserver* mouse_move_observer); |
+ void Start(); |
void Stop(); |
private: |
@@ -54,7 +51,7 @@ class LocalInputMonitorWin : public base::NonThreadSafe, |
void StartOnUiThread(); |
void StopOnUiThread(); |
- // Posts OnLocalMouseMoved() notification to |mouse_move_observer_| on |
+ // Posts OnLocalMouseMoved() notification to |delegate_| on |
// the |caller_task_runner_| thread. |
void OnLocalMouseMoved(const SkIPoint& position); |
@@ -83,8 +80,8 @@ class LocalInputMonitorWin : public base::NonThreadSafe, |
// Handle of the input window. |
HWND window_; |
- // Observer to dispatch mouse event notifications to. |
- MouseMoveObserver* mouse_move_observer_; |
+ // Points to the object receiving mouse event notifications. |
+ SessionController::Delegate* delegate_; |
DISALLOW_COPY_AND_ASSIGN(Core); |
}; |
@@ -96,39 +93,32 @@ class LocalInputMonitorWin : public base::NonThreadSafe, |
LocalInputMonitorWin::LocalInputMonitorWin( |
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) |
- : core_(new Core(caller_task_runner, ui_task_runner)) { |
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
+ SessionController::Delegate* delegate) |
+ : core_(new Core(caller_task_runner, ui_task_runner, delegate)) { |
+ core_->Start(); |
} |
LocalInputMonitorWin::~LocalInputMonitorWin() { |
-} |
- |
-void LocalInputMonitorWin::Start(MouseMoveObserver* mouse_move_observer, |
- const base::Closure& disconnect_callback) { |
- core_->Start(mouse_move_observer); |
-} |
- |
-void LocalInputMonitorWin::Stop() { |
core_->Stop(); |
} |
LocalInputMonitorWin::Core::Core( |
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) |
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
+ SessionController::Delegate* delegate) |
: caller_task_runner_(caller_task_runner), |
ui_task_runner_(ui_task_runner), |
atom_(0), |
instance_(NULL), |
window_(NULL), |
- mouse_move_observer_(NULL) { |
+ delegate_(delegate) { |
+ DCHECK(delegate_); |
} |
-void LocalInputMonitorWin::Core::Start(MouseMoveObserver* mouse_move_observer) { |
+void LocalInputMonitorWin::Core::Start() { |
DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
- DCHECK(!mouse_move_observer_); |
- DCHECK(mouse_move_observer); |
- mouse_move_observer_ = mouse_move_observer; |
ui_task_runner_->PostTask(FROM_HERE, |
base::Bind(&Core::StartOnUiThread, this)); |
} |
@@ -136,7 +126,7 @@ void LocalInputMonitorWin::Core::Start(MouseMoveObserver* mouse_move_observer) { |
void LocalInputMonitorWin::Core::Stop() { |
DCHECK(caller_task_runner_->BelongsToCurrentThread()); |
- mouse_move_observer_ = NULL; |
+ delegate_ = NULL; |
ui_task_runner_->PostTask(FROM_HERE, base::Bind(&Core::StopOnUiThread, this)); |
} |
@@ -144,7 +134,7 @@ LocalInputMonitorWin::Core::~Core() { |
DCHECK(!atom_); |
DCHECK(!instance_); |
DCHECK(!window_); |
- DCHECK(!mouse_move_observer_); |
+ DCHECK(!delegate_); |
} |
void LocalInputMonitorWin::Core::StartOnUiThread() { |
@@ -196,8 +186,8 @@ void LocalInputMonitorWin::Core::OnLocalMouseMoved(const SkIPoint& position) { |
return; |
} |
- if (mouse_move_observer_) |
- mouse_move_observer_->OnLocalMouseMoved(position); |
+ if (delegate_) |
+ delegate_->OnLocalMouseMoved(position); |
} |
LRESULT LocalInputMonitorWin::Core::OnCreate(HWND hwnd) { |
@@ -291,9 +281,11 @@ LRESULT CALLBACK LocalInputMonitorWin::Core::WindowProc( |
scoped_ptr<LocalInputMonitor> LocalInputMonitor::Create( |
scoped_refptr<base::SingleThreadTaskRunner> caller_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> input_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) { |
+ scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
+ SessionController::Delegate* delegate) { |
return scoped_ptr<LocalInputMonitor>( |
- new LocalInputMonitorWin(caller_task_runner, ui_task_runner)); |
+ new LocalInputMonitorWin(caller_task_runner, ui_task_runner, |
+ delegate)); |
} |
} // namespace remoting |