summaryrefslogtreecommitdiffstats
path: root/cc/surfaces/surface.cc
diff options
context:
space:
mode:
authorjbauman <jbauman@chromium.org>2014-12-10 16:23:08 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-11 00:23:27 +0000
commit264491f70f7ccfadf6da80a0f443a34d81f62242 (patch)
tree483c74c413abc5e73bad7894c8e9571b60f04a51 /cc/surfaces/surface.cc
parentf93fd5ba755727d30e0d4e82f999feb92405856d (diff)
downloadchromium_src-264491f70f7ccfadf6da80a0f443a34d81f62242.zip
chromium_src-264491f70f7ccfadf6da80a0f443a34d81f62242.tar.gz
chromium_src-264491f70f7ccfadf6da80a0f443a34d81f62242.tar.bz2
Execute Surface draw callback when Surface is destroyed.
Also add an argument to the callback that's true if the frame was actually drawn, and false otherwise. BUG=439931, 440827 Review URL: https://codereview.chromium.org/791903002 Cr-Commit-Position: refs/heads/master@{#307802}
Diffstat (limited to 'cc/surfaces/surface.cc')
-rw-r--r--cc/surfaces/surface.cc12
1 files changed, 7 insertions, 5 deletions
diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc
index c7b1145..98ae58c 100644
--- a/cc/surfaces/surface.cc
+++ b/cc/surfaces/surface.cc
@@ -33,10 +33,12 @@ Surface::~Surface() {
&current_resources);
factory_->UnrefResources(current_resources);
}
+ if (!draw_callback_.is_null())
+ draw_callback_.Run(false);
}
void Surface::QueueFrame(scoped_ptr<CompositorFrame> frame,
- const base::Closure& callback) {
+ const DrawCallback& callback) {
DCHECK(factory_);
ClearCopyRequests();
TakeLatencyInfo(&frame->metadata.latency_info);
@@ -54,7 +56,7 @@ void Surface::QueueFrame(scoped_ptr<CompositorFrame> frame,
factory_->UnrefResources(previous_resources);
}
if (!draw_callback_.is_null())
- draw_callback_.Run();
+ draw_callback_.Run(false);
draw_callback_ = callback;
factory_->manager()->DidSatisfySequences(
SurfaceIdAllocator::NamespaceForId(surface_id_),
@@ -106,9 +108,9 @@ void Surface::TakeLatencyInfo(std::vector<ui::LatencyInfo>* latency_info) {
void Surface::RunDrawCallbacks() {
if (!draw_callback_.is_null()) {
- base::Closure callback = draw_callback_;
- draw_callback_ = base::Closure();
- callback.Run();
+ DrawCallback callback = draw_callback_;
+ draw_callback_ = DrawCallback();
+ callback.Run(true);
}
}