Index: cc/layers/video_frame_provider_client_impl.cc |
diff --git a/cc/layers/video_frame_provider_client_impl.cc b/cc/layers/video_frame_provider_client_impl.cc |
index 4bbd92f284b74584f3e6c37ddc0b30f21179fe7f..68e10dc58edfbffaa3d53cf4466a2a675aad305d 100644 |
--- a/cc/layers/video_frame_provider_client_impl.cc |
+++ b/cc/layers/video_frame_provider_client_impl.cc |
@@ -13,17 +13,13 @@ namespace cc { |
// static |
scoped_refptr<VideoFrameProviderClientImpl> |
- VideoFrameProviderClientImpl::Create( |
- VideoFrameProvider* provider) { |
- return make_scoped_refptr( |
- new VideoFrameProviderClientImpl(provider)); |
+VideoFrameProviderClientImpl::Create(VideoFrameProvider* provider) { |
+ return make_scoped_refptr(new VideoFrameProviderClientImpl(provider)); |
} |
-VideoFrameProviderClientImpl::~VideoFrameProviderClientImpl() {} |
- |
VideoFrameProviderClientImpl::VideoFrameProviderClientImpl( |
VideoFrameProvider* provider) |
- : active_video_layer_(nullptr), provider_(provider) { |
+ : provider_(provider), active_video_layer_(nullptr), stopped_(false) { |
// This only happens during a commit on the compositor thread while the main |
// thread is blocked. That makes this a thread-safe call to set the video |
// frame provider client that does not require a lock. The same is true of |
@@ -39,6 +35,16 @@ VideoFrameProviderClientImpl::VideoFrameProviderClientImpl( |
0.0, 0.0, 0.0, 1.0); |
} |
+VideoFrameProviderClientImpl::~VideoFrameProviderClientImpl() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ DCHECK(stopped_); |
+} |
+ |
+VideoLayerImpl* VideoFrameProviderClientImpl::ActiveVideoLayer() const { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ return active_video_layer_; |
+} |
+ |
void VideoFrameProviderClientImpl::SetActiveVideoLayer( |
VideoLayerImpl* video_layer) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
@@ -47,19 +53,19 @@ void VideoFrameProviderClientImpl::SetActiveVideoLayer( |
} |
void VideoFrameProviderClientImpl::Stop() { |
- // It's called when the main thread is blocked, so lock isn't needed. |
- if (!provider_) |
- return; |
DCHECK(thread_checker_.CalledOnValidThread()); |
- provider_->SetVideoFrameProviderClient(nullptr); |
- provider_ = nullptr; |
+ // It's called when the main thread is blocked, so lock isn't needed. |
+ if (provider_) { |
+ provider_->SetVideoFrameProviderClient(nullptr); |
+ provider_ = nullptr; |
+ } |
+ active_video_layer_ = nullptr; |
+ stopped_ = true; |
} |
-bool VideoFrameProviderClientImpl::Stopped() { |
+bool VideoFrameProviderClientImpl::Stopped() const { |
DCHECK(thread_checker_.CalledOnValidThread()); |
- // |provider_| is changed while the main thread is blocked, and not changed |
- // thereafter, so lock isn't needed. |
- return !provider_; |
+ return stopped_; |
} |
scoped_refptr<media::VideoFrame> |
@@ -85,6 +91,12 @@ void VideoFrameProviderClientImpl::ReleaseLock() { |
provider_lock_.Release(); |
} |
+const gfx::Transform& VideoFrameProviderClientImpl::StreamTextureMatrix() |
+ const { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ return stream_texture_matrix_; |
+} |
+ |
void VideoFrameProviderClientImpl::StopUsingProvider() { |
// Block the provider from shutting down until this client is done |
// using the frame. |