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)
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  void Run(uint32 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