diff options
author | jbauman <jbauman@chromium.org> | 2014-12-10 16:23:08 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-11 00:23:27 +0000 |
commit | 264491f70f7ccfadf6da80a0f443a34d81f62242 (patch) | |
tree | 483c74c413abc5e73bad7894c8e9571b60f04a51 /cc/surfaces/surface.cc | |
parent | f93fd5ba755727d30e0d4e82f999feb92405856d (diff) | |
download | chromium_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.cc | 12 |
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() { ¤t_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); } } |