| 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..3da06e730fb37625cf27fdc7619d867753256dc9
|
| --- /dev/null
|
| +++ b/ui/wayland/wayland_message_pump.h
|
| @@ -0,0 +1,62 @@
|
| +// 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 WAYLAND_MESSAGE_PUMP_H_
|
| +#define WAYLAND_MESSAGE_PUMP_H_
|
| +
|
| +#include <glib.h>
|
| +#include <stdint.h>
|
| +
|
| +#include "base/basictypes.h"
|
| +
|
| +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);
|
| + 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);
|
| +};
|
| +
|
| +#endif
|
|
|