1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/message_loop/message_pump_ozone.h" 6 7 #include "base/logging.h" 8 #include "base/message_loop/message_loop.h" 9 10 namespace base { 11 12 MessagePumpOzone::MessagePumpOzone() 13 : MessagePumpLibevent() { 14 } 15 16 MessagePumpOzone::~MessagePumpOzone() { 17 } 18 19 void MessagePumpOzone::AddObserver(MessagePumpObserver* /* observer */) { 20 NOTIMPLEMENTED(); 21 } 22 23 void MessagePumpOzone::RemoveObserver(MessagePumpObserver* /* observer */) { 24 NOTIMPLEMENTED(); 25 } 26 27 // static 28 MessagePumpOzone* MessagePumpOzone::Current() { 29 MessageLoopForUI* loop = MessageLoopForUI::current(); 30 return static_cast<MessagePumpOzone*>(loop->pump_ui()); 31 } 32 33 void MessagePumpOzone::AddDispatcherForRootWindow( 34 MessagePumpDispatcher* dispatcher) { 35 // Only one root window is supported. 36 DCHECK(dispatcher_.size() == 0); 37 dispatcher_.insert(dispatcher_.begin(),dispatcher); 38 } 39 40 void MessagePumpOzone::RemoveDispatcherForRootWindow( 41 MessagePumpDispatcher* dispatcher) { 42 DCHECK(dispatcher_.size() == 1); 43 dispatcher_.pop_back(); 44 } 45 46 bool MessagePumpOzone::Dispatch(const NativeEvent& dev) { 47 if (dispatcher_.size() > 0) 48 return dispatcher_[0]->Dispatch(dev); 49 else 50 return true; 51 } 52 53 // This code assumes that the caller tracks the lifetime of the |dispatcher|. 54 void MessagePumpOzone::RunWithDispatcher( 55 Delegate* delegate, MessagePumpDispatcher* dispatcher) { 56 dispatcher_.push_back(dispatcher); 57 Run(delegate); 58 dispatcher_.pop_back(); 59 } 60 61 } // namespace base 62