Index: media/gpu/android_video_decode_accelerator.cc |
diff --git a/media/gpu/android_video_decode_accelerator.cc b/media/gpu/android_video_decode_accelerator.cc |
index 3d0e4cfad202723f65d976df288d3dc51748af16..e1c0891c56ba9029284ac5035fe29d4301e2a412 100644 |
--- a/media/gpu/android_video_decode_accelerator.cc |
+++ b/media/gpu/android_video_decode_accelerator.cc |
@@ -14,7 +14,6 @@ |
#include "base/bind_helpers.h" |
#include "base/callback_helpers.h" |
#include "base/command_line.h" |
-#include "base/lazy_instance.h" |
#include "base/logging.h" |
#include "base/message_loop/message_loop.h" |
#include "base/metrics/histogram_macros.h" |
@@ -130,6 +129,8 @@ bool ShouldDeferSurfaceCreation(int surface_id, VideoCodec codec) { |
// surfaces are released. |
class AVDAManager { |
public: |
+ AVDAManager() {} |
+ |
// Request periodic callback of |avda|->DoIOTask(). Does nothing if the |
// instance is already registered and the timer started. The first request |
// will start the repeating timer on an interval of DecodePollDelay. |
@@ -166,9 +167,6 @@ class AVDAManager { |
} |
private: |
- friend struct base::DefaultLazyInstanceTraits<AVDAManager>; |
- |
- AVDAManager() {} |
~AVDAManager() { NOTREACHED(); } |
Mark Mentovai
2017/01/31 21:33:56
You can switch this to the “= delete” form too.
DaleCurtis
2017/01/31 22:04:33
Done.
|
void RunTimer() { |
@@ -206,8 +204,10 @@ class AVDAManager { |
DISALLOW_COPY_AND_ASSIGN(AVDAManager); |
}; |
-static base::LazyInstance<AVDAManager>::Leaky g_avda_manager = |
- LAZY_INSTANCE_INITIALIZER; |
+static AVDAManager* GetManager() { |
+ static AVDAManager* manager = new AVDAManager(); |
+ return manager; |
+} |
AndroidVideoDecodeAccelerator::BitstreamRecord::BitstreamRecord( |
const BitstreamBuffer& bitstream_buffer) |
@@ -242,7 +242,7 @@ AndroidVideoDecodeAccelerator::AndroidVideoDecodeAccelerator( |
AndroidVideoDecodeAccelerator::~AndroidVideoDecodeAccelerator() { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- g_avda_manager.Get().StopTimer(this); |
+ GetManager()->StopTimer(this); |
AVDACodecAllocator::Instance()->StopThread(this); |
#if defined(ENABLE_MOJO_MEDIA_IN_GPU_PROCESS) |
@@ -1065,7 +1065,7 @@ void AndroidVideoDecodeAccelerator::ResetCodecState() { |
picture_buffer_manager_.CodecChanged(media_codec_.get()); |
} else { |
DVLOG(3) << __func__ << " Deleting the MediaCodec and creating a new one."; |
- g_avda_manager.Get().StopTimer(this); |
+ GetManager()->StopTimer(this); |
ConfigureMediaCodecAsynchronously(); |
} |
} |
@@ -1139,7 +1139,7 @@ void AndroidVideoDecodeAccelerator::ActualDestroy() { |
// case, the codec will be deleted when it completes once we invalidate all |
// our weak refs. |
weak_this_factory_.InvalidateWeakPtrs(); |
- g_avda_manager.Get().StopTimer(this); |
+ GetManager()->StopTimer(this); |
ReleaseCodec(); |
// We no longer care about |surface_id|, in case we did before. It's okay |
@@ -1334,9 +1334,9 @@ void AndroidVideoDecodeAccelerator::ManageTimer(bool did_work) { |
} |
if (should_be_running) |
- g_avda_manager.Get().StartTimer(this); |
+ GetManager()->StartTimer(this); |
else |
- g_avda_manager.Get().StopTimer(this); |
+ GetManager()->StopTimer(this); |
} |
// static |