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