| 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);
 | 
|    }
 | 
|  }
 | 
|  
 | 
| 
 |