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

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

Issue 170843004: Pass Client pointer in Initialize() for VDA/VEA (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 50e826de Rebase. Created 6 years, 10 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/vaapi_video_decode_accelerator.cc
diff --git a/content/common/gpu/media/vaapi_video_decode_accelerator.cc b/content/common/gpu/media/vaapi_video_decode_accelerator.cc
index 73471d64eaf2256738fa353ea67fc7d87a54d4d6..79860d5b60dc1190c7046da266eddec104a5c922 100644
--- a/content/common/gpu/media/vaapi_video_decode_accelerator.cc
+++ b/content/common/gpu/media/vaapi_video_decode_accelerator.cc
@@ -57,7 +57,7 @@ void VaapiVideoDecodeAccelerator::NotifyError(Error error) {
DVLOG(1) << "Notifying of error " << error;
if (client_) {
client_->NotifyError(error);
- client_ptr_factory_.InvalidateWeakPtrs();
+ client_ptr_factory_.reset();
}
}
@@ -237,7 +237,6 @@ VaapiVideoDecodeAccelerator::TFPPicture*
VaapiVideoDecodeAccelerator::VaapiVideoDecodeAccelerator(
Display* x_display,
- Client* client,
const base::Callback<bool(void)>& make_context_current)
: x_display_(x_display),
make_context_current_(make_context_current),
@@ -248,15 +247,12 @@ VaapiVideoDecodeAccelerator::VaapiVideoDecodeAccelerator(
weak_this_(base::AsWeakPtr(this)),
va_surface_release_cb_(media::BindToCurrentLoop(base::Bind(
&VaapiVideoDecodeAccelerator::RecycleVASurfaceID, weak_this_))),
- client_ptr_factory_(client),
- client_(client_ptr_factory_.GetWeakPtr()),
decoder_thread_("VaapiDecoderThread"),
num_frames_at_client_(0),
num_stream_bufs_at_decoder_(0),
finish_flush_pending_(false),
awaiting_va_surfaces_recycle_(false),
requested_num_pics_(0) {
- DCHECK(client);
}
VaapiVideoDecodeAccelerator::~VaapiVideoDecodeAccelerator() {
@@ -292,10 +288,13 @@ bool VaapiVideoDecodeAccelerator::InitializeFBConfig() {
return true;
}
-bool VaapiVideoDecodeAccelerator::Initialize(
- media::VideoCodecProfile profile) {
+bool VaapiVideoDecodeAccelerator::Initialize(media::VideoCodecProfile profile,
+ Client* client) {
DCHECK_EQ(message_loop_, base::MessageLoop::current());
+ client_ptr_factory_.reset(new base::WeakPtrFactory<Client>(client));
+ client_ = client_ptr_factory_->GetWeakPtr();
+
base::AutoLock auto_lock(lock_);
DCHECK_EQ(state_, kUninitialized);
DVLOG(2) << "Initializing VAVDA, profile: " << profile;
@@ -904,7 +903,7 @@ void VaapiVideoDecodeAccelerator::Cleanup() {
base::AutoLock auto_lock(lock_);
state_ = kDestroying;
- client_ptr_factory_.InvalidateWeakPtrs();
+ client_ptr_factory_.reset();
{
base::AutoUnlock auto_unlock(lock_);

Powered by Google App Engine
This is Rietveld 408576698