summaryrefslogtreecommitdiffstats
path: root/base/message_pump_ozone.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/message_pump_ozone.cc')
-rw-r--r--base/message_pump_ozone.cc61
1 files changed, 61 insertions, 0 deletions
diff --git a/base/message_pump_ozone.cc b/base/message_pump_ozone.cc
new file mode 100644
index 0000000..ca7f45d
--- /dev/null
+++ b/base/message_pump_ozone.cc
@@ -0,0 +1,61 @@
+// Copyright (c) 2013 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 "base/message_pump_ozone.h"
+
+#include "base/logging.h"
+#include "base/message_loop.h"
+
+namespace base {
+
+MessagePumpOzone::MessagePumpOzone()
+ : MessagePumpLibevent() {
+}
+
+MessagePumpOzone::~MessagePumpOzone() {
+}
+
+void MessagePumpOzone::AddObserver(MessagePumpObserver* /* observer */) {
+ NOTIMPLEMENTED();
+}
+
+void MessagePumpOzone::RemoveObserver(MessagePumpObserver* /* observer */) {
+ NOTIMPLEMENTED();
+}
+
+// static
+MessagePumpOzone* MessagePumpOzone::Current() {
+ MessageLoopForUI* loop = MessageLoopForUI::current();
+ return static_cast<MessagePumpOzone*>(loop->pump_ui());
+}
+
+void MessagePumpOzone::AddDispatcherForRootWindow(
+ MessagePumpDispatcher* dispatcher) {
+ // Only one root window is supported.
+ DCHECK(dispatcher_.size() == 0);
+ dispatcher_.insert(dispatcher_.begin(),dispatcher);
+}
+
+void MessagePumpOzone::RemoveDispatcherForRootWindow(
+ MessagePumpDispatcher* dispatcher) {
+ DCHECK(dispatcher_.size() == 1);
+ dispatcher_.pop_back();
+}
+
+bool MessagePumpOzone::Dispatch(const base::NativeEvent& dev) {
+ if (dispatcher_.size() > 0)
+ return dispatcher_[0]->Dispatch(dev);
+ else
+ return true;
+}
+
+// This code assumes that the caller tracks the lifetime of the |dispatcher|.
+void MessagePumpOzone::RunWithDispatcher(
+ Delegate* delegate, MessagePumpDispatcher* dispatcher) {
+ dispatcher_.push_back(dispatcher);
+ Run(delegate);
+ dispatcher_.pop_back();
+}
+
+} // namespace base