Index: cc/surfaces/surface.cc |
diff --git a/cc/surfaces/surface.cc b/cc/surfaces/surface.cc |
index c7b11457d6076e814fb4239c01fcc16e13049d64..98ae58c0f3bcb2773c883f151101ee2c4ac125d6 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); |
} |
} |