| Index: gpu/gles2_conform_support/egl/display.cc
|
| diff --git a/gpu/gles2_conform_support/egl/display.cc b/gpu/gles2_conform_support/egl/display.cc
|
| index 6152408876763fd1e4d80e8510f8a858da11a2c4..c6ea7d80854cbba389ce3ae0a67df02bef299829 100644
|
| --- a/gpu/gles2_conform_support/egl/display.cc
|
| +++ b/gpu/gles2_conform_support/egl/display.cc
|
| @@ -11,6 +11,7 @@
|
| #include "base/at_exit.h"
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| +#include "base/lazy_instance.h"
|
| #include "gpu/command_buffer/client/gles2_implementation.h"
|
| #include "gpu/command_buffer/client/gles2_lib.h"
|
| #include "gpu/command_buffer/client/transfer_buffer.h"
|
| @@ -29,21 +30,49 @@ const int32_t kTransferBufferSize = 512 * 1024;
|
| }
|
|
|
| namespace egl {
|
| +#if defined(COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY)
|
| +// egl::Display is used for comformance tests and command_buffer_gles. We only
|
| +// need the exit manager for the command_buffer_gles library.
|
| +// TODO(hendrikw): Find a cleaner solution for this.
|
| +namespace {
|
| +base::LazyInstance<base::Lock>::Leaky g_exit_manager_lock;
|
| +int g_exit_manager_use_count;
|
| +base::AtExitManager* g_exit_manager;
|
| +void RefAtExitManager() {
|
| + base::AutoLock lock(g_exit_manager_lock.Get());
|
| + if (g_exit_manager_use_count == 0) {
|
| + g_exit_manager = new base::AtExitManager;
|
| + }
|
| + ++g_exit_manager_use_count;
|
| +}
|
| +void ReleaseAtExitManager() {
|
| + base::AutoLock lock(g_exit_manager_lock.Get());
|
| + --g_exit_manager_use_count;
|
| + if (g_exit_manager_use_count == 0) {
|
| + delete g_exit_manager;
|
| + g_exit_manager = nullptr;
|
| + }
|
| +}
|
| +}
|
| +#endif
|
|
|
| Display::Display(EGLNativeDisplayType display_id)
|
| : display_id_(display_id),
|
| is_initialized_(false),
|
| -#if defined(COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY)
|
| - exit_manager_(new base::AtExitManager),
|
| -#endif
|
| create_offscreen_(false),
|
| create_offscreen_width_(0),
|
| create_offscreen_height_(0),
|
| next_fence_sync_release_(1) {
|
| +#if defined(COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY)
|
| + RefAtExitManager();
|
| +#endif
|
| }
|
|
|
| Display::~Display() {
|
| gles2::Terminate();
|
| +#if defined(COMMAND_BUFFER_GLES_LIB_SUPPORT_ONLY)
|
| + ReleaseAtExitManager();
|
| +#endif
|
| }
|
|
|
| bool Display::Initialize() {
|
|
|