Index: ui/ozone/platform/dri/ozone_platform_gbm.cc |
diff --git a/ui/ozone/platform/dri/ozone_platform_gbm.cc b/ui/ozone/platform/dri/ozone_platform_gbm.cc |
index a5b674232943a80424a4747a4d63613bca07af5c..60a7de217f32ed4a63a7471ae39f94d54a61d2e5 100644 |
--- a/ui/ozone/platform/dri/ozone_platform_gbm.cc |
+++ b/ui/ozone/platform/dri/ozone_platform_gbm.cc |
@@ -23,6 +23,7 @@ |
#include "ui/ozone/platform/dri/dri_window.h" |
#include "ui/ozone/platform/dri/dri_window_delegate_manager.h" |
#include "ui/ozone/platform/dri/dri_window_manager.h" |
+#include "ui/ozone/platform/dri/drm_device_generator.h" |
#include "ui/ozone/platform/dri/drm_device_manager.h" |
#include "ui/ozone/platform/dri/gbm_buffer.h" |
#include "ui/ozone/platform/dri/gbm_surface.h" |
@@ -74,6 +75,7 @@ class GbmBufferGenerator : public ScanoutBufferGenerator { |
GbmBufferGenerator() {} |
~GbmBufferGenerator() override {} |
+ // ScanoutBufferGenerator: |
scoped_refptr<ScanoutBuffer> Create(const scoped_refptr<DriWrapper>& drm, |
const gfx::Size& size) override { |
scoped_refptr<GbmWrapper> gbm(static_cast<GbmWrapper*>(drm.get())); |
@@ -85,6 +87,23 @@ class GbmBufferGenerator : public ScanoutBufferGenerator { |
DISALLOW_COPY_AND_ASSIGN(GbmBufferGenerator); |
}; |
+class GbmDeviceGenerator : public DrmDeviceGenerator { |
+ public: |
+ GbmDeviceGenerator() {} |
+ ~GbmDeviceGenerator() override {} |
+ |
+ // DrmDeviceGenerator: |
+ scoped_refptr<DriWrapper> CreateDevice(const base::FilePath& path, |
+ base::File file) override { |
+ scoped_refptr<DriWrapper> drm = new GbmWrapper(path, file.Pass()); |
+ drm->Initialize(); |
+ return drm; |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(GbmDeviceGenerator); |
+}; |
+ |
class OzonePlatformGbm : public OzonePlatform { |
public: |
OzonePlatformGbm(bool use_surfaceless) : use_surfaceless_(use_surfaceless) { |
@@ -168,8 +187,9 @@ class OzonePlatformGbm : public OzonePlatform { |
surface_factory_ozone_->InitializeGpu(gbm_, drm_device_manager_.get(), |
window_delegate_manager_.get()); |
- scoped_ptr<NativeDisplayDelegateDri> ndd( |
- new NativeDisplayDelegateDri(screen_manager_.get(), gbm_)); |
+ scoped_ptr<NativeDisplayDelegateDri> ndd(new NativeDisplayDelegateDri( |
+ screen_manager_.get(), gbm_, |
+ scoped_ptr<DrmDeviceGenerator>(new GbmDeviceGenerator()))); |
gpu_platform_support_.reset(new DriGpuPlatformSupport( |
drm_device_manager_.get(), window_delegate_manager_.get(), |
screen_manager_.get(), ndd.Pass())); |