| Index: cc/layers/video_layer_impl.cc
|
| diff --git a/cc/layers/video_layer_impl.cc b/cc/layers/video_layer_impl.cc
|
| index 38494525536097775d0cd6b25a2433002c5efa67..8613232c9d90c0109c9e44a6369716a1e6ff77f2 100644
|
| --- a/cc/layers/video_layer_impl.cc
|
| +++ b/cc/layers/video_layer_impl.cc
|
| @@ -69,8 +69,10 @@ void VideoLayerImpl::DidBecomeActive() {
|
| provider_client_impl_->set_active_video_layer(this);
|
| }
|
|
|
| -void VideoLayerImpl::WillDraw(ResourceProvider* resource_provider) {
|
| - LayerImpl::WillDraw(resource_provider);
|
| +bool VideoLayerImpl::WillDraw(DrawMode draw_mode,
|
| + ResourceProvider* resource_provider) {
|
| + if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE)
|
| + return false;
|
|
|
| // Explicitly acquire and release the provider mutex so it can be held from
|
| // WillDraw to DidDraw. Since the compositor thread is in the middle of
|
| @@ -86,9 +88,11 @@ void VideoLayerImpl::WillDraw(ResourceProvider* resource_provider) {
|
| updater_.reset();
|
|
|
| provider_client_impl_->ReleaseLock();
|
| - return;
|
| + return false;
|
| }
|
|
|
| + LayerImpl::WillDraw(draw_mode, resource_provider);
|
| +
|
| if (!updater_)
|
| updater_.reset(new VideoResourceUpdater(resource_provider));
|
|
|
| @@ -105,14 +109,14 @@ void VideoLayerImpl::WillDraw(ResourceProvider* resource_provider) {
|
| software_resources_ = external_resources.software_resources;
|
| software_release_callback_ =
|
| external_resources.software_release_callback;
|
| - return;
|
| + return true;
|
| }
|
|
|
| if (external_resources.hardware_resource) {
|
| hardware_resource_ = external_resources.hardware_resource;
|
| hardware_release_callback_ =
|
| external_resources.hardware_release_callback;
|
| - return;
|
| + return true;
|
| }
|
|
|
| for (size_t i = 0; i < external_resources.mailboxes.size(); ++i) {
|
| @@ -120,6 +124,8 @@ void VideoLayerImpl::WillDraw(ResourceProvider* resource_provider) {
|
| resource_provider->CreateResourceFromTextureMailbox(
|
| external_resources.mailboxes[i]));
|
| }
|
| +
|
| + return true;
|
| }
|
|
|
| void VideoLayerImpl::AppendQuads(QuadSink* quad_sink,
|
| @@ -280,9 +286,6 @@ void VideoLayerImpl::AppendQuads(QuadSink* quad_sink,
|
| void VideoLayerImpl::DidDraw(ResourceProvider* resource_provider) {
|
| LayerImpl::DidDraw(resource_provider);
|
|
|
| - if (!frame_)
|
| - return;
|
| -
|
| if (frame_resource_type_ ==
|
| VideoFrameExternalResources::SOFTWARE_RESOURCE) {
|
| for (size_t i = 0; i < software_resources_.size(); ++i)
|
| @@ -304,6 +307,7 @@ void VideoLayerImpl::DidDraw(ResourceProvider* resource_provider) {
|
| frame_ = NULL;
|
|
|
| provider_client_impl_->ReleaseLock();
|
| +
|
| }
|
|
|
| void VideoLayerImpl::DidLoseOutputSurface() {
|
|
|