diff options
| author | 2018-07-21 14:51:37 -0400 | |
|---|---|---|
| committer | 2018-07-21 14:51:44 -0400 | |
| commit | 973fdce79b191b5c2887a0e410979be84ae995f4 (patch) | |
| tree | bb0c810852c16196049f3eb6aeb2333bd312c029 /src | |
| parent | Merge pull request #746 from lioncash/tests (diff) | |
| download | yuzu-973fdce79b191b5c2887a0e410979be84ae995f4.tar.gz yuzu-973fdce79b191b5c2887a0e410979be84ae995f4.tar.xz yuzu-973fdce79b191b5c2887a0e410979be84ae995f4.zip | |
common: Remove synchronized_wrapper.h
This is entirely unused in the codebase.
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | src/common/synchronized_wrapper.h | 85 |
2 files changed, 0 insertions, 86 deletions
diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index f49a31612..d5d4f6f82 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt | |||
| @@ -63,7 +63,6 @@ add_library(common STATIC | |||
| 63 | string_util.cpp | 63 | string_util.cpp |
| 64 | string_util.h | 64 | string_util.h |
| 65 | swap.h | 65 | swap.h |
| 66 | synchronized_wrapper.h | ||
| 67 | telemetry.cpp | 66 | telemetry.cpp |
| 68 | telemetry.h | 67 | telemetry.h |
| 69 | thread.cpp | 68 | thread.cpp |
diff --git a/src/common/synchronized_wrapper.h b/src/common/synchronized_wrapper.h deleted file mode 100644 index 4a1984c46..000000000 --- a/src/common/synchronized_wrapper.h +++ /dev/null | |||
| @@ -1,85 +0,0 @@ | |||
| 1 | // Copyright 2015 Citra Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include <algorithm> | ||
| 8 | #include <mutex> | ||
| 9 | |||
| 10 | namespace Common { | ||
| 11 | |||
| 12 | template <typename T> | ||
| 13 | class SynchronizedWrapper; | ||
| 14 | |||
| 15 | /** | ||
| 16 | * Synchronized reference, that keeps a SynchronizedWrapper's mutex locked during its lifetime. This | ||
| 17 | * greatly reduces the chance that someone will access the wrapped resource without locking the | ||
| 18 | * mutex. | ||
| 19 | */ | ||
| 20 | template <typename T> | ||
| 21 | class SynchronizedRef { | ||
| 22 | public: | ||
| 23 | SynchronizedRef(SynchronizedWrapper<T>& wrapper) : wrapper(&wrapper) { | ||
| 24 | wrapper.mutex.lock(); | ||
| 25 | } | ||
| 26 | |||
| 27 | SynchronizedRef(SynchronizedRef&) = delete; | ||
| 28 | SynchronizedRef(SynchronizedRef&& o) : wrapper(o.wrapper) { | ||
| 29 | o.wrapper = nullptr; | ||
| 30 | } | ||
| 31 | |||
| 32 | ~SynchronizedRef() { | ||
| 33 | if (wrapper) | ||
| 34 | wrapper->mutex.unlock(); | ||
| 35 | } | ||
| 36 | |||
| 37 | SynchronizedRef& operator=(SynchronizedRef&) = delete; | ||
| 38 | SynchronizedRef& operator=(SynchronizedRef&& o) { | ||
| 39 | std::swap(wrapper, o.wrapper); | ||
| 40 | return *this; | ||
| 41 | } | ||
| 42 | |||
| 43 | T& operator*() { | ||
| 44 | return wrapper->data; | ||
| 45 | } | ||
| 46 | const T& operator*() const { | ||
| 47 | return wrapper->data; | ||
| 48 | } | ||
| 49 | |||
| 50 | T* operator->() { | ||
| 51 | return &wrapper->data; | ||
| 52 | } | ||
| 53 | const T* operator->() const { | ||
| 54 | return &wrapper->data; | ||
| 55 | } | ||
| 56 | |||
| 57 | private: | ||
| 58 | SynchronizedWrapper<T>* wrapper; | ||
| 59 | }; | ||
| 60 | |||
| 61 | /** | ||
| 62 | * Wraps an object, only allowing access to it via a locking reference wrapper. Good to ensure no | ||
| 63 | * one forgets to lock a mutex before acessing an object. To access the wrapped object construct a | ||
| 64 | * SyncronizedRef on this wrapper. Inspired by Rust's Mutex type | ||
| 65 | * (http://doc.rust-lang.org/std/sync/struct.Mutex.html). | ||
| 66 | */ | ||
| 67 | template <typename T> | ||
| 68 | class SynchronizedWrapper { | ||
| 69 | public: | ||
| 70 | template <typename... Args> | ||
| 71 | SynchronizedWrapper(Args&&... args) : data(std::forward<Args>(args)...) {} | ||
| 72 | |||
| 73 | SynchronizedRef<T> Lock() { | ||
| 74 | return {*this}; | ||
| 75 | } | ||
| 76 | |||
| 77 | private: | ||
| 78 | template <typename U> | ||
| 79 | friend class SynchronizedRef; | ||
| 80 | |||
| 81 | std::mutex mutex; | ||
| 82 | T data; | ||
| 83 | }; | ||
| 84 | |||
| 85 | } // namespace Common | ||