From 079f15364096566139cfe5a8bcc36cbeee7b345a Mon Sep 17 00:00:00 2001 From: Lynix Date: Tue, 28 Nov 2023 20:05:09 +0100 Subject: [PATCH] Minor fixes --- include/Nazara/Audio/Music.hpp | 11 +++++----- include/Nazara/Renderer/RenderResources.hpp | 22 +++++++++---------- include/Nazara/Renderer/RenderResources.inl | 14 ++++++------ include/Nazara/Utility/Formats/OBJParser.inl | 4 ++-- src/Nazara/Audio/Music.cpp | 4 +++- src/Nazara/Audio/OpenALLibrary.cpp | 16 ++++++++------ src/Nazara/Core/RefCounted.cpp | 2 +- src/Nazara/Core/StringExt.cpp | 4 ++-- src/Nazara/Graphics/DepthPipelinePass.cpp | 2 +- .../UniformValuePropertyHandler.cpp | 2 +- src/Nazara/Network/Win32/SocketImpl.cpp | 2 +- .../OpenGLRenderer/OpenGLCommandBuffer.cpp | 2 +- src/Nazara/OpenGLRenderer/Wrapper/Context.cpp | 8 +++---- src/Nazara/Utility/Formats/GIFLoader.cpp | 2 +- src/Nazara/Utility/Formats/MD5MeshParser.cpp | 4 ++-- tests/UnitTests/Engine/Core/StringExtTest.cpp | 1 + 16 files changed, 53 insertions(+), 47 deletions(-) diff --git a/include/Nazara/Audio/Music.hpp b/include/Nazara/Audio/Music.hpp index ffa69a46f..35395a0d8 100644 --- a/include/Nazara/Audio/Music.hpp +++ b/include/Nazara/Audio/Music.hpp @@ -61,6 +61,11 @@ namespace Nz Music& operator=(Music&&) = delete; private: + bool FillAndQueueBuffer(std::shared_ptr buffer); + void MusicThread(std::condition_variable& cv, std::mutex& m, std::exception_ptr& err, bool startPaused); + void StartThread(bool startPaused); + void StopThread(); + AudioFormat m_audioFormat; std::atomic_bool m_streaming; std::atomic m_processedSamples; @@ -72,11 +77,7 @@ namespace Nz UInt32 m_sampleRate; UInt64 m_streamOffset; bool m_looping; - - bool FillAndQueueBuffer(std::shared_ptr buffer); - void MusicThread(std::condition_variable& cv, std::mutex& m, std::exception_ptr& err, bool startPaused); - void StartThread(bool startPaused); - void StopThread(); + bool m_musicStarted; }; } diff --git a/include/Nazara/Renderer/RenderResources.hpp b/include/Nazara/Renderer/RenderResources.hpp index 851ffaf6d..6201d728e 100644 --- a/include/Nazara/Renderer/RenderResources.hpp +++ b/include/Nazara/Renderer/RenderResources.hpp @@ -11,7 +11,7 @@ #include #include #include -#include +#include #include #include @@ -28,7 +28,7 @@ namespace Nz class Releasable; class ReleasableCallback; template class ReleasableData; - template class ReleasableLambda; + template class ReleasableFunctor; virtual ~RenderResources(); @@ -42,7 +42,7 @@ namespace Nz template void PushForRelease(const T& value) = delete; template void PushForRelease(T&& value); - template void PushReleaseCallback(F&& callback); + template void PushReleaseCallback(F&& callback); virtual void SubmitCommandBuffer(CommandBuffer* commandBuffer, QueueTypeFlags queueTypeFlags) = 0; @@ -93,19 +93,19 @@ namespace Nz T m_data; }; - template - class RenderResources::ReleasableLambda final : public ReleasableCallback + template + class RenderResources::ReleasableFunctor final : public ReleasableCallback { public: - template ReleasableLambda(U&& lambda); - ReleasableLambda(const ReleasableLambda&) = delete; - ReleasableLambda(ReleasableLambda&&) = delete; - ~ReleasableLambda() = default; + template requires(std::constructible_from) ReleasableFunctor(U&& lambda); + ReleasableFunctor(const ReleasableFunctor&) = delete; + ReleasableFunctor(ReleasableFunctor&&) = delete; + ~ReleasableFunctor() = default; void Release() override; - ReleasableLambda& operator=(const ReleasableLambda&) = delete; - ReleasableLambda& operator=(ReleasableLambda&&) = delete; + ReleasableFunctor& operator=(const ReleasableFunctor&) = delete; + ReleasableFunctor& operator=(ReleasableFunctor&&) = delete; private: T m_lambda; diff --git a/include/Nazara/Renderer/RenderResources.inl b/include/Nazara/Renderer/RenderResources.inl index 13a0698c2..106f85fc7 100644 --- a/include/Nazara/Renderer/RenderResources.inl +++ b/include/Nazara/Renderer/RenderResources.inl @@ -47,10 +47,10 @@ namespace Nz m_releaseQueue.push_back(releasable); } - template + template void RenderResources::PushReleaseCallback(F&& callback) { - using ReleaseFunctor = ReleasableLambda>>; + using ReleaseFunctor = ReleasableFunctor>>; ReleaseFunctor* releasable = Allocate(); PlacementNew(releasable, std::forward(callback)); @@ -117,19 +117,19 @@ namespace Nz { } - template + template template - RenderResources::ReleasableLambda::ReleasableLambda(U&& lambda) : + requires(std::constructible_from) + RenderResources::ReleasableFunctor::ReleasableFunctor(U&& lambda) : m_lambda(std::forward(lambda)) { } - template - void RenderResources::ReleasableLambda::Release() + template + void RenderResources::ReleasableFunctor::Release() { m_lambda(); } } #include -#include "RenderResources.hpp" diff --git a/include/Nazara/Utility/Formats/OBJParser.inl b/include/Nazara/Utility/Formats/OBJParser.inl index 10b07cd0e..04f38babb 100644 --- a/include/Nazara/Utility/Formats/OBJParser.inl +++ b/include/Nazara/Utility/Formats/OBJParser.inl @@ -153,7 +153,7 @@ namespace Nz inline void OBJParser::Error(const std::string& message) { - NazaraErrorFmt("{0} at line #{1}", message, m_lineCount); + NazaraErrorFmt("{0} on line #{1}", message, m_lineCount); } inline void OBJParser::Flush() const @@ -164,7 +164,7 @@ namespace Nz inline void OBJParser::Warning(const std::string& message) { - NazaraWarningFmt("{0} at line #{1}", message, m_lineCount); + NazaraWarningFmt("{0} on line #{1}", message, m_lineCount); } inline bool OBJParser::UnrecognizedLine(bool error) diff --git a/src/Nazara/Audio/Music.cpp b/src/Nazara/Audio/Music.cpp index a9d50c61f..c70c59988 100644 --- a/src/Nazara/Audio/Music.cpp +++ b/src/Nazara/Audio/Music.cpp @@ -472,6 +472,7 @@ namespace Nz // Signal we're good { std::unique_lock lock(m); + m_musicStarted = true; cv.notify_all(); } // m & cv no longer exists from here @@ -519,10 +520,11 @@ namespace Nz std::exception_ptr exceptionPtr; std::unique_lock lock(mutex); + m_musicStarted = false; m_thread = std::thread(&Music::MusicThread, this, std::ref(cv), std::ref(mutex), std::ref(exceptionPtr), startPaused); // Wait until thread signal it has properly started (or an error occurred) - cv.wait(lock); + cv.wait(lock, [&] { return exceptionPtr || m_musicStarted; }); if (exceptionPtr) std::rethrow_exception(exceptionPtr); diff --git a/src/Nazara/Audio/OpenALLibrary.cpp b/src/Nazara/Audio/OpenALLibrary.cpp index 411035c4d..3358b4c5e 100644 --- a/src/Nazara/Audio/OpenALLibrary.cpp +++ b/src/Nazara/Audio/OpenALLibrary.cpp @@ -4,14 +4,11 @@ #include #include -#include +#include #include #include -#include -#include #include #include -#include #include #include #include @@ -30,7 +27,7 @@ namespace Nz #define NAZARA_AUDIO_AL_ALC_FUNCTION(name) #define NAZARA_AUDIO_AL_EXT_BEGIN(ext) if (alIsExtensionPresent(#ext)) { #define NAZARA_AUDIO_AL_EXT_END() } -#define NAZARA_AUDIO_AL_FUNCTION_EXT(name) name = reinterpret_cast(alGetProcAddress(#name)); +#define NAZARA_AUDIO_AL_EXT_FUNCTION(name) name = reinterpret_cast(alGetProcAddress(#name)); #include m_hasCaptureSupport = alcIsExtensionPresent(nullptr, "ALC_EXT_CAPTURE"); @@ -67,7 +64,7 @@ namespace Nz { ErrorFlags disableError(ErrorMode::Silent, ~ErrorMode::ThrowException); - if (!m_library.Load(libname)) + if (!m_library.Load(Utf8Path(libname))) continue; auto LoadSymbol = [this](const char* name, bool optional) @@ -82,13 +79,16 @@ namespace Nz try { #define NAZARA_AUDIO_AL_ALC_FUNCTION(name) name = reinterpret_cast(LoadSymbol(#name, false)); +#define NAZARA_AUDIO_AL_EXT_BEGIN(name) +#define NAZARA_AUDIO_AL_EXT_END(name) +#define NAZARA_AUDIO_AL_EXT_FUNCTION(name) #include } catch (const std::exception& e) { ErrorFlags disableSilent({}, ~ErrorMode::Silent); - NazaraWarning(std::string("failed to load ") + libname + ": " + e.what()); + NazaraWarningFmt("failed to load {0}: {1}", libname, e.what()); continue; } @@ -104,6 +104,8 @@ namespace Nz // Load core #define NAZARA_AUDIO_AL_ALC_FUNCTION(name) name = &::name; +#define NAZARA_AUDIO_AL_EXT_BEGIN(name) +#define NAZARA_AUDIO_AL_EXT_END(name) #define NAZARA_AUDIO_AL_EXT_FUNCTION(name) #include diff --git a/src/Nazara/Core/RefCounted.cpp b/src/Nazara/Core/RefCounted.cpp index c4939a5fa..358f34b16 100644 --- a/src/Nazara/Core/RefCounted.cpp +++ b/src/Nazara/Core/RefCounted.cpp @@ -37,7 +37,7 @@ namespace Nz { #if NAZARA_CORE_SAFE if (m_referenceCount > 0) - NazaraWarning("Resource destroyed while still referenced " + std::to_string(m_referenceCount) + " time(s)"); + NazaraWarningFmt("Resource destroyed while still referenced {0} time(s)", m_referenceCount); #endif } diff --git a/src/Nazara/Core/StringExt.cpp b/src/Nazara/Core/StringExt.cpp index cc79ef7b4..9f71f4f5d 100644 --- a/src/Nazara/Core/StringExt.cpp +++ b/src/Nazara/Core/StringExt.cpp @@ -298,7 +298,7 @@ namespace Nz while (ptr < ptrEnd && *patternPtr != '*') { - if (patternPtr < patternPtrEnd && *patternPtr != *ptr && *patternPtr != '?') + if (patternPtr >= patternPtrEnd || (*patternPtr != *ptr && *patternPtr != '?')) return false; patternPtr++; @@ -307,7 +307,7 @@ namespace Nz const char* cp = nullptr; const char* mp = nullptr; - while (*ptr) + while (ptr < ptrEnd) { if (*patternPtr == '*') { diff --git a/src/Nazara/Graphics/DepthPipelinePass.cpp b/src/Nazara/Graphics/DepthPipelinePass.cpp index da1df0897..6e4a8d092 100644 --- a/src/Nazara/Graphics/DepthPipelinePass.cpp +++ b/src/Nazara/Graphics/DepthPipelinePass.cpp @@ -100,7 +100,7 @@ namespace Nz if (it == m_materialInstances.end()) { auto& matPassEntry = m_materialInstances[&materialInstance]; - matPassEntry.onMaterialInstancePipelineInvalidated.Connect(materialInstance.OnMaterialInstancePipelineInvalidated, [=](const MaterialInstance*, std::size_t passIndex) + matPassEntry.onMaterialInstancePipelineInvalidated.Connect(materialInstance.OnMaterialInstancePipelineInvalidated, [this](const MaterialInstance*, std::size_t passIndex) { if (passIndex != m_passIndex) return; diff --git a/src/Nazara/Graphics/PropertyHandler/UniformValuePropertyHandler.cpp b/src/Nazara/Graphics/PropertyHandler/UniformValuePropertyHandler.cpp index bcd5e9aed..c65b49402 100644 --- a/src/Nazara/Graphics/PropertyHandler/UniformValuePropertyHandler.cpp +++ b/src/Nazara/Graphics/PropertyHandler/UniformValuePropertyHandler.cpp @@ -34,7 +34,7 @@ namespace Nz const auto& uniformBlockData = material.GetUniformBlockData(m_uniformBlockIndex); const ShaderReflection::StructData* structData = reflection.GetStructByIndex(uniformBlockData.structIndex); - NazaraAssert(structData, "invalid struct index " + std::to_string(uniformBlockData.structIndex)); + NazaraAssertFmt(structData, "invalid struct index {0}", uniformBlockData.structIndex); auto it = structData->members.find(m_memberTag); if (it == structData->members.end()) diff --git a/src/Nazara/Network/Win32/SocketImpl.cpp b/src/Nazara/Network/Win32/SocketImpl.cpp index bc323c779..8a61ea0f6 100644 --- a/src/Nazara/Network/Win32/SocketImpl.cpp +++ b/src/Nazara/Network/Win32/SocketImpl.cpp @@ -475,7 +475,7 @@ namespace Nz return SocketState::Connected; else { - NazaraWarning("Socket " + std::to_string(handle) + " was returned by poll without POLLOUT nor error events (events: 0x" + NumberToString(descriptor.revents, 16) + ')'); + NazaraWarningFmt("Socket {0} was returned by poll without POLLOUT nor error events (events: {1:#x})", handle, descriptor.revents); return SocketState::NotConnected; } } diff --git a/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp b/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp index 309a92221..9ffbe3729 100644 --- a/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp +++ b/src/Nazara/OpenGLRenderer/OpenGLCommandBuffer.cpp @@ -91,7 +91,7 @@ namespace Nz if (shaderBinding) shaderBinding->Apply(*pipelineLayout, setIndex, context); else - NazaraWarning("no shader binding for set #" + std::to_string(setIndex)); + NazaraWarningFmt("no shader binding for set #{0}", setIndex); setIndex++; } diff --git a/src/Nazara/OpenGLRenderer/Wrapper/Context.cpp b/src/Nazara/OpenGLRenderer/Wrapper/Context.cpp index c276824bf..c962baef8 100644 --- a/src/Nazara/OpenGLRenderer/Wrapper/Context.cpp +++ b/src/Nazara/OpenGLRenderer/Wrapper/Context.cpp @@ -45,17 +45,17 @@ namespace Nz::GL if constexpr (std::is_same_v) { - funcPtr(std::forward(args)...); + funcPtr(args...); if (context->ProcessErrorStack()) - context->PrintFunctionCall(FuncIndex, std::forward(args)...); + context->PrintFunctionCall(FuncIndex, args...); } else { - Ret r = funcPtr(std::forward(args)...); + Ret r = funcPtr(args...); if (context->ProcessErrorStack()) - context->PrintFunctionCall(FuncIndex, std::forward(args)...); + context->PrintFunctionCall(FuncIndex, args...); return r; } diff --git a/src/Nazara/Utility/Formats/GIFLoader.cpp b/src/Nazara/Utility/Formats/GIFLoader.cpp index 7e42e357b..39b2cd337 100644 --- a/src/Nazara/Utility/Formats/GIFLoader.cpp +++ b/src/Nazara/Utility/Formats/GIFLoader.cpp @@ -188,7 +188,7 @@ namespace Nz m_byteStream >> minimumCodeSize; if (minimumCodeSize > 12) { - NazaraInternalError("unexpected LZW Minimum Code Size (" + std::to_string(minimumCodeSize) + ")"); + NazaraInternalErrorFmt("unexpected LZW Minimum Code Size ({0})", minimumCodeSize); return false; } diff --git a/src/Nazara/Utility/Formats/MD5MeshParser.cpp b/src/Nazara/Utility/Formats/MD5MeshParser.cpp index 2878b8d3f..837b2f732 100644 --- a/src/Nazara/Utility/Formats/MD5MeshParser.cpp +++ b/src/Nazara/Utility/Formats/MD5MeshParser.cpp @@ -211,7 +211,7 @@ namespace Nz void MD5MeshParser::Error(const std::string& message) { - NazaraErrorFmt("{0} at line #1", message, m_lineCount); + NazaraErrorFmt("{0} on line #{1}", message, m_lineCount); } bool MD5MeshParser::ParseJoints() @@ -446,7 +446,7 @@ namespace Nz void MD5MeshParser::Warning(const std::string& message) { - NazaraWarning(message + " at line #" + std::to_string(m_lineCount)); + NazaraWarningFmt("{0} on line #{1}", message, m_lineCount); } void MD5MeshParser::UnrecognizedLine(bool error) diff --git a/tests/UnitTests/Engine/Core/StringExtTest.cpp b/tests/UnitTests/Engine/Core/StringExtTest.cpp index 181e2d46e..4a4edd726 100644 --- a/tests/UnitTests/Engine/Core/StringExtTest.cpp +++ b/tests/UnitTests/Engine/Core/StringExtTest.cpp @@ -79,6 +79,7 @@ SCENARIO("String", "[CORE][STRING]") CHECK(Nz::MatchPattern("Lynix", "?????")); CHECK(Nz::MatchPattern("Lynix", "*Lynix")); CHECK(Nz::MatchPattern("Lynox", "*Lyn?x")); + CHECK_FALSE(Nz::MatchPattern("Lynix", "Ly")); CHECK_FALSE(Nz::MatchPattern("", "?")); CHECK_FALSE(Nz::MatchPattern("", "*"));