summaryrefslogtreecommitdiff
path: root/chromium/cc/layers/video_layer_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/cc/layers/video_layer_impl.cc')
-rw-r--r--chromium/cc/layers/video_layer_impl.cc17
1 files changed, 12 insertions, 5 deletions
diff --git a/chromium/cc/layers/video_layer_impl.cc b/chromium/cc/layers/video_layer_impl.cc
index 4b5671ff90e..28e470e7c3b 100644
--- a/chromium/cc/layers/video_layer_impl.cc
+++ b/chromium/cc/layers/video_layer_impl.cc
@@ -13,6 +13,7 @@
#include "cc/quads/texture_draw_quad.h"
#include "cc/quads/yuv_video_draw_quad.h"
#include "cc/resources/resource_provider.h"
+#include "cc/resources/single_release_callback.h"
#include "cc/trees/layer_tree_impl.h"
#include "cc/trees/proxy.h"
#include "media/base/video_frame.h"
@@ -93,8 +94,11 @@ bool VideoLayerImpl::WillDraw(DrawMode draw_mode,
if (!LayerImpl::WillDraw(draw_mode, resource_provider))
return false;
- if (!updater_)
- updater_.reset(new VideoResourceUpdater(resource_provider));
+ if (!updater_) {
+ updater_.reset(
+ new VideoResourceUpdater(layer_tree_impl()->context_provider(),
+ layer_tree_impl()->resource_provider()));
+ }
VideoFrameExternalResources external_resources =
updater_->CreateExternalResourcesFromVideoFrame(frame_);
@@ -108,10 +112,13 @@ bool VideoLayerImpl::WillDraw(DrawMode draw_mode,
return true;
}
+ DCHECK_EQ(external_resources.mailboxes.size(),
+ external_resources.release_callbacks.size());
for (size_t i = 0; i < external_resources.mailboxes.size(); ++i) {
- frame_resources_.push_back(
- resource_provider->CreateResourceFromTextureMailbox(
- external_resources.mailboxes[i]));
+ unsigned resource_id = resource_provider->CreateResourceFromTextureMailbox(
+ external_resources.mailboxes[i],
+ SingleReleaseCallback::Create(external_resources.release_callbacks[i]));
+ frame_resources_.push_back(resource_id);
}
return true;