Index: remoting/client/x11_input_handler.cc |
=================================================================== |
--- remoting/client/x11_input_handler.cc (revision 0) |
+++ remoting/client/x11_input_handler.cc (revision 0) |
@@ -0,0 +1,62 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "remoting/client/x11_input_handler.h" |
+ |
+#include "base/message_loop.h" |
+#include "remoting/client/client_context.h" |
+#include "remoting/client/x11_view.h" |
+#include "remoting/jingle_glue/jingle_thread.h" |
+ |
+// Include Xlib at the end because it clashes with ClientMessage defined in |
+// the protocol buffer. |
+#include <X11/Xlib.h> |
+ |
+namespace remoting { |
+ |
+X11InputHandler::X11InputHandler(ClientContext* context, |
+ ChromotingView* view) |
+ : context_(context), |
+ view_(view) { |
+} |
+ |
+X11InputHandler::~X11InputHandler() { |
+} |
+ |
+void X11InputHandler::Initialize() { |
+ ScheduleX11EventHandler(); |
+} |
+ |
+void X11InputHandler::DoProcessX11Events() { |
+ DCHECK_EQ(context_->jingle_thread()->message_loop(), MessageLoop::current()); |
+ Display* display = static_cast<X11View*>(view_)->display(); |
+ if (XPending(display)) { |
+ XEvent e; |
+ XNextEvent(display, &e); |
+ if (e.type == Expose) { |
+ // Tell the view to paint again. |
+ view_->Paint(); |
+ } else if (e.type == ButtonPress) { |
+ // TODO(hclam): Implement. |
+ NOTIMPLEMENTED(); |
+ } else { |
+ // TODO(hclam): Implement. |
+ NOTIMPLEMENTED(); |
+ } |
+ } |
+ |
+ // Schedule the next event handler. |
+ ScheduleX11EventHandler(); |
+} |
+ |
+void X11InputHandler::ScheduleX11EventHandler() { |
+ // Schedule a delayed task to process X11 events in 10ms. |
+ static const int kProcessEventsInterval = 10; |
+ context_->jingle_thread()->message_loop()->PostDelayedTask( |
+ FROM_HERE, |
+ NewRunnableMethod(this, &X11InputHandler::DoProcessX11Events), |
+ kProcessEventsInterval); |
+} |
+ |
+} // namespace remoting |
Property changes on: remoting/client/x11_input_handler.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |