Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(507)

Unified Diff: content/common/gpu/media/dxva_video_decode_accelerator.cc

Issue 10749019: VideoDecodeAccelerator now SupportsWeakPtr instead of being RefCountedThreadSafe. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/common/gpu/media/dxva_video_decode_accelerator.cc
diff --git a/content/common/gpu/media/dxva_video_decode_accelerator.cc b/content/common/gpu/media/dxva_video_decode_accelerator.cc
index 2edc13863f3bb4eda23a0a7f6b257091ddd8cab2..c99121ccaf95553e2bbb75cd2d95a31435f9a2ec 100644
--- a/content/common/gpu/media/dxva_video_decode_accelerator.cc
+++ b/content/common/gpu/media/dxva_video_decode_accelerator.cc
@@ -548,8 +548,9 @@ bool DXVAVideoDecodeAccelerator::Initialize(media::VideoCodecProfile profile) {
PLATFORM_FAILURE, false);
state_ = kNormal;
- MessageLoop::current()->PostTask(FROM_HERE,
- base::Bind(&DXVAVideoDecodeAccelerator::NotifyInitializeDone, this));
+ MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
+ &DXVAVideoDecodeAccelerator::NotifyInitializeDone,
+ base::AsWeakPtr(this)));
return true;
}
@@ -597,7 +598,7 @@ void DXVAVideoDecodeAccelerator::Decode(
// decoder to emit an output packet for every input packet.
// http://code.google.com/p/chromium/issues/detail?id=108121
MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
- &DXVAVideoDecodeAccelerator::NotifyInputBufferRead, this,
+ &DXVAVideoDecodeAccelerator::NotifyInputBufferRead, base::AsWeakPtr(this),
bitstream_buffer.id()));
}
@@ -658,7 +659,7 @@ void DXVAVideoDecodeAccelerator::Flush() {
}
MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
- &DXVAVideoDecodeAccelerator::NotifyFlushDone, this));
+ &DXVAVideoDecodeAccelerator::NotifyFlushDone, base::AsWeakPtr(this)));
state_ = kNormal;
}
@@ -677,7 +678,7 @@ void DXVAVideoDecodeAccelerator::Reset() {
"Reset: Failed to send message.", PLATFORM_FAILURE,);
MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
- &DXVAVideoDecodeAccelerator::NotifyResetDone, this));
+ &DXVAVideoDecodeAccelerator::NotifyResetDone, base::AsWeakPtr(this)));
state_ = DXVAVideoDecodeAccelerator::kNormal;
}
@@ -685,6 +686,7 @@ void DXVAVideoDecodeAccelerator::Reset() {
void DXVAVideoDecodeAccelerator::Destroy() {
DCHECK(CalledOnValidThread());
Invalidate();
+ delete this;
}
bool DXVAVideoDecodeAccelerator::InitDecoder() {
@@ -946,7 +948,7 @@ bool DXVAVideoDecodeAccelerator::ProcessOutputSample(IMFSample* sample) {
// Go ahead and request picture buffers.
MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
&DXVAVideoDecodeAccelerator::RequestPictureBuffers,
- this, surface_desc.Width, surface_desc.Height));
+ base::AsWeakPtr(this), surface_desc.Width, surface_desc.Height));
pictures_requested_ = true;
return true;
@@ -973,8 +975,8 @@ void DXVAVideoDecodeAccelerator::ProcessPendingSamples() {
media::Picture output_picture(index->second->id(),
sample_info.input_buffer_id);
MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
- &DXVAVideoDecodeAccelerator::NotifyPictureReady, this,
- output_picture));
+ &DXVAVideoDecodeAccelerator::NotifyPictureReady,
+ base::AsWeakPtr(this), output_picture));
index->second->set_available(false);
pending_output_samples_.pop_front();

Powered by Google App Engine
This is Rietveld 408576698