Index: remoting/host/event_executor_win.cc |
diff --git a/remoting/host/event_executor_win.cc b/remoting/host/event_executor_win.cc |
index 283d4aa8f84ec927e75850c2e96b341cf2973a60..bfaa9612f30f5d1ba66a9ac11439c3ecf0796a0b 100644 |
--- a/remoting/host/event_executor_win.cc |
+++ b/remoting/host/event_executor_win.cc |
@@ -5,8 +5,10 @@ |
#include "remoting/host/event_executor_win.h" |
#include <windows.h> |
+ |
#include "app/keyboard_codes.h" |
#include "base/stl_util-inl.h" |
+#include "base/task.h" |
#include "remoting/host/capturer.h" |
// TODO(hclam): Should not include internal.pb.h here. |
#include "remoting/proto/internal.pb.h" |
@@ -14,35 +16,36 @@ |
namespace remoting { |
EventExecutorWin::EventExecutorWin(Capturer* capturer) |
- : EventExecutor(capturer) { |
+ : capturer_(capturer) { |
} |
EventExecutorWin::~EventExecutorWin() { |
} |
-void EventExecutorWin::HandleInputEvent(ChromotingClientMessage* msg) { |
- if (msg->has_mouse_set_position_event()) { |
- HandleMouseSetPosition(msg); |
- } else if (msg->has_mouse_move_event()) { |
- HandleMouseMove(msg); |
- } else if (msg->has_mouse_wheel_event()) { |
- HandleMouseWheel(msg); |
- } else if (msg->has_mouse_down_event()) { |
- HandleMouseButtonDown(msg); |
- } else if (msg->has_mouse_up_event()) { |
- HandleMouseButtonUp(msg); |
- } else if (msg->has_key_event()) { |
- HandleKey(msg); |
- } |
- delete msg; |
+void EventExecutorMac::InjectKeyEvent(const KeyEvent* event, Task* done) { |
awong
2010/11/10 19:36:54
You should talk to Dave about this.
I would be ha
|
+ HandleKey(event->key(), event->pressed()); |
+ done->Run(); |
+ delete done; |
} |
-void EventExecutorWin::HandleMouseSetPosition(ChromotingClientMessage* msg) { |
- int x = msg->mouse_set_position_event().x(); |
- int y = msg->mouse_set_position_event().y(); |
- int width = msg->mouse_set_position_event().width(); |
- int height = msg->mouse_set_position_event().height(); |
+void EventExecutorMac::InjectMouseEvent(const MouseEvent* event, Task* done) { |
+ if (event->has_mouse_x()) { |
+ HandleMouseSetPosition(event->mouse_x(), event->mouse_y(), |
+ event->mouse_width(), event->mouse_height()); |
+ } else if (event->has_wheel_offset_x()) { |
+ HandleMouseWheel(event->wheel_offset_x(), event->wheel_offset_y()); |
+ } else if (event->has_button()) { |
+ if (event->button_down()) |
+ HandleMouseButtonDown(event->button()); |
+ else |
+ HandleMouseButtonUp(event->button()); |
+ } |
+ done->Run(); |
+ delete done; |
+} |
+void EventExecutorWin::HandleMouseSetPosition( |
+ int x, int y, int width, int height) { |
// Get width and height from the capturer if they are missing from the |
// message. |
if (width == 0 || height == 0) { |
@@ -62,23 +65,23 @@ void EventExecutorWin::HandleMouseSetPosition(ChromotingClientMessage* msg) { |
SendInput(1, &input, sizeof(INPUT)); |
} |
-void EventExecutorWin::HandleMouseMove(ChromotingClientMessage* msg) { |
+void EventExecutorWin::HandleMouseMove(int offset_x, int offset_y) { |
INPUT input; |
input.type = INPUT_MOUSE; |
input.mi.time = 0; |
- input.mi.dx = msg->mouse_move_event().offset_x(); |
- input.mi.dy = msg->mouse_move_event().offset_y(); |
+ input.mi.dx = offset_x; |
+ input.mi.dy = offset_y; |
input.mi.dwFlags = MOUSEEVENTF_MOVE; |
SendInput(1, &input, sizeof(INPUT)); |
} |
-void EventExecutorWin::HandleMouseWheel(ChromotingClientMessage* msg) { |
+void EventExecutorWin::HandleMouseWheel(int offset_x, int offset_y) { |
INPUT input; |
input.type = INPUT_MOUSE; |
input.mi.time = 0; |
- int dx = msg->mouse_wheel_event().offset_x(); |
- int dy = msg->mouse_wheel_event().offset_y(); |
+ int dx = offset_x; |
+ int dy = offset_y; |
if (dx != 0) { |
input.mi.mouseData = dx; |
@@ -92,14 +95,13 @@ void EventExecutorWin::HandleMouseWheel(ChromotingClientMessage* msg) { |
} |
} |
-void EventExecutorWin::HandleMouseButtonDown(ChromotingClientMessage* msg) { |
+void EventExecutorWin::HandleMouseButtonDown(MouseButton button) { |
INPUT input; |
input.type = INPUT_MOUSE; |
input.mi.time = 0; |
input.mi.dx = 0; |
input.mi.dy = 0; |
- MouseButton button = msg->mouse_down_event().button(); |
if (button == MouseButtonLeft) { |
input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN; |
} else if (button == MouseButtonMiddle) { |
@@ -113,14 +115,13 @@ void EventExecutorWin::HandleMouseButtonDown(ChromotingClientMessage* msg) { |
SendInput(1, &input, sizeof(INPUT)); |
} |
-void EventExecutorWin::HandleMouseButtonUp(ChromotingClientMessage* msg) { |
+void EventExecutorWin::HandleMouseButtonUp(MouseButtom button) { |
INPUT input; |
input.type = INPUT_MOUSE; |
input.mi.time = 0; |
input.mi.dx = 0; |
input.mi.dy = 0; |
- MouseButton button = msg->mouse_down_event().button(); |
if (button == MouseButtonLeft) { |
input.mi.dwFlags = MOUSEEVENTF_LEFTUP; |
} else if (button == MouseButtonMiddle) { |
@@ -134,10 +135,7 @@ void EventExecutorWin::HandleMouseButtonUp(ChromotingClientMessage* msg) { |
SendInput(1, &input, sizeof(INPUT)); |
} |
-void EventExecutorWin::HandleKey(ChromotingClientMessage* msg) { |
- int key = msg->key_event().key(); |
- bool down = msg->key_event().pressed(); |
- |
+void EventExecutorWin::HandleKey(int key, bool down) { |
// Calculate scan code from virtual key. |
HKL hkl = GetKeyboardLayout(0); |
int scan_code = MapVirtualKeyEx(key, MAPVK_VK_TO_VSC_EX, hkl); |