summaryrefslogtreecommitdiff
path: root/thirdparty/openxr/src/common/unique_asset.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/openxr/src/common/unique_asset.h')
-rw-r--r--thirdparty/openxr/src/common/unique_asset.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/thirdparty/openxr/src/common/unique_asset.h b/thirdparty/openxr/src/common/unique_asset.h
new file mode 100644
index 0000000000..4929039a03
--- /dev/null
+++ b/thirdparty/openxr/src/common/unique_asset.h
@@ -0,0 +1,33 @@
+// Copyright (c) 2017-2022, The Khronos Group Inc.
+//
+// SPDX-License-Identifier: Apache-2.0 OR MIT
+#pragma once
+
+#ifdef XR_USE_PLATFORM_ANDROID
+
+#include <memory>
+#include <android/asset_manager.h>
+
+namespace deleters {
+struct AAssetDeleter {
+ void operator()(AAsset* asset) const noexcept {
+ if (asset != nullptr) {
+ AAsset_close(asset);
+ }
+ }
+};
+
+struct AAssetDirDeleter {
+ void operator()(AAssetDir* dir) const noexcept {
+ if (dir != nullptr) {
+ AAssetDir_close(dir);
+ }
+ }
+};
+
+} // namespace deleters
+
+using UniqueAsset = std::unique_ptr<AAsset, deleters::AAssetDeleter>;
+using UniqueAssetDir = std::unique_ptr<AAssetDir, deleters::AAssetDirDeleter>;
+
+#endif