1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef UI_OZONE_PLATFORM_DRI_GPU_PLATFORM_SUPPORT_GBM_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define UI_OZONE_PLATFORM_DRI_GPU_PLATFORM_SUPPORT_GBM_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/containers/scoped_ptr_hash_map.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_vector.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/gfx/native_widget_types.h" 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/ozone/public/gpu_platform_support.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SkBitmap; 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace gfx { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass Point; 1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class Rect; 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace ui { 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass DriSurfaceFactory; 2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class DriWindowDelegate; 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass DriWindowDelegateManager; 2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class ScreenManager; 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass GpuPlatformSupportGbm : public GpuPlatformSupport { 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) GpuPlatformSupportGbm(DriSurfaceFactory* dri, 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DriWindowDelegateManager* window_manager, 3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ScreenManager* screen_manager); 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~GpuPlatformSupportGbm(); 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void AddHandler(scoped_ptr<GpuPlatformSupport> handler); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // GpuPlatformSupport: 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void OnChannelEstablished(IPC::Sender* sender) OVERRIDE; 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // IPC::Listener: 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void OnCreateWindowDelegate(gfx::AcceleratedWidget widget); 4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void OnDestroyWindowDelegate(gfx::AcceleratedWidget widget); 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void OnWindowBoundsChanged(gfx::AcceleratedWidget widget, 4703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const gfx::Rect& bounds); 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnCursorSet(gfx::AcceleratedWidget widget, 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::vector<SkBitmap>& bitmaps, 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const gfx::Point& location, 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci int frame_delay_ms); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnCursorMove(gfx::AcceleratedWidget widget, const gfx::Point& location); 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) IPC::Sender* sender_; 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DriSurfaceFactory* dri_; 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci DriWindowDelegateManager* window_manager_; 5703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ScreenManager* screen_manager_; 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ScopedVector<GpuPlatformSupport> handlers_; 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace ui 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // UI_OZONE_PLATFORM_DRI_GPU_PLATFORM_SUPPORT_GBM_H_ 64