diff options
author | Brian Osman <brianosman@google.com> | 2017-11-16 22:31:30 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-16 22:31:39 +0000 |
commit | 1e09e461d2ffcf8b07242cfe93dd7d12c4d75866 (patch) | |
tree | 59ecb8a613b8a958522036043ed6e5a4c4e329ca /src/pdf | |
parent | 8dca18ac7b8af9a945abe4ae0d9190a1d2bff3d6 (diff) |
Revert "Add method to sk_gpu_test::TestContext to automatically restore the previous context."
This reverts commit 5627d65146cb92624b682389e017d488872228c7.
Reason for revert: Google3
Original change's description:
> Add method to sk_gpu_test::TestContext to automatically restore the previous context.
>
> The motivation for this is to allow a GM to create a GL context, do some some work in it, and then return to the context that was set when it was invoked.
>
> Change-Id: Ie8496072a10f8f3ff36a08889e593a6ca961b61a
> Reviewed-on: https://skia-review.googlesource.com/70720
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Brian Osman <brianosman@google.com>
TBR=bsalomon@google.com,brianosman@google.com
Change-Id: Ifb79638c9d4500ca3be9a5be39a5ad78b20247c1
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/72981
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Diffstat (limited to 'src/pdf')
-rw-r--r-- | src/pdf/SkScopeExit.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/pdf/SkScopeExit.h b/src/pdf/SkScopeExit.h new file mode 100644 index 0000000000..5b7bcdc076 --- /dev/null +++ b/src/pdf/SkScopeExit.h @@ -0,0 +1,50 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkScopeExit_DEFINED +#define SkScopeExit_DEFINED + +#include "SkTypes.h" + +/** + * SK_AT_SCOPE_EXIT(stmt) evaluates stmt when the current scope ends. + * + * E.g. + * { + * int x = 5; + * { + * SK_AT_SCOPE_EXIT(x--); + * SkASSERT(x == 5); + * } + * SkASSERT(x == 4); + * } + */ +template <typename Fn> +class SkScopeExit { +public: + SkScopeExit(Fn f) : fFn(std::move(f)) {} + ~SkScopeExit() { fFn(); } + +private: + Fn fFn; + + SkScopeExit( const SkScopeExit& ) = delete; + SkScopeExit& operator=(const SkScopeExit& ) = delete; + SkScopeExit( SkScopeExit&&) = delete; + SkScopeExit& operator=( SkScopeExit&&) = delete; +}; + +template <typename Fn> +inline SkScopeExit<Fn> SkMakeScopeExit(Fn&& fn) { + return {std::move(fn)}; +} + +#define SK_AT_SCOPE_EXIT(stmt) \ + SK_UNUSED auto&& SK_MACRO_APPEND_LINE(at_scope_exit_) = \ + SkMakeScopeExit([&]() { stmt; }); + +#endif // SkScopeExit_DEFINED |