Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Unified Diff: ui/events/platform/x11/x11_event_source_glib.cc

Issue 1602173005: Add PlatformWindow/Event related code for Ozone X11. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix deps problem. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/events/platform/x11/x11_event_source_glib.cc
diff --git a/ui/events/platform/x11/x11_event_source_glib.cc b/ui/events/platform/x11/x11_event_source_glib.cc
index 21516010811a647cc1a1e22c6505b107a636fb8e..95ecc5915599c98395dfe53dd851a51e1b828d3a 100644
--- a/ui/events/platform/x11/x11_event_source_glib.cc
+++ b/ui/events/platform/x11/x11_event_source_glib.cc
@@ -2,8 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "base/macros.h"
-#include "ui/events/platform/x11/x11_event_source.h"
+#include "ui/events/platform/x11/x11_event_source_glib.h"
#include <glib.h>
#include <X11/Xlib.h>
@@ -48,52 +47,46 @@ GSourceFuncs XSourceFuncs = {
NULL
};
-class X11EventSourceGlib : public X11EventSource {
- public:
- explicit X11EventSourceGlib(XDisplay* display)
- : X11EventSource(display),
- x_source_(NULL) {
- InitXSource(ConnectionNumber(display));
- }
-
- ~X11EventSourceGlib() override {
- g_source_destroy(x_source_);
- g_source_unref(x_source_);
- }
-
- private:
- void InitXSource(int fd) {
- CHECK(!x_source_);
- CHECK(display()) << "Unable to get connection to X server";
-
- x_poll_.reset(new GPollFD());
- x_poll_->fd = fd;
- x_poll_->events = G_IO_IN;
- x_poll_->revents = 0;
-
- GLibX11Source* glib_x_source = static_cast<GLibX11Source*>
- (g_source_new(&XSourceFuncs, sizeof(GLibX11Source)));
- glib_x_source->display = display();
- glib_x_source->poll_fd = x_poll_.get();
-
- x_source_ = glib_x_source;
- g_source_add_poll(x_source_, x_poll_.get());
- g_source_set_can_recurse(x_source_, TRUE);
- g_source_set_callback(x_source_, NULL, this, NULL);
- g_source_attach(x_source_, g_main_context_default());
- }
-
- // The GLib event source for X events.
- GSource* x_source_;
-
- // The poll attached to |x_source_|.
- scoped_ptr<GPollFD> x_poll_;
-
- DISALLOW_COPY_AND_ASSIGN(X11EventSourceGlib);
-};
-
} // namespace
+X11EventSourceGlib::X11EventSourceGlib(XDisplay* display)
+ : X11EventSource(display) {
+ InitXSource(ConnectionNumber(display));
+}
+
+X11EventSourceGlib::~X11EventSourceGlib() {
+ g_source_destroy(x_source_);
+ g_source_unref(x_source_);
+}
+
+uint32_t X11EventSourceGlib::DispatchEvent(XEvent* xevent) {
+ uint32_t action = PlatformEventSource::DispatchEvent(xevent);
+ PostDispatchEvent(xevent);
+ return action;
+}
+
+void X11EventSourceGlib::InitXSource(int fd) {
+ DCHECK(!x_source_);
+ DCHECK(display()) << "Unable to get connection to X server";
+
+ x_poll_.reset(new GPollFD());
+ x_poll_->fd = fd;
+ x_poll_->events = G_IO_IN;
+ x_poll_->revents = 0;
+
+ GLibX11Source* glib_x_source = static_cast<GLibX11Source*>(
+ g_source_new(&XSourceFuncs, sizeof(GLibX11Source)));
+ glib_x_source->display = display();
+ glib_x_source->poll_fd = x_poll_.get();
+
+ x_source_ = glib_x_source;
+ g_source_add_poll(x_source_, x_poll_.get());
+ g_source_set_can_recurse(x_source_, TRUE);
+ g_source_set_callback(x_source_, NULL, this, NULL);
+ g_source_attach(x_source_, g_main_context_default());
+}
+
+// static
scoped_ptr<PlatformEventSource> PlatformEventSource::CreateDefault() {
return make_scoped_ptr(new X11EventSourceGlib(gfx::GetXDisplay()));
}

Powered by Google App Engine
This is Rietveld 408576698