| 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 75f05515bd098cd5d955925fde5cac7d53e1350a..56c1744c19cbb27190ae8134f957cf5d2475ee83 100644
|
| --- a/ui/ozone/platform/dri/ozone_platform_gbm.cc
|
| +++ b/ui/ozone/platform/dri/ozone_platform_gbm.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "ui/ozone/platform/dri/ozone_platform_gbm.h"
|
|
|
| +#include <dlfcn.h>
|
| #include <stdlib.h>
|
| #include <gbm.h>
|
|
|
| @@ -32,9 +33,12 @@ class GbmSurfaceGenerator : public ScanoutSurfaceGenerator {
|
| public:
|
| GbmSurfaceGenerator(DriWrapper* dri)
|
| : dri_(dri),
|
| + glapi_lib_(dlopen("libglapi.so.0", RTLD_LAZY | RTLD_GLOBAL)),
|
| device_(gbm_create_device(dri_->get_fd())) {}
|
| virtual ~GbmSurfaceGenerator() {
|
| gbm_device_destroy(device_);
|
| + if (glapi_lib_)
|
| + dlclose(glapi_lib_);
|
| }
|
|
|
| gbm_device* device() const { return device_; }
|
| @@ -46,6 +50,9 @@ class GbmSurfaceGenerator : public ScanoutSurfaceGenerator {
|
| private:
|
| DriWrapper* dri_; // Not owned.
|
|
|
| + // HACK: gbm drivers have broken linkage
|
| + void *glapi_lib_;
|
| +
|
| gbm_device* device_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(GbmSurfaceGenerator);
|
|
|