53 lines
1.7 KiB
C++
53 lines
1.7 KiB
C++
// 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.
|
|
|
|
#ifndef BASE_MESSAGE_LOOP_MESSAGE_PUMP_OZONE_H_
|
|
#define BASE_MESSAGE_LOOP_MESSAGE_PUMP_OZONE_H_
|
|
|
|
#include "base/memory/scoped_ptr.h"
|
|
#include "base/memory/scoped_vector.h"
|
|
#include "base/message_loop/message_pump_dispatcher.h"
|
|
#include "base/message_loop/message_pump_libevent.h"
|
|
#include "base/message_loop/message_pump_observer.h"
|
|
#include "base/observer_list.h"
|
|
|
|
namespace base {
|
|
|
|
// This class implements a message-pump for processing events from input devices
|
|
// Refer to MessagePump for further documentation.
|
|
class BASE_EXPORT MessagePumpOzone : public MessagePumpLibevent,
|
|
public MessagePumpDispatcher {
|
|
public:
|
|
MessagePumpOzone();
|
|
virtual ~MessagePumpOzone();
|
|
|
|
// Returns the UI message pump.
|
|
static MessagePumpOzone* Current();
|
|
|
|
// Add/Remove the root window dispatcher.
|
|
void AddDispatcherForRootWindow(MessagePumpDispatcher* dispatcher);
|
|
void RemoveDispatcherForRootWindow(MessagePumpDispatcher* dispatcher);
|
|
|
|
void RunWithDispatcher(Delegate* delegate, MessagePumpDispatcher* dispatcher);
|
|
|
|
// Add / remove an Observer, which will start receiving notifications
|
|
// immediately.
|
|
void AddObserver(MessagePumpObserver* observer);
|
|
void RemoveObserver(MessagePumpObserver* observer);
|
|
|
|
// Overridden from MessagePumpDispatcher.
|
|
virtual bool Dispatch(const NativeEvent& event) OVERRIDE;
|
|
|
|
private:
|
|
std::vector<MessagePumpDispatcher*> dispatcher_;
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(MessagePumpOzone);
|
|
};
|
|
|
|
typedef MessagePumpOzone MessagePumpForUI;
|
|
|
|
} // namespace base
|
|
|
|
#endif // BASE_MESSAGE_LOOP_MESSAGE_PUMP_OZONE_H_
|