blob: 6f64df629e73bee3758e0e00a281ffbca3a1b641 [file] [log] [blame]
James Robinson646469d2014-10-03 15:33:28 -07001// Copyright 2013 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_H_
6#define CC_RESOURCES_SINGLE_RELEASE_CALLBACK_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "cc/base/cc_export.h"
10#include "cc/resources/release_callback.h"
11
12namespace cc {
13
14class CC_EXPORT SingleReleaseCallback {
15 public:
16 static scoped_ptr<SingleReleaseCallback> Create(const ReleaseCallback& cb) {
17 return make_scoped_ptr(new SingleReleaseCallback(cb));
18 }
19
20 ~SingleReleaseCallback();
21
22 void Run(uint32 sync_point, bool is_lost);
23
24 private:
25 explicit SingleReleaseCallback(const ReleaseCallback& callback);
26
27 bool has_been_run_;
28 ReleaseCallback callback_;
29};
30
31} // namespace cc
32
33#endif // CC_RESOURCES_SINGLE_RELEASE_CALLBACK_H_