| Index: ui/ozone/public/cursor_factory_ozone.cc
|
| diff --git a/ui/ozone/public/cursor_factory_ozone.cc b/ui/ozone/public/cursor_factory_ozone.cc
|
| index 356bd127b80cf434f9266882158cbfffa361db0d..c929fc637f1a7c8a34df2be095dbc22a18fabc94 100644
|
| --- a/ui/ozone/public/cursor_factory_ozone.cc
|
| +++ b/ui/ozone/public/cursor_factory_ozone.cc
|
| @@ -4,26 +4,32 @@
|
|
|
| #include "ui/ozone/public/cursor_factory_ozone.h"
|
|
|
| +#include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| +#include "base/threading/thread_local.h"
|
|
|
| namespace ui {
|
| +namespace {
|
|
|
| -// static
|
| -CursorFactoryOzone* CursorFactoryOzone::impl_ = NULL;
|
| +base::LazyInstance<base::ThreadLocalPointer<CursorFactoryOzone>>::Leaky
|
| + lazy_tls_ptr = LAZY_INSTANCE_INITIALIZER;
|
| +}
|
|
|
| CursorFactoryOzone::CursorFactoryOzone() {
|
| - DCHECK(!impl_) << "There should only be a single CursorFactoryOzone.";
|
| - impl_ = this;
|
| + DCHECK(!lazy_tls_ptr.Pointer()->Get())
|
| + << "There should only be a single CursorFactoryOzone per thread.";
|
| + lazy_tls_ptr.Pointer()->Set(this);
|
| }
|
|
|
| CursorFactoryOzone::~CursorFactoryOzone() {
|
| - DCHECK_EQ(impl_, this);
|
| - impl_ = NULL;
|
| + DCHECK_EQ(lazy_tls_ptr.Pointer()->Get(), this);
|
| + lazy_tls_ptr.Pointer()->Set(nullptr);
|
| }
|
|
|
| CursorFactoryOzone* CursorFactoryOzone::GetInstance() {
|
| - DCHECK(impl_) << "No CursorFactoryOzone implementation set.";
|
| - return impl_;
|
| + CursorFactoryOzone* result = lazy_tls_ptr.Pointer()->Get();
|
| + DCHECK(result) << "No CursorFactoryOzone implementation set.";
|
| + return result;
|
| }
|
|
|
| PlatformCursor CursorFactoryOzone::GetDefaultCursor(CursorType type) {
|
|
|