1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CC_RESOURCES_SINGLE_RELEASE_CALLBACK_IMPL_H_ 6#define CC_RESOURCES_SINGLE_RELEASE_CALLBACK_IMPL_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "cc/base/cc_export.h" 10#include "cc/resources/release_callback_impl.h" 11 12namespace cc { 13 14class CC_EXPORT SingleReleaseCallbackImpl { 15 public: 16 static scoped_ptr<SingleReleaseCallbackImpl> Create( 17 const ReleaseCallbackImpl& cb) { 18 return make_scoped_ptr(new SingleReleaseCallbackImpl(cb)); 19 } 20 21 ~SingleReleaseCallbackImpl(); 22 23 void Run(uint32 sync_point, 24 bool is_lost, 25 BlockingTaskRunner* main_thread_task_runner); 26 27 private: 28 explicit SingleReleaseCallbackImpl(const ReleaseCallbackImpl& callback); 29 30 bool has_been_run_; 31 ReleaseCallbackImpl callback_; 32}; 33 34} // namespace cc 35 36#endif // CC_RESOURCES_SINGLE_RELEASE_CALLBACK_IMPL_H_ 37