Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(467)

Unified Diff: ui/ozone/platform/wayland/wayland_display.h

Issue 1610683003: Add initial SHM-only Wayland Ozone implementation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/ozone/platform/wayland/wayland.gypi ('k') | ui/ozone/platform/wayland/wayland_display.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/ozone/platform/wayland/wayland_display.h
diff --git a/ui/ozone/platform/wayland/wayland_display.h b/ui/ozone/platform/wayland/wayland_display.h
new file mode 100644
index 0000000000000000000000000000000000000000..99b1366bcbb140cbc05d3011d83057ffaba0f17a
--- /dev/null
+++ b/ui/ozone/platform/wayland/wayland_display.h
@@ -0,0 +1,73 @@
+// Copyright 2016 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_OZONE_PLATFORM_WAYLAND_WAYLAND_DISPLAY_H_
+#define UI_OZONE_PLATFORM_WAYLAND_WAYLAND_DISPLAY_H_
+
+#include <map>
+
+#include "base/message_loop/message_pump_libevent.h"
+#include "ui/events/platform/platform_event_source.h"
+#include "ui/gfx/native_widget_types.h"
+#include "ui/ozone/platform/wayland/wayland_object.h"
+
+namespace ui {
+
+class WaylandWindow;
+
+class WaylandDisplay : public PlatformEventSource,
+ public base::MessagePumpLibevent::Watcher {
+ public:
+ WaylandDisplay();
+ ~WaylandDisplay() override;
+
+ bool Initialize();
+
+ // Flushes the Wayland connection.
+ void Flush();
+
+ wl_compositor* compositor() { return compositor_.get(); }
+ wl_shm* shm() { return shm_.get(); }
+ xdg_shell* shell() { return shell_.get(); }
+
+ WaylandWindow* GetWindow(gfx::AcceleratedWidget widget);
+ void AddWindow(WaylandWindow* window);
+ void RemoveWindow(WaylandWindow* window);
+
+ private:
+ // PlatformEventSource
+ void OnDispatcherListChanged() override;
+
+ // base::MessagePumpLibevent::Watcher
+ void OnFileCanReadWithoutBlocking(int fd) override;
+ void OnFileCanWriteWithoutBlocking(int fd) override;
+
+ // wl_registry_listener
+ static void Global(void* data,
+ wl_registry* registry,
+ uint32_t name,
+ const char* interface,
+ uint32_t version);
+ static void GlobalRemove(void* data, wl_registry* registry, uint32_t name);
+
+ // xdg_shell_listener
+ static void Ping(void* data, xdg_shell* shell, uint32_t serial);
+
+ std::map<gfx::AcceleratedWidget, WaylandWindow*> window_map_;
+
+ wl::Object<wl_display> display_;
+ wl::Object<wl_registry> registry_;
+ wl::Object<wl_compositor> compositor_;
+ wl::Object<wl_shm> shm_;
+ wl::Object<xdg_shell> shell_;
+
+ bool watching_ = false;
+ base::MessagePumpLibevent::FileDescriptorWatcher controller_;
+
+ DISALLOW_COPY_AND_ASSIGN(WaylandDisplay);
+};
+
+} // namespace ui
+
+#endif // UI_OZONE_PLATFORM_WAYLAND_WAYLAND_DISPLAY_H_
« no previous file with comments | « ui/ozone/platform/wayland/wayland.gypi ('k') | ui/ozone/platform/wayland/wayland_display.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698