Chromium Code Reviews| Index: ui/wayland/wayland_message_pump.h |
| diff --git a/ui/wayland/wayland_message_pump.h b/ui/wayland/wayland_message_pump.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..86517a8261765a8c76da553dcfa6c0f66e9689e8 |
| --- /dev/null |
| +++ b/ui/wayland/wayland_message_pump.h |
| @@ -0,0 +1,63 @@ |
| +// Copyright (c) 2011 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 UI_WAYLAND_WAYLAND_MESSAGE_PUMP_H_ |
| +#define UI_WAYLAND_WAYLAND_MESSAGE_PUMP_H_ |
| + |
| +#include <glib.h> |
| +#include <stdint.h> |
| + |
| +#include "base/basictypes.h" |
| + |
| +namespace ui { |
| + |
| +class WaylandDisplay; |
| + |
| +// The message pump handles Wayland specific event delivery. This message |
| +// pump uses the default glib context, so running a glib main loop with the |
| +// default context will allow looping through Wayland events. |
| +class WaylandMessagePump { |
| + public: |
| + WaylandMessagePump(WaylandDisplay* display); |
|
tfarina
2011/07/26 14:49:28
please add a explicit here.
|
| + virtual ~WaylandMessagePump(); |
| + |
| + protected: |
| + // These are used to process the pump callbacks. |
| + // HandlePrepare: is called during glib's prepare step and returns a timeout |
| + // that will be passed to the poll. |
| + // HandleCheck: called after HandlePrepare and returns whether |
| + // HandleDispatch should be called. |
| + // HandleDispatch:is called after HandleCheck returns true and it will |
| + // dispatch a Wayland event. |
| + virtual int HandlePrepare(); |
| + virtual bool HandleCheck(); |
| + virtual void HandleDispatch(); |
| + |
| + private: |
| + struct WorkSource : public GSource { |
| + WaylandMessagePump* pump; |
| + }; |
| + |
| + // Actual callbacks for glib. These functions will just call the appropriate |
| + // Handle* functions in a WaylandMessagePump object. |
| + static gboolean SourcePrepare(GSource* source, gint* timeout); |
| + static gboolean SourceCheck(GSource* source); |
| + static gboolean SourceDispatch(GSource* source, |
| + GSourceFunc callback, |
| + gpointer data); |
| + // Handles updates to the Wayland mask. This is used to signal when the |
| + // compositor is done processing writable events. |
| + static int SourceUpdate(uint32_t mask, void* data); |
| + |
| + WaylandDisplay* display_; |
| + WorkSource* source_; |
| + GPollFD pfd_; |
| + uint32_t mask_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(WaylandMessagePump); |
| +}; |
| + |
| +} // namespace ui |
| + |
| +#endif // UI_WAYLAND_WAYLAND_MESSAGE_PUMP_H_ |