103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file.
403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifndef CC_TREES_SCOPED_ABORT_REMAINING_SWAP_PROMISES_H_
603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define CC_TREES_SCOPED_ABORT_REMAINING_SWAP_PROMISES_H_
703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/base/swap_promise.h"
903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/trees/layer_tree_host.h"
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace cc {
1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class ScopedAbortRemainingSwapPromises {
1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) public:
1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  explicit ScopedAbortRemainingSwapPromises(LayerTreeHost* layer_tree_host)
1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)      : layer_tree_host_(layer_tree_host) {}
1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  ~ScopedAbortRemainingSwapPromises() {
1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)    layer_tree_host_->BreakSwapPromises(SwapPromise::COMMIT_FAILS);
2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  }
2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) private:
2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  LayerTreeHost* layer_tree_host_;
2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ScopedAbortRemainingSwapPromises);
2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)};
2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace cc
2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)
3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif  // CC_TREES_SCOPED_ABORT_REMAINING_SWAP_PROMISES_H_
31