| Index: remoting/host/event_executor_linux.cc
|
| diff --git a/remoting/host/event_executor_linux.cc b/remoting/host/event_executor_linux.cc
|
| index 31e43b98510ecb95422895bcb6361aff1012cc78..ff07af7e3a043766d8917922080109d77456264b 100644
|
| --- a/remoting/host/event_executor_linux.cc
|
| +++ b/remoting/host/event_executor_linux.cc
|
| @@ -34,7 +34,7 @@ using protocol::MouseEvent;
|
| // A class to generate events on Linux.
|
| class EventExecutorLinux : public EventExecutor {
|
| public:
|
| - EventExecutorLinux(MessageLoop* message_loop, Capturer* capturer);
|
| + EventExecutorLinux(MessageLoop* message_loop);
|
| virtual ~EventExecutorLinux();
|
|
|
| bool Init();
|
| @@ -61,8 +61,6 @@ class EventExecutorLinux : public EventExecutor {
|
| // X11 graphics context.
|
| Display* display_;
|
| Window root_window_;
|
| - int width_;
|
| - int height_;
|
|
|
| int test_event_base_;
|
| int test_error_base_;
|
| @@ -264,13 +262,10 @@ int ChromotocolKeycodeToX11Keysym(int32_t keycode) {
|
| return kUsVkeyToKeysym[keycode];
|
| }
|
|
|
| -EventExecutorLinux::EventExecutorLinux(MessageLoop* message_loop,
|
| - Capturer* capturer)
|
| +EventExecutorLinux::EventExecutorLinux(MessageLoop* message_loop)
|
| : message_loop_(message_loop),
|
| display_(XOpenDisplay(NULL)),
|
| - root_window_(BadValue),
|
| - width_(0),
|
| - height_(0) {
|
| + root_window_(BadValue) {
|
| }
|
|
|
| EventExecutorLinux::~EventExecutorLinux() {
|
| @@ -295,17 +290,6 @@ bool EventExecutorLinux::Init() {
|
| return false;
|
| }
|
|
|
| - // Grab the width and height so we can figure out if mouse moves are out of
|
| - // range.
|
| - XWindowAttributes root_attr;
|
| - // TODO(ajwong): Handle resolution changes.
|
| - if (!XGetWindowAttributes(display_, root_window_, &root_attr)) {
|
| - LOG(ERROR) << "Unable to get window attributes";
|
| - return false;
|
| - }
|
| -
|
| - width_ = root_attr.width;
|
| - height_ = root_attr.height;
|
| return true;
|
| }
|
|
|
| @@ -383,7 +367,6 @@ void EventExecutorLinux::InjectScrollWheelClicks(int button, int count) {
|
| XTestFakeButtonEvent(display_, button, true, CurrentTime);
|
| XTestFakeButtonEvent(display_, button, false, CurrentTime);
|
| }
|
| - XFlush(display_);
|
| }
|
|
|
| void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
|
| @@ -396,20 +379,11 @@ void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
|
| }
|
|
|
| if (event.has_x() && event.has_y()) {
|
| - if (event.x() < 0 || event.y() < 0 ||
|
| - event.x() > width_ || event.y() > height_) {
|
| - // A misbehaving client may send these. Drop events that are out of range.
|
| - // TODO(ajwong): How can we log this sanely? We don't want to DOS the
|
| - // server with a misbehaving client by logging like crazy.
|
| - return;
|
| - }
|
| -
|
| VLOG(3) << "Moving mouse to " << event.x()
|
| << "," << event.y();
|
| XTestFakeMotionEvent(display_, DefaultScreen(display_),
|
| event.x(), event.y(),
|
| CurrentTime);
|
| - XFlush(display_);
|
| }
|
|
|
| if (event.has_button() && event.has_button_down()) {
|
| @@ -426,7 +400,6 @@ void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
|
| << button_number;
|
| XTestFakeButtonEvent(display_, button_number, event.button_down(),
|
| CurrentTime);
|
| - XFlush(display_);
|
| }
|
|
|
| if (event.has_wheel_offset_y() && event.wheel_offset_y() != 0) {
|
| @@ -438,6 +411,8 @@ void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
|
| InjectScrollWheelClicks(HorizontalScrollWheelToX11ButtonNumber(dx),
|
| abs(dx));
|
| }
|
| +
|
| + XFlush(display_);
|
| }
|
|
|
| } // namespace
|
| @@ -445,10 +420,9 @@ void EventExecutorLinux::InjectMouseEvent(const MouseEvent& event) {
|
| scoped_ptr<protocol::HostEventStub> EventExecutor::Create(
|
| MessageLoop* message_loop, Capturer* capturer) {
|
| scoped_ptr<EventExecutorLinux> executor(
|
| - new EventExecutorLinux(message_loop, capturer));
|
| - if (!executor->Init()) {
|
| - executor.reset(NULL);
|
| - }
|
| + new EventExecutorLinux(message_loop));
|
| + if (!executor->Init())
|
| + return scoped_ptr<protocol::HostEventStub>(NULL);
|
| return executor.PassAs<protocol::HostEventStub>();
|
| }
|
|
|
|
|