mirror of
https://gitlab.freedesktop.org/mesa/vulkan-wsi-layer.git
synced 2025-12-20 02:10:13 +01:00
Update clang-format rules
Signed-off-by: Dennis Tsiang <dennis.tsiang@arm.com> Change-Id: I76f87648a8ddaeddb6774123d263957b845d10a1
This commit is contained in:
parent
b02486ff87
commit
4423a52816
16 changed files with 133 additions and 73 deletions
|
|
@ -1,109 +1,183 @@
|
|||
# The style used for all options not specifically set in the configuration.
|
||||
BasedOnStyle: LLVM
|
||||
|
||||
# The extra indent or outdent of access modifiers, e.g. public:.
|
||||
AccessModifierOffset: -3
|
||||
|
||||
# If true, aligns escaped newlines as far left as possible. Otherwise puts them into the right-most column.
|
||||
AlignEscapedNewlinesLeft: true
|
||||
|
||||
# If true, aligns trailing comments.
|
||||
AlignTrailingComments: true
|
||||
|
||||
# Allow putting all parameters of a function declaration onto the next line even if BinPackParameters is false.
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
|
||||
# Allows contracting simple braced statements to a single line.
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
|
||||
# If true, short case labels will be contracted to a single line.
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
|
||||
# Dependent on the value, int f() { return 0; } can be put on a single line. Possible values: None, Inline, All.
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
|
||||
# If true, if (a) return; can be put on a single line.
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
|
||||
# If true, while (true) continue; can be put on a single line.
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
|
||||
# If true, always break after function definition return types.
|
||||
AlwaysBreakAfterDefinitionReturnType: false
|
||||
|
||||
# If true, always break before multiline string literals.
|
||||
AlwaysBreakBeforeMultilineStrings: false
|
||||
|
||||
# If true, always break after the template<...> of a template declaration.
|
||||
AlwaysBreakTemplateDeclarations: true
|
||||
|
||||
# If false, a function call's arguments will either be all on the same line or will have one line each.
|
||||
BinPackArguments: true
|
||||
|
||||
# If false, a function declaration's or function definition's parameters will either all be on the same line
|
||||
# or will have one line each.
|
||||
BinPackParameters: true
|
||||
|
||||
# The way to wrap binary operators. Possible values: None, NonAssignment, All.
|
||||
BreakBeforeBinaryOperators: None
|
||||
|
||||
BreakBeforeBraces: Allman
|
||||
# The brace breaking style to use. Possible values: Attach, Linux, Stroustrup, Allman, GNU.
|
||||
BreakBeforeBraces: Custom
|
||||
# Like Allman but do not indent extern blocks
|
||||
BraceWrapping:
|
||||
AfterExternBlock: 'false'
|
||||
AfterCaseLabel: 'true'
|
||||
AfterClass: 'true'
|
||||
AfterEnum: 'true'
|
||||
AfterFunction: 'true'
|
||||
AfterNamespace: 'true'
|
||||
AfterObjCDeclaration: 'true'
|
||||
AfterStruct: 'true'
|
||||
AfterUnion: 'true'
|
||||
BeforeCatch: 'true'
|
||||
BeforeElse: 'true'
|
||||
AfterControlStatement: 'Always'
|
||||
|
||||
# If true, ternary operators will be placed after line breaks.
|
||||
BreakBeforeTernaryOperators: false
|
||||
|
||||
# Always break constructor initializers before commas and align the commas with the colon.
|
||||
BreakConstructorInitializersBeforeComma: true
|
||||
|
||||
# The column limit. A column limit of 0 means that there is no column limit.
|
||||
ColumnLimit: 120
|
||||
|
||||
# A regular expression that describes comments with special meaning, which should not be split into lines or otherwise changed.
|
||||
CommentPragmas: '^ *'
|
||||
|
||||
# If the constructor initializers don't fit on a line, put each initializer on its own line.
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||
|
||||
# The number of characters to use for indentation of constructor initializer lists.
|
||||
ConstructorInitializerIndentWidth: 3
|
||||
|
||||
# Indent width for line continuations.
|
||||
ContinuationIndentWidth: 3
|
||||
|
||||
# If true, format braced lists as best suited for C++11 braced lists.
|
||||
Cpp11BracedListStyle: false
|
||||
|
||||
# Disables formatting at all.
|
||||
DisableFormat: false
|
||||
|
||||
# A vector of macros that should be interpreted as foreach loops instead of as function calls.
|
||||
ForEachMacros: ['']
|
||||
|
||||
# Indent case labels one level from the switch statement.
|
||||
# When false, use the same indentation level as for the switch statement.
|
||||
# Switch statement body is always indented one level more than case labels.
|
||||
IndentCaseLabels: false
|
||||
|
||||
# The number of columns to use for indentation.
|
||||
IndentWidth: 3
|
||||
|
||||
# Indent if a function definition or declaration is wrapped after the type.
|
||||
IndentWrappedFunctionNames: false
|
||||
|
||||
# If true, empty lines at the start of blocks are kept.
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
|
||||
# Language, this format style is targeted at. Possible values: None, Cpp, Java, JavaScript, Proto.
|
||||
Language: Cpp
|
||||
|
||||
# The maximum number of consecutive empty lines to keep.
|
||||
MaxEmptyLinesToKeep: 1
|
||||
|
||||
# The indentation used for namespaces. Possible values: None, Inner, All.
|
||||
NamespaceIndentation: None
|
||||
|
||||
# The penalty for breaking a function call after "call(".
|
||||
PenaltyBreakBeforeFirstCallParameter: 19
|
||||
|
||||
# The penalty for each line break introduced inside a comment.
|
||||
PenaltyBreakComment: 300
|
||||
|
||||
# The penalty for breaking before the first <<.
|
||||
PenaltyBreakFirstLessLess: 120
|
||||
|
||||
# The penalty for each line break introduced inside a string literal.
|
||||
PenaltyBreakString: 1000
|
||||
|
||||
# The penalty for each character outside of the column limit.
|
||||
PenaltyExcessCharacter: 1000000
|
||||
|
||||
# Penalty for putting the return type of a function onto its own line.
|
||||
PenaltyReturnTypeOnItsOwnLine: 1000000000
|
||||
|
||||
# Pointer and reference alignment style. Possible values: Left, Right, Middle.
|
||||
PointerAlignment: Right
|
||||
|
||||
# Do not sort includes
|
||||
SortIncludes: false
|
||||
|
||||
# If true, a space may be inserted after C style casts.
|
||||
SpaceAfterCStyleCast: false
|
||||
|
||||
# If false, spaces will be removed before assignment operators.
|
||||
SpaceBeforeAssignmentOperators: true
|
||||
|
||||
# Defines in which cases to put a space before opening parentheses. Possible values: Never, ControlStatements, Always.
|
||||
SpaceBeforeParens: ControlStatements
|
||||
|
||||
# If true, spaces may be inserted into '()'.
|
||||
SpaceInEmptyParentheses: false
|
||||
|
||||
# The number of spaces before trailing line comments (// - comments).
|
||||
SpacesBeforeTrailingComments: 1
|
||||
|
||||
# If true, spaces will be inserted after '<' and before '>' in template argument lists.
|
||||
SpacesInAngles: false
|
||||
|
||||
# If true, spaces may be inserted into C style casts.
|
||||
SpacesInCStyleCastParentheses: false
|
||||
|
||||
# If true, spaces are inserted inside container literals (e.g. ObjC and Javascript array and dict literals).
|
||||
SpacesInContainerLiterals: false
|
||||
|
||||
# If true, spaces will be inserted after '(' and before ')'.
|
||||
SpacesInParentheses: false
|
||||
|
||||
# If true, spaces will be inserted after '[' and befor']'.
|
||||
SpacesInSquareBrackets: false
|
||||
|
||||
# Format compatible with this standard, e.g. use A<A<int> > instead of A<A<int>> for LS_Cpp03. Possible values: Cpp03, Cpp11, Auto.
|
||||
Standard: Cpp11
|
||||
|
||||
# The number of columns used for tab stops.
|
||||
TabWidth: 3
|
||||
|
||||
# The way to use tab characters in the resulting file. Possible values: Never, ForIndentation, Always.
|
||||
UseTab: Never
|
||||
|
||||
FixNamespaceComments: false
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ minimum_pre_commit_version: 2.9.0
|
|||
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/mirrors-clang-format
|
||||
rev: v10.0.1
|
||||
rev: v14.0.0
|
||||
hooks:
|
||||
- id: clang-format
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2020-2021 Arm Limited.
|
||||
* Copyright (c) 2020-2021, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -45,7 +45,7 @@ VWL_VKAPI_CALL(void) default_free(void *, void *pMemory) VWL_API_POST
|
|||
free(pMemory);
|
||||
}
|
||||
|
||||
const allocator& allocator::get_generic()
|
||||
const allocator &allocator::get_generic()
|
||||
{
|
||||
static allocator generic{ VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, nullptr };
|
||||
return generic;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2020-2022 Arm Limited.
|
||||
* Copyright (c) 2020-2022, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -99,7 +99,7 @@ public:
|
|||
* @return Pointer to the newly created objects or @c nullptr if allocation failed.
|
||||
*/
|
||||
template <typename T, typename... arg_types>
|
||||
T *create(size_t num_objects, arg_types &&... args) const noexcept;
|
||||
T *create(size_t num_objects, arg_types &&...args) const noexcept;
|
||||
|
||||
/**
|
||||
* @brief Helper method to destroy and deallocate objects constructed with allocator::create().
|
||||
|
|
@ -109,7 +109,7 @@ public:
|
|||
void destroy(size_t num_objects, T *obj) const noexcept;
|
||||
|
||||
template <typename T, typename... Args>
|
||||
util::unique_ptr<T> make_unique(Args &&... args) const noexcept;
|
||||
util::unique_ptr<T> make_unique(Args &&...args) const noexcept;
|
||||
|
||||
VkAllocationCallbacks m_callbacks{};
|
||||
VkSystemAllocationScope m_scope;
|
||||
|
|
@ -193,7 +193,7 @@ bool operator!=(const custom_allocator<T> &, const custom_allocator<U> &)
|
|||
}
|
||||
|
||||
template <typename T, typename... arg_types>
|
||||
T *allocator::create(size_t num_objects, arg_types &&... args) const noexcept
|
||||
T *allocator::create(size_t num_objects, arg_types &&...args) const noexcept
|
||||
{
|
||||
if (num_objects < 1)
|
||||
{
|
||||
|
|
@ -282,7 +282,7 @@ public:
|
|||
* @brief Creates a util::unique_ptr object using the allocator for the deleter.
|
||||
*/
|
||||
template <typename T, typename... Args>
|
||||
util::unique_ptr<T> allocator::make_unique(Args &&... args) const noexcept
|
||||
util::unique_ptr<T> allocator::make_unique(Args &&...args) const noexcept
|
||||
{
|
||||
T *object = create<T>(1, std::forward<Args>(args)...);
|
||||
return util::unique_ptr<T>(object, *this);
|
||||
|
|
@ -324,7 +324,7 @@ public:
|
|||
* @return @c false iff the operation could not be performed due to an allocation failure.
|
||||
*/
|
||||
template <typename... arg_types>
|
||||
bool try_push_back(arg_types &&... args) noexcept
|
||||
bool try_push_back(arg_types &&...args) noexcept
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
@ -356,7 +356,7 @@ public:
|
|||
* @return @c false iff the operation could not be performed due to an allocation failure.
|
||||
*/
|
||||
template <typename... arg_types>
|
||||
bool try_resize(arg_types &&... args) noexcept
|
||||
bool try_resize(arg_types &&...args) noexcept
|
||||
{
|
||||
try
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021 Arm Limited.
|
||||
* Copyright (c) 2021, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -44,7 +44,6 @@ namespace util
|
|||
class fd_owner : private noncopyable
|
||||
{
|
||||
public:
|
||||
|
||||
fd_owner() = default;
|
||||
fd_owner(int fd)
|
||||
: fd_handle{ fd }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2022 Arm Limited.
|
||||
* Copyright (c) 2022, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017, 2019 Arm Limited.
|
||||
* Copyright (c) 2017, 2019, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -39,8 +39,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
extern "C"
|
||||
{
|
||||
extern "C" {
|
||||
#include <pthread.h>
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2022 Arm Limited.
|
||||
* Copyright (c) 2021-2022, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -37,9 +37,7 @@ namespace util
|
|||
* exceptions don't throw them and also ensures that the memory can
|
||||
* only be allocated by an custom_allocator.
|
||||
*/
|
||||
template <typename Key, typename Value,
|
||||
typename Hash = std::hash<Key>,
|
||||
typename Comparator = std::equal_to<Key>,
|
||||
template <typename Key, typename Value, typename Hash = std::hash<Key>, typename Comparator = std::equal_to<Key>,
|
||||
typename Allocator = util::custom_allocator<std::pair<const Key, Value>>>
|
||||
class unordered_map : public std::unordered_map<Key, Value, Hash, Comparator, Allocator>, private noncopyable
|
||||
{
|
||||
|
|
@ -84,7 +82,7 @@ public:
|
|||
{
|
||||
return { base::insert(value) };
|
||||
}
|
||||
catch(std::bad_alloc& e)
|
||||
catch (std::bad_alloc &e)
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
|
|
@ -104,7 +102,7 @@ public:
|
|||
base::reserve(size);
|
||||
return true;
|
||||
}
|
||||
catch(std::bad_alloc& e)
|
||||
catch (std::bad_alloc &e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -124,7 +122,7 @@ public:
|
|||
base::rehash(count);
|
||||
return true;
|
||||
}
|
||||
catch(std::bad_alloc& e)
|
||||
catch (std::bad_alloc &e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2022 Arm Limited.
|
||||
* Copyright (c) 2021-2022, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -37,9 +37,7 @@ namespace util
|
|||
* exceptions don't throw them and also ensures that the memory can
|
||||
* only be allocated by an custom_allocator.
|
||||
*/
|
||||
template <typename Key,
|
||||
typename Hash = std::hash<Key>,
|
||||
typename Comparator = std::equal_to<Key>,
|
||||
template <typename Key, typename Hash = std::hash<Key>, typename Comparator = std::equal_to<Key>,
|
||||
typename Allocator = util::custom_allocator<Key>>
|
||||
class unordered_set : public std::unordered_set<Key, Hash, Comparator, Allocator>, private noncopyable
|
||||
{
|
||||
|
|
@ -80,7 +78,7 @@ public:
|
|||
{
|
||||
try
|
||||
{
|
||||
return {base::insert(value)};
|
||||
return { base::insert(value) };
|
||||
}
|
||||
catch (const std::bad_alloc &e)
|
||||
{
|
||||
|
|
@ -102,7 +100,7 @@ public:
|
|||
base::reserve(size);
|
||||
return true;
|
||||
}
|
||||
catch(std::bad_alloc& e)
|
||||
catch (std::bad_alloc &e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -122,7 +120,7 @@ public:
|
|||
base::rehash(count);
|
||||
return true;
|
||||
}
|
||||
catch(std::bad_alloc& e)
|
||||
catch (std::bad_alloc &e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017-2019, 2021-2023 Arm Limited.
|
||||
* Copyright (c) 2017-2019, 2021-2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -100,16 +100,10 @@ class surface_format_properties
|
|||
{
|
||||
public:
|
||||
surface_format_properties(VkFormat format)
|
||||
: m_surface_format
|
||||
{
|
||||
format, VK_COLORSPACE_SRGB_NONLINEAR_KHR
|
||||
}
|
||||
: m_surface_format{ format, VK_COLORSPACE_SRGB_NONLINEAR_KHR }
|
||||
#if WSI_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN
|
||||
, m_compression
|
||||
{
|
||||
VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT, nullptr, VK_IMAGE_COMPRESSION_DEFAULT_EXT,
|
||||
VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT
|
||||
}
|
||||
, m_compression{ VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT, nullptr, VK_IMAGE_COMPRESSION_DEFAULT_EXT,
|
||||
VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT }
|
||||
#endif
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021-2022 Arm Limited.
|
||||
* Copyright (c) 2021-2022, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -38,8 +38,8 @@
|
|||
|
||||
namespace layer
|
||||
{
|
||||
class device_private_data;
|
||||
class instance_private_data;
|
||||
class device_private_data;
|
||||
class instance_private_data;
|
||||
} /* namespace layer */
|
||||
|
||||
namespace wsi
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021 Arm Limited.
|
||||
* Copyright (c) 2021, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -40,8 +40,8 @@ namespace wayland
|
|||
|
||||
struct formats_vector
|
||||
{
|
||||
util::vector<drm_format_pair> *formats{nullptr};
|
||||
bool is_out_of_memory{false};
|
||||
util::vector<drm_format_pair> *formats{ nullptr };
|
||||
bool is_out_of_memory{ false };
|
||||
};
|
||||
|
||||
namespace
|
||||
|
|
@ -120,7 +120,7 @@ static VkResult get_supported_formats_and_modifiers(wl_display *display, wl_even
|
|||
|
||||
struct surface::init_parameters
|
||||
{
|
||||
const util::allocator& allocator;
|
||||
const util::allocator &allocator;
|
||||
wl_display *display;
|
||||
wl_surface *surf;
|
||||
};
|
||||
|
|
@ -242,10 +242,9 @@ bool surface::init()
|
|||
return true;
|
||||
}
|
||||
|
||||
util::unique_ptr<surface> surface::make_surface(const util::allocator &allocator, wl_display *display,
|
||||
wl_surface *surf)
|
||||
util::unique_ptr<surface> surface::make_surface(const util::allocator &allocator, wl_display *display, wl_surface *surf)
|
||||
{
|
||||
init_parameters params {allocator, display, surf};
|
||||
init_parameters params{ allocator, display, surf };
|
||||
auto wsi_surface = allocator.make_unique<surface>(params);
|
||||
if (wsi_surface != nullptr)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021 Arm Limited.
|
||||
* Copyright (c) 2021, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -60,7 +60,7 @@ public:
|
|||
struct init_parameters;
|
||||
|
||||
/** Constructor to allow for custom allocation, but require privately defined arguments. */
|
||||
surface(const init_parameters&);
|
||||
surface(const init_parameters &);
|
||||
|
||||
/**
|
||||
* @brief Allocates and initializes a surface
|
||||
|
|
@ -109,7 +109,7 @@ public:
|
|||
*
|
||||
* The raw pointer is valid for the lifetime of the surface.
|
||||
*/
|
||||
zwp_linux_surface_synchronization_v1* get_surface_sync_interface()
|
||||
zwp_linux_surface_synchronization_v1 *get_surface_sync_interface()
|
||||
{
|
||||
return surface_sync_interface.get();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017-2019, 2021-2022 Arm Limited.
|
||||
* Copyright (c) 2017-2019, 2021-2022, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -27,8 +27,7 @@
|
|||
#include "wsi/swapchain_base.hpp"
|
||||
#include "wl_helpers.hpp"
|
||||
|
||||
extern "C"
|
||||
{
|
||||
extern "C" {
|
||||
#include <vulkan/vk_icd.h>
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2017-2019, 2021 Arm Limited.
|
||||
* Copyright (c) 2017-2019, 2021, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2021 Arm Limited.
|
||||
* Copyright (c) 2021, 2024 Arm Limited.
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
|
@ -77,7 +77,7 @@ struct wayland_deleter
|
|||
}
|
||||
};
|
||||
|
||||
template<typename T>
|
||||
template <typename T>
|
||||
using wayland_owner = std::unique_ptr<T, wayland_deleter<T>>;
|
||||
|
||||
template <typename T>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue