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