11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved. 21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be 31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file. 41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef CC_RESOURCES_SINGLE_RELEASE_CALLBACK_IMPL_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CC_RESOURCES_SINGLE_RELEASE_CALLBACK_IMPL_H_ 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/scoped_ptr.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "cc/base/cc_export.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "cc/resources/release_callback_impl.h" 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace cc { 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass CC_EXPORT SingleReleaseCallbackImpl { 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static scoped_ptr<SingleReleaseCallbackImpl> Create( 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const ReleaseCallbackImpl& cb) { 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return make_scoped_ptr(new SingleReleaseCallbackImpl(cb)); 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ~SingleReleaseCallbackImpl(); 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void Run(uint32 sync_point, 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool is_lost, 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci BlockingTaskRunner* main_thread_task_runner); 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private: 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci explicit SingleReleaseCallbackImpl(const ReleaseCallbackImpl& callback); 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool has_been_run_; 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ReleaseCallbackImpl callback_; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace cc 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // CC_RESOURCES_SINGLE_RELEASE_CALLBACK_IMPL_H_ 37