| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/ozone/platform/dri/ozone_platform_gbm.h" | 5 #include "ui/ozone/platform/dri/ozone_platform_gbm.h" |
| 6 | 6 |
| 7 #include <dlfcn.h> |
| 7 #include <stdlib.h> | 8 #include <stdlib.h> |
| 8 #include <gbm.h> | 9 #include <gbm.h> |
| 9 | 10 |
| 10 #include "ui/base/cursor/ozone/cursor_factory_ozone.h" | 11 #include "ui/base/cursor/ozone/cursor_factory_ozone.h" |
| 11 #include "ui/events/ozone/device/device_manager.h" | 12 #include "ui/events/ozone/device/device_manager.h" |
| 12 #include "ui/events/ozone/evdev/event_factory_evdev.h" | 13 #include "ui/events/ozone/evdev/event_factory_evdev.h" |
| 13 #include "ui/ozone/ozone_platform.h" | 14 #include "ui/ozone/ozone_platform.h" |
| 14 #include "ui/ozone/platform/dri/dri_wrapper.h" | 15 #include "ui/ozone/platform/dri/dri_wrapper.h" |
| 15 #include "ui/ozone/platform/dri/gbm_surface.h" | 16 #include "ui/ozone/platform/dri/gbm_surface.h" |
| 16 #include "ui/ozone/platform/dri/gbm_surface_factory.h" | 17 #include "ui/ozone/platform/dri/gbm_surface_factory.h" |
| 17 #include "ui/ozone/platform/dri/scanout_surface.h" | 18 #include "ui/ozone/platform/dri/scanout_surface.h" |
| 18 #include "ui/ozone/platform/dri/screen_manager.h" | 19 #include "ui/ozone/platform/dri/screen_manager.h" |
| 19 | 20 |
| 20 #if defined(OS_CHROMEOS) | 21 #if defined(OS_CHROMEOS) |
| 21 #include "ui/ozone/common/chromeos/native_display_delegate_ozone.h" | 22 #include "ui/ozone/common/chromeos/native_display_delegate_ozone.h" |
| 22 #include "ui/ozone/common/chromeos/touchscreen_device_manager_ozone.h" | 23 #include "ui/ozone/common/chromeos/touchscreen_device_manager_ozone.h" |
| 23 #endif | 24 #endif |
| 24 | 25 |
| 25 namespace ui { | 26 namespace ui { |
| 26 | 27 |
| 27 namespace { | 28 namespace { |
| 28 | 29 |
| 29 const char kDefaultGraphicsCardPath[] = "/dev/dri/card0"; | 30 const char kDefaultGraphicsCardPath[] = "/dev/dri/card0"; |
| 30 | 31 |
| 31 class GbmSurfaceGenerator : public ScanoutSurfaceGenerator { | 32 class GbmSurfaceGenerator : public ScanoutSurfaceGenerator { |
| 32 public: | 33 public: |
| 33 GbmSurfaceGenerator(DriWrapper* dri) | 34 GbmSurfaceGenerator(DriWrapper* dri) |
| 34 : dri_(dri), | 35 : dri_(dri), |
| 36 glapi_lib_(dlopen("libglapi.so.0", RTLD_LAZY | RTLD_GLOBAL)), |
| 35 device_(gbm_create_device(dri_->get_fd())) {} | 37 device_(gbm_create_device(dri_->get_fd())) {} |
| 36 virtual ~GbmSurfaceGenerator() { | 38 virtual ~GbmSurfaceGenerator() { |
| 37 gbm_device_destroy(device_); | 39 gbm_device_destroy(device_); |
| 40 if (glapi_lib_) |
| 41 dlclose(glapi_lib_); |
| 38 } | 42 } |
| 39 | 43 |
| 40 gbm_device* device() const { return device_; } | 44 gbm_device* device() const { return device_; } |
| 41 | 45 |
| 42 virtual ScanoutSurface* Create(const gfx::Size& size) OVERRIDE { | 46 virtual ScanoutSurface* Create(const gfx::Size& size) OVERRIDE { |
| 43 return new GbmSurface(device_, dri_, size); | 47 return new GbmSurface(device_, dri_, size); |
| 44 } | 48 } |
| 45 | 49 |
| 46 private: | 50 private: |
| 47 DriWrapper* dri_; // Not owned. | 51 DriWrapper* dri_; // Not owned. |
| 48 | 52 |
| 53 // HACK: gbm drivers have broken linkage |
| 54 void *glapi_lib_; |
| 55 |
| 49 gbm_device* device_; | 56 gbm_device* device_; |
| 50 | 57 |
| 51 DISALLOW_COPY_AND_ASSIGN(GbmSurfaceGenerator); | 58 DISALLOW_COPY_AND_ASSIGN(GbmSurfaceGenerator); |
| 52 }; | 59 }; |
| 53 | 60 |
| 54 class OzonePlatformGbm : public OzonePlatform { | 61 class OzonePlatformGbm : public OzonePlatform { |
| 55 public: | 62 public: |
| 56 OzonePlatformGbm() {} | 63 OzonePlatformGbm() {} |
| 57 virtual ~OzonePlatformGbm() {} | 64 virtual ~OzonePlatformGbm() {} |
| 58 | 65 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 scoped_ptr<EventFactoryEvdev> event_factory_ozone_; | 118 scoped_ptr<EventFactoryEvdev> event_factory_ozone_; |
| 112 | 119 |
| 113 DISALLOW_COPY_AND_ASSIGN(OzonePlatformGbm); | 120 DISALLOW_COPY_AND_ASSIGN(OzonePlatformGbm); |
| 114 }; | 121 }; |
| 115 | 122 |
| 116 } // namespace | 123 } // namespace |
| 117 | 124 |
| 118 OzonePlatform* CreateOzonePlatformGbm() { return new OzonePlatformGbm; } | 125 OzonePlatform* CreateOzonePlatformGbm() { return new OzonePlatformGbm; } |
| 119 | 126 |
| 120 } // namespace ui | 127 } // namespace ui |
| OLD | NEW |