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

Unified Diff: ui/ozone/platform/drm/host/drm_window_host_manager.h

Issue 1285183008: Ozone integration. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: add missing license header Created 5 years, 4 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
Index: ui/ozone/platform/drm/host/drm_window_host_manager.h
diff --git a/ui/ozone/platform/drm/host/drm_window_host_manager.h b/ui/ozone/platform/drm/host/drm_window_host_manager.h
new file mode 100644
index 0000000000000000000000000000000000000000..7e9a368028559708176599385024ce361d56caca
--- /dev/null
+++ b/ui/ozone/platform/drm/host/drm_window_host_manager.h
@@ -0,0 +1,72 @@
+// Copyright 2014 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_DRM_HOST_DRM_WINDOW_HOST_MANAGER_H_
+#define UI_OZONE_PLATFORM_DRM_HOST_DRM_WINDOW_HOST_MANAGER_H_
+
+#include <map>
+
+#include "base/memory/scoped_ptr.h"
+#include "ui/gfx/native_widget_types.h"
+
+namespace gfx {
+class Point;
+}
+
+namespace ui {
+
+class DrmGpuPlatformSupportHost;
+class DrmWindowHost;
+
+// Responsible for keeping the mapping between the allocated widgets and
+// windows.
+class DrmWindowHostManager {
+ public:
+ DrmWindowHostManager();
+ ~DrmWindowHostManager();
+
+ gfx::AcceleratedWidget NextAcceleratedWidget();
+
+ // Adds a window for |widget|. Note: |widget| should not be associated when
+ // calling this function.
+ void AddWindow(gfx::AcceleratedWidget widget, DrmWindowHost* window);
+
+ // Removes the window association for |widget|. Note: |widget| must be
+ // associated with a window when calling this function.
+ void RemoveWindow(gfx::AcceleratedWidget widget);
+
+ // Returns the window associated with |widget|. Note: This function should
+ // only be called if a valid window has been associated.
+ DrmWindowHost* GetWindow(gfx::AcceleratedWidget widget);
+
+ // Returns the window containing the specified screen location, or NULL.
+ DrmWindowHost* GetWindowAt(const gfx::Point& location);
+
+ // Returns a window. Probably the first one created.
+ DrmWindowHost* GetPrimaryWindow();
+
+ // Tries to set a given widget as the recipient for events. It will
+ // fail if there is already another widget as recipient.
+ void GrabEvents(gfx::AcceleratedWidget widget);
+
+ // Unsets a given widget as the recipient for events.
+ void UngrabEvents(gfx::AcceleratedWidget widget);
+
+ // Gets the current widget recipient of mouse events.
+ gfx::AcceleratedWidget event_grabber() const { return event_grabber_; }
+
+ private:
+ typedef std::map<gfx::AcceleratedWidget, DrmWindowHost*> WidgetToWindowMap;
+
+ gfx::AcceleratedWidget last_allocated_widget_ = 0;
+ WidgetToWindowMap window_map_;
+
+ gfx::AcceleratedWidget event_grabber_ = gfx::kNullAcceleratedWidget;
+
+ DISALLOW_COPY_AND_ASSIGN(DrmWindowHostManager);
+};
+
+} // namespace ui
+
+#endif // UI_OZONE_PLATFORM_DRM_HOST_DRM_WINDOW_HOST_MANAGER_H_
« no previous file with comments | « ui/ozone/platform/drm/host/drm_window_host.cc ('k') | ui/ozone/platform/drm/host/drm_window_host_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698