From 269bdebca75f4098f2e4285a448ada797f43d083 Mon Sep 17 00:00:00 2001 From: William JCM Date: Sat, 16 Apr 2022 01:05:00 +0200 Subject: [PATCH 01/24] CMakeLists: do some dependency cleanup. I guess I initially planned to make the Save Tool use Interconnect, and there was a Magnum module that prevented me from disabling PluginManager. --- CMakeLists.txt | 5 +++-- src/CMakeLists.txt | 3 +-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f6ca5b1..63c4e3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,8 +25,8 @@ set(BUILD_STATIC ON CACHE BOOL "" FORCE) set(BUILD_STATIC_PIC ON CACHE BOOL "" FORCE) set(BUILD_STATIC_UNIQUE_GLOBALS OFF CACHE BOOL "" FORCE) -set(WITH_INTERCONNECT ON CACHE BOOL "" FORCE) -set(WITH_PLUGINMANAGER ON CACHE BOOL "" FORCE) +set(WITH_INTERCONNECT OFF CACHE BOOL "" FORCE) +set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE) set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE) set(WITH_MAIN ON CACHE BOOL "" FORCE) add_subdirectory(third-party/corrade EXCLUDE_FROM_ALL) @@ -56,6 +56,7 @@ set(WITH_GL ON CACHE BOOL "" FORCE) set(WITH_MESHTOOLS OFF CACHE BOOL "" FORCE) set(WITH_PRIMITIVES OFF CACHE BOOL "" FORCE) set(WITH_SCENEGRAPH OFF CACHE BOOL "" FORCE) +set(WITH_SCENETOOLS OFF CACHE BOOL "" FORCE) set(WITH_SHADERS ON CACHE BOOL "" FORCE) set(WITH_SHADERTOOLS OFF CACHE BOOL "" FORCE) set(WITH_TEXT OFF CACHE BOOL "" FORCE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 31d5c1c..d909f32 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,7 +20,7 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(SAVETOOL_PROJECT_VERSION 1.3.3) -find_package(Corrade REQUIRED Main Containers Utility Interconnect) +find_package(Corrade REQUIRED Main Containers Utility) find_package(Magnum REQUIRED GL Sdl2Application) find_package(MagnumIntegration REQUIRED ImGui) @@ -186,7 +186,6 @@ endif() target_link_libraries(MassBuilderSaveTool PRIVATE Corrade::Containers Corrade::Utility - Corrade::Interconnect Corrade::Main Magnum::Magnum Magnum::GL -- 2.39.2 From c018bfc7f86ff7bce6b9ab7bfc15573274ef2962 Mon Sep 17 00:00:00 2001 From: William JCM Date: Sat, 16 Apr 2022 01:06:27 +0200 Subject: [PATCH 02/24] CMakeLists: bump version number. And set a new codename, too. --- src/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d909f32..13a287c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,7 +18,7 @@ set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) -set(SAVETOOL_PROJECT_VERSION 1.3.3) +set(SAVETOOL_PROJECT_VERSION 1.4.0-pre) find_package(Corrade REQUIRED Main Containers Utility) find_package(Magnum REQUIRED GL Sdl2Application) @@ -170,7 +170,7 @@ if(CMAKE_BUILD_TYPE STREQUAL Debug) add_compile_definitions(SAVETOOL_DEBUG_BUILD) endif() add_compile_definitions(SAVETOOL_VERSION="${SAVETOOL_PROJECT_VERSION}" - SAVETOOL_CODENAME="Dickish Cyclops" + SAVETOOL_CODENAME="Enigmatic Ellenier" SUPPORTED_GAME_VERSION="0.8.6") if(CMAKE_BUILD_TYPE STREQUAL Release) -- 2.39.2 From 2493cb59883a3dbb10814d1eddcc01492999b591 Mon Sep 17 00:00:00 2001 From: William JCM Date: Sat, 16 Apr 2022 16:39:55 +0200 Subject: [PATCH 03/24] Update Corrade, Magnum, and ImGui. --- third-party/corrade | 2 +- third-party/imgui | 2 +- third-party/magnum | 2 +- third-party/magnum-integration | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/third-party/corrade b/third-party/corrade index dc4f2ea..e3b5eb8 160000 --- a/third-party/corrade +++ b/third-party/corrade @@ -1 +1 @@ -Subproject commit dc4f2eac6814b37b5257d295c2838bcde95272aa +Subproject commit e3b5eb865f165f65024869cd1c77c1380e6ee8a7 diff --git a/third-party/imgui b/third-party/imgui index ddddabd..eda7792 160000 --- a/third-party/imgui +++ b/third-party/imgui @@ -1 +1 @@ -Subproject commit ddddabdccfdafffd8664fb4e29230dc4f848137e +Subproject commit eda7792b151d138e15df951578253b821ceed5a3 diff --git a/third-party/magnum b/third-party/magnum index 3fc9028..7c2f758 160000 --- a/third-party/magnum +++ b/third-party/magnum @@ -1 +1 @@ -Subproject commit 3fc9028b5451aa95973f104d1ef2a1c0df589e64 +Subproject commit 7c2f758f2ea69e5a95a7a615c0e5ec9a4bfb213f diff --git a/third-party/magnum-integration b/third-party/magnum-integration index 323c23f..5a6aa83 160000 --- a/third-party/magnum-integration +++ b/third-party/magnum-integration @@ -1 +1 @@ -Subproject commit 323c23f4e8e7cda9a7848c03401a3ba0a1de0bd4 +Subproject commit 5a6aa83561d4e411ddd968ed50c92aa9443e8191 -- 2.39.2 From 4c4ac469e018660d9eb39c6a16ff485cd8d00014 Mon Sep 17 00:00:00 2001 From: William JCM Date: Mon, 18 Apr 2022 11:49:01 +0200 Subject: [PATCH 04/24] CMakeLists: ensure Corrade/Magnum builds deprecated stuff. It usually should be for debug builds only, but, eh, I strip release builds anyway. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 63c4e3f..d77bb3f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,7 @@ set(WITH_INTERCONNECT OFF CACHE BOOL "" FORCE) set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE) set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE) set(WITH_MAIN ON CACHE BOOL "" FORCE) +set(BUILD_DEPRECATED ON CACHE BOOL "" FORCE) add_subdirectory(third-party/corrade EXCLUDE_FROM_ALL) set(DIRECTX OFF CACHE BOOL "" FORCE) # We use OpenGL. -- 2.39.2 From 56048f64eefe8599c3f3b1c93cb582af3419dc1f Mon Sep 17 00:00:00 2001 From: William JCM Date: Sat, 23 Apr 2022 21:50:20 +0200 Subject: [PATCH 05/24] CMakeLists: explicitly specify it's a C++ project. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d77bb3f..b4e07f0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ # along with this program. If not, see . cmake_minimum_required(VERSION 3.5) -project(MassBuilderSaveTool) +project(MassBuilderSaveTool CXX) set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/modules/" ${CMAKE_MODULE_PATH}) -- 2.39.2 From bb74a5c713f5240a827e1faf94390868a92a933d Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 24 Apr 2022 00:31:43 +0200 Subject: [PATCH 06/24] Resources: add version info to the exe. Why the fuck is it so complicated ? Fuck you, Microsoft engineers who designed this format. --- src/resource.rc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/resource.rc b/src/resource.rc index df99b1e..4001ce5 100644 --- a/src/resource.rc +++ b/src/resource.rc @@ -17,3 +17,30 @@ MAINICON ICON "mbst.ico" 1 24 "Application.manifest" + +1 VERSIONINFO +FILEVERSION 1,4,0,0 +PRODUCTVERSION 1,4,0,0 +FILEOS 0x40004 +FILETYPE 0x1 +{ +BLOCK "StringFileInfo" +{ + BLOCK "080904B0" + { + VALUE "FileDescription", "M.A.S.S. Builder Save Tool" + VALUE "InternalName", "MassBuilderSaveTool.exe" + VALUE "OriginalFilename", "MassBuilderSaveTool.exe" + VALUE "CompanyName", "Guillaume Jacquemin" + VALUE "LegalCopyright", "Copyright \xA9 2021-2022 Guillaume Jacquemin." + VALUE "ProductName", "M.A.S.S. Builder Save Tool" + VALUE "FileVersion", "1.4.0.0" + VALUE "ProductVersion", "1.4.0.0" + } +} + +BLOCK "VarFileInfo" +{ + VALUE "Translation", 0x0809, 0x04B0 +} +} -- 2.39.2 From dd6d2491fda0509301caf2e088e3b78a19e29576 Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 24 Apr 2022 14:25:47 +0200 Subject: [PATCH 07/24] Add Logger: a new thread-safe logging system. Closes #25. --- src/CMakeLists.txt | 4 ++ src/Logger/Logger.cpp | 111 +++++++++++++++++++++++++++++++++ src/Logger/Logger.h | 54 ++++++++++++++++ src/Logger/MagnumLogBuffer.cpp | 34 ++++++++++ src/Logger/MagnumLogBuffer.h | 38 +++++++++++ 5 files changed, 241 insertions(+) create mode 100644 src/Logger/Logger.cpp create mode 100644 src/Logger/Logger.h create mode 100644 src/Logger/MagnumLogBuffer.cpp create mode 100644 src/Logger/MagnumLogBuffer.h diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 13a287c..316d63a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -160,6 +160,10 @@ add_executable(MassBuilderSaveTool WIN32 Maps/WeaponTypes.hpp ToastQueue/ToastQueue.h ToastQueue/ToastQueue.cpp + Logger/Logger.h + Logger/Logger.cpp + Logger/MagnumLogBuffer.h + Logger/MagnumLogBuffer.cpp Utilities/Crc32.h FontAwesome/IconsFontAwesome5.h FontAwesome/IconsFontAwesome5Brands.h diff --git a/src/Logger/Logger.cpp b/src/Logger/Logger.cpp new file mode 100644 index 0000000..577e288 --- /dev/null +++ b/src/Logger/Logger.cpp @@ -0,0 +1,111 @@ +// MassBuilderSaveTool +// Copyright (C) 2021-2022 Guillaume Jacquemin +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#ifdef SAVETOOL_DEBUG_BUILD +#include +#else +#include +#endif +#include + +#include +#include + +#include "Logger.h" + +using Containers::Array; +using Utility::Debug; +using Utility::Warning; +using Utility::Error; + +namespace MassBuilderSaveTool { namespace Logger { + +#ifndef SAVETOOL_DEBUG_BUILD +static std::ofstream log_file{"SaveToolLog.txt", std::ios::trunc}; +#endif + +static std::mutex _logMutex; + +static Array _entries; + +inline Debug& +operator<<(Debug& out, const LogEntry& entry) { + using namespace Containers::Literals; + + static char formatted_time[22] = {'\0'}; + std::strftime(&formatted_time[0], sizeof(formatted_time)/sizeof(formatted_time[0]), "[%Y-%m-%d %H:%M:%S]", &entry.timestamp); + out << formatted_time; + +#ifdef SAVETOOL_DEBUG_BUILD +#define COLOUR(col) << Debug::color(Debug::Color::col) +#else +#define COLOUR(col) +#endif + + switch(entry.type) { + case EntryType::Info: + out << "[INFO]"_s COLOUR(Default); + break; + case EntryType::Success: + out << "[SUCCESS]"_s COLOUR(Green); + break; + case EntryType::Warning: + out << "[WARNING]"_s COLOUR(Yellow); + break; + case EntryType::Error: + out << "[ERROR]"_s COLOUR(Red); + break; + } + +#undef DEBUG_COLOUR + + out << entry.message << Debug::resetColor; + + return out; +} + +void +initialise() { + arrayReserve(_entries, 100); +} + +void +addEntry(EntryType type, StringView message) { + _logMutex.lock(); + + auto time = std::time(nullptr); + + LogEntry entry{ + *std::localtime(&time), type, + (message.back() == '\n') ? String{message.exceptSuffix(1)} : String{message} + }; + + Debug{ +#ifndef SAVETOOL_DEBUG_BUILD + &log_file +#else + &std::cout +#endif + } << entry; + + arrayAppend(_entries, std::move(entry)); + + _logMutex.unlock(); +} + +} // Logger + +} // MassBuilderSaveTool diff --git a/src/Logger/Logger.h b/src/Logger/Logger.h new file mode 100644 index 0000000..a1abd36 --- /dev/null +++ b/src/Logger/Logger.h @@ -0,0 +1,54 @@ +#pragma once + +// MassBuilderSaveTool +// Copyright (C) 2021-2022 Guillaume Jacquemin +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include + +#include + +using namespace Corrade; + +using Containers::String; +using Containers::StringView; + +namespace MassBuilderSaveTool { namespace Logger { + +enum class EntryType { + Info, + Success, + Warning, + Error, +}; + +struct LogEntry { + std::tm timestamp; + EntryType type; + String message; +}; + +void initialise(); + +void addEntry(EntryType type, StringView message); + +} // Logger + +} // MassBuilderSaveTool + +#define LOG_INFO(message) MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Info, message) +#define LOG_SUCCESS(message) MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Success, message) +#define LOG_WARNING(message) MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Warning, message) +#define LOG_ERROR(message) MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Error, message) diff --git a/src/Logger/MagnumLogBuffer.cpp b/src/Logger/MagnumLogBuffer.cpp new file mode 100644 index 0000000..8fa3416 --- /dev/null +++ b/src/Logger/MagnumLogBuffer.cpp @@ -0,0 +1,34 @@ +// MassBuilderSaveTool +// Copyright (C) 2021-2022 Guillaume Jacquemin +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include "MagnumLogBuffer.h" + +namespace MassBuilderSaveTool { namespace Logger { + +MagnumLogBuffer::MagnumLogBuffer(EntryType type): std::stringbuf(std::ios_base::out), _type{type} {} + +MagnumLogBuffer::~MagnumLogBuffer() = default; + +int +MagnumLogBuffer::sync() { + addEntry(_type, str().c_str()); + str({}); + return 0; +} + +} // Logger + +} // MassBuilderSaveTool diff --git a/src/Logger/MagnumLogBuffer.h b/src/Logger/MagnumLogBuffer.h new file mode 100644 index 0000000..39aa5a8 --- /dev/null +++ b/src/Logger/MagnumLogBuffer.h @@ -0,0 +1,38 @@ +#pragma once + +// MassBuilderSaveTool +// Copyright (C) 2021-2022 Guillaume Jacquemin +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +#include + +#include "Logger.h" + +namespace MassBuilderSaveTool { namespace Logger { + +class MagnumLogBuffer : public std::stringbuf { + public: + explicit MagnumLogBuffer(EntryType type); + ~MagnumLogBuffer(); + + private: + int sync() override; + + EntryType _type; +}; + +} // Logger + +} // MassBuilderSaveTool -- 2.39.2 From 8266ce11c8c31febd2b9aa6d6f7053a7e449da4c Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 24 Apr 2022 16:35:50 +0200 Subject: [PATCH 08/24] Logger: improve for GUI display. The biggest change is that the timestamp is pre-computed, because calling strftime() 60 times (or more) per second is sure to have a non-negligible cost. --- src/Logger/Logger.cpp | 17 +++++++++++++---- src/Logger/Logger.h | 6 +++++- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/Logger/Logger.cpp b/src/Logger/Logger.cpp index 577e288..33b3402 100644 --- a/src/Logger/Logger.cpp +++ b/src/Logger/Logger.cpp @@ -45,9 +45,7 @@ inline Debug& operator<<(Debug& out, const LogEntry& entry) { using namespace Containers::Literals; - static char formatted_time[22] = {'\0'}; - std::strftime(&formatted_time[0], sizeof(formatted_time)/sizeof(formatted_time[0]), "[%Y-%m-%d %H:%M:%S]", &entry.timestamp); - out << formatted_time; + out << "["_s << Debug::nospace << entry.timestamp << Debug::nospace << "]"_s; #ifdef SAVETOOL_DEBUG_BUILD #define COLOUR(col) << Debug::color(Debug::Color::col) @@ -88,8 +86,14 @@ addEntry(EntryType type, StringView message) { auto time = std::time(nullptr); + static char formatted_time[20] = {'\0'}; + std::strftime(&formatted_time[0], sizeof(formatted_time)/sizeof(formatted_time[0]), + "%Y-%m-%d %H:%M:%S", // Because MSVCRT (which is the CRT I target by default) is not C99-compliant, + // I can't use "%F %T" as the format string. + std::localtime(&time)); + LogEntry entry{ - *std::localtime(&time), type, + formatted_time, type, (message.back() == '\n') ? String{message.exceptSuffix(1)} : String{message} }; @@ -106,6 +110,11 @@ addEntry(EntryType type, StringView message) { _logMutex.unlock(); } +ArrayView +entries() { + return _entries; +} + } // Logger } // MassBuilderSaveTool diff --git a/src/Logger/Logger.h b/src/Logger/Logger.h index a1abd36..795a9c1 100644 --- a/src/Logger/Logger.h +++ b/src/Logger/Logger.h @@ -19,9 +19,11 @@ #include #include +#include using namespace Corrade; +using Containers::ArrayView; using Containers::String; using Containers::StringView; @@ -35,7 +37,7 @@ enum class EntryType { }; struct LogEntry { - std::tm timestamp; + String timestamp; EntryType type; String message; }; @@ -44,6 +46,8 @@ void initialise(); void addEntry(EntryType type, StringView message); +auto entries() -> ArrayView; + } // Logger } // MassBuilderSaveTool -- 2.39.2 From c68a59d95284cae106ce3e258898eb6c4766e42b Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 24 Apr 2022 16:37:36 +0200 Subject: [PATCH 09/24] CMakeLists: re-enable Interconnect. I'll need it for the new code structure. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b4e07f0..6c7d2c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ set(BUILD_STATIC ON CACHE BOOL "" FORCE) set(BUILD_STATIC_PIC ON CACHE BOOL "" FORCE) set(BUILD_STATIC_UNIQUE_GLOBALS OFF CACHE BOOL "" FORCE) -set(WITH_INTERCONNECT OFF CACHE BOOL "" FORCE) +set(WITH_INTERCONNECT ON CACHE BOOL "" FORCE) set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE) set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE) set(WITH_MAIN ON CACHE BOOL "" FORCE) -- 2.39.2 From bf667e72d815f29c94dfbea7e9736e92aa2254ce Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 24 Apr 2022 16:39:07 +0200 Subject: [PATCH 10/24] CMakeLists: ...and do that in the src one too. --- src/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 316d63a..f80e78c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -20,7 +20,7 @@ set(CMAKE_CXX_EXTENSIONS OFF) set(SAVETOOL_PROJECT_VERSION 1.4.0-pre) -find_package(Corrade REQUIRED Main Containers Utility) +find_package(Corrade REQUIRED Main Containers Utility Interconnect) find_package(Magnum REQUIRED GL Sdl2Application) find_package(MagnumIntegration REQUIRED ImGui) @@ -190,6 +190,7 @@ endif() target_link_libraries(MassBuilderSaveTool PRIVATE Corrade::Containers Corrade::Utility + Corrade::Interconnect Corrade::Main Magnum::Magnum Magnum::GL -- 2.39.2 From 3f580f77dbf4ec09835374d7d1f51154cf0033d8 Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 24 Apr 2022 16:40:27 +0200 Subject: [PATCH 11/24] CMakeLists: enable ANSI colours for Utility::Debug. Will only have an impact in debug builds, though, due to output being redirected to a file in release mode. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6c7d2c8..a37ac24 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE) set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE) set(WITH_MAIN ON CACHE BOOL "" FORCE) set(BUILD_DEPRECATED ON CACHE BOOL "" FORCE) +set(UTILITY_USE_ANSI_COLORS ON CACHE BOOL "" FORCE) add_subdirectory(third-party/corrade EXCLUDE_FROM_ALL) set(DIRECTX OFF CACHE BOOL "" FORCE) # We use OpenGL. -- 2.39.2 From 4d94b10501f01e2382f54611482e2e4efecf4956 Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 24 Apr 2022 16:41:22 +0200 Subject: [PATCH 12/24] CMakeLists: build deprecated Corrade/Magnum for debug only. --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a37ac24..a68bc02 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,11 @@ set(WITH_INTERCONNECT ON CACHE BOOL "" FORCE) set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE) set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE) set(WITH_MAIN ON CACHE BOOL "" FORCE) -set(BUILD_DEPRECATED ON CACHE BOOL "" FORCE) +if(CMAKE_BUILD_TYPE STREQUAL Debug) + set(BUILD_DEPRECATED ON CACHE BOOL "" FORCE) +elseif(CMAKE_BUILD_TYPE STREQUAL Release) + set(BUILD_DEPRECATED OFF CACHE BOOL "" FORCE) +endif() set(UTILITY_USE_ANSI_COLORS ON CACHE BOOL "" FORCE) add_subdirectory(third-party/corrade EXCLUDE_FROM_ALL) -- 2.39.2 From 929e0c73ee9175e267fad128caef1196d31217a1 Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 24 Apr 2022 17:14:21 +0200 Subject: [PATCH 13/24] Logger: add extra safety. Though, that's not really enough for now. --- src/Logger/Logger.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Logger/Logger.cpp b/src/Logger/Logger.cpp index 33b3402..43ca8a3 100644 --- a/src/Logger/Logger.cpp +++ b/src/Logger/Logger.cpp @@ -112,6 +112,11 @@ addEntry(EntryType type, StringView message) { ArrayView entries() { + if(!_logMutex.try_lock()) { + return nullptr; + } + _logMutex.unlock(); + return _entries; } -- 2.39.2 From 874dd9bd4c7f87da9ce0a2dee81cff710e51f6bf Mon Sep 17 00:00:00 2001 From: William JCM Date: Mon, 25 Apr 2022 08:24:56 +0200 Subject: [PATCH 14/24] Logger: improve thread safety. --- src/Logger/Logger.cpp | 24 +++++++++++++++--------- src/Logger/Logger.h | 22 ++++++++++++++++++---- 2 files changed, 33 insertions(+), 13 deletions(-) diff --git a/src/Logger/Logger.cpp b/src/Logger/Logger.cpp index 43ca8a3..f2e47ac 100644 --- a/src/Logger/Logger.cpp +++ b/src/Logger/Logger.cpp @@ -82,8 +82,6 @@ initialise() { void addEntry(EntryType type, StringView message) { - _logMutex.lock(); - auto time = std::time(nullptr); static char formatted_time[20] = {'\0'}; @@ -106,20 +104,28 @@ addEntry(EntryType type, StringView message) { } << entry; arrayAppend(_entries, std::move(entry)); - - _logMutex.unlock(); } ArrayView entries() { - if(!_logMutex.try_lock()) { - return nullptr; - } - _logMutex.unlock(); - return _entries; } +void +lockMutex() { + _logMutex.lock(); +} + +void +unlockMutex() { + _logMutex.unlock(); +} + +bool +tryLockMutex() { + return _logMutex.try_lock(); +} + } // Logger } // MassBuilderSaveTool diff --git a/src/Logger/Logger.h b/src/Logger/Logger.h index 795a9c1..d24dc6c 100644 --- a/src/Logger/Logger.h +++ b/src/Logger/Logger.h @@ -48,11 +48,25 @@ void addEntry(EntryType type, StringView message); auto entries() -> ArrayView; +void lockMutex(); + +void unlockMutex(); + +bool tryLockMutex(); + } // Logger } // MassBuilderSaveTool -#define LOG_INFO(message) MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Info, message) -#define LOG_SUCCESS(message) MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Success, message) -#define LOG_WARNING(message) MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Warning, message) -#define LOG_ERROR(message) MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Error, message) +#define LOG_INFO(message) MassBuilderSaveTool::Logger::lockMutex(); \ + MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Info, message); \ + MassBuilderSaveTool::Logger::unlockMutex(); +#define LOG_SUCCESS(message) MassBuilderSaveTool::Logger::lockMutex(); \ + MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Success, message); \ + MassBuilderSaveTool::Logger::unlockMutex(); +#define LOG_WARNING(message) MassBuilderSaveTool::Logger::lockMutex(); \ + MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Warning, message); \ + MassBuilderSaveTool::Logger::unlockMutex(); +#define LOG_ERROR(message) MassBuilderSaveTool::Logger::lockMutex(); \ + MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Error, message); \ + MassBuilderSaveTool::Logger::unlockMutex(); -- 2.39.2 From 98cb314725ab3a81f07d8cd8b815dfe1f73311a7 Mon Sep 17 00:00:00 2001 From: William JCM Date: Fri, 29 Apr 2022 15:51:58 +0200 Subject: [PATCH 15/24] Update README.md. --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c3512bf..b74d471 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,19 @@ A save file manager and editor for M.A.S.S. Builder. Based on [wxMASSManager](ht ## Installing -Get the `MassBuilderSaveTool-.zip` file from the [Releases](https://williamjcm.ovh/git/williamjcm/MassBuilderSaveTool/releases) page, and extract it somewhere. Then, launch `MassBuilderSaveTool.exe`. +Get the `MassBuilderSaveTool-.zip` file from the [project's home page](https://williamjcm.ovh/coding/mbst/) or the [Releases](https://williamjcm.ovh/git/williamjcm/MassBuilderSaveTool/releases) tab, and extract it somewhere. Then, launch `MassBuilderSaveTool-.exe`. ## Building on MSYS2 - IGNORE IF YOU JUST WANT TO USE THE APP! 1. Install the 64-bit (`x86_64`) version of [MSYS2](https://www.msys2.org/) in its default path (`C:\msys64`), and update it fully. 2. Run `pacman -S git mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja`. -3. In a `MINGW64` shell, type `git clone https://github.com/williamjcm/MassBuilderSaveTool`. -4. Type `cd MassBuilderSaveTool && git submodule init && git submodule update && mkdir build && cd build`. +3. In a `MINGW64` shell, type `git clone --recursive https://github.com/williamjcm/MassBuilderSaveTool`. +4. Type `cd MassBuilderSaveTool && mkdir build && cd build`. 5. Type `cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..` 6. Type `ninja` 7. ... 8. Profit! You'll be able to find the executable in `build/Release/bin`. + +**Note:** This should also work with the `ucrt64` or `clang64` repos. Just add `-ucrt` or `-clang` to `mingw-w64` when installing packages, and launch either a `UCRT64` or `CLANG64` shell in step 3. -- 2.39.2 From 2d1d46ec08e69d6be83c2fcbce1cc819c7fb937e Mon Sep 17 00:00:00 2001 From: William JCM Date: Fri, 29 Apr 2022 17:19:27 +0200 Subject: [PATCH 16/24] Logger: add an indent level system. This will help when I'll re-add printing for property types. --- src/Logger/Logger.cpp | 22 ++++++++++++++++++++++ src/Logger/Logger.h | 5 +++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/Logger/Logger.cpp b/src/Logger/Logger.cpp index f2e47ac..1a0a6da 100644 --- a/src/Logger/Logger.cpp +++ b/src/Logger/Logger.cpp @@ -24,6 +24,8 @@ #include #include +#include + #include "Logger.h" using Containers::Array; @@ -31,12 +33,16 @@ using Utility::Debug; using Utility::Warning; using Utility::Error; +using namespace Magnum; + namespace MassBuilderSaveTool { namespace Logger { #ifndef SAVETOOL_DEBUG_BUILD static std::ofstream log_file{"SaveToolLog.txt", std::ios::trunc}; #endif +static UnsignedInt _indentLevel = 0; + static std::mutex _logMutex; static Array _entries; @@ -70,6 +76,10 @@ operator<<(Debug& out, const LogEntry& entry) { #undef DEBUG_COLOUR + for(UnsignedInt i = 0; i < _indentLevel; i++) { + out << Debug::nospace << " "_s << Debug::nospace; + } + out << entry.message << Debug::resetColor; return out; @@ -80,6 +90,18 @@ initialise() { arrayReserve(_entries, 100); } +void +indent() { + _indentLevel++; +} + +void +unindent() { + if(_indentLevel > 0) { + _indentLevel--; + } +} + void addEntry(EntryType type, StringView message) { auto time = std::time(nullptr); diff --git a/src/Logger/Logger.h b/src/Logger/Logger.h index d24dc6c..80ce9f6 100644 --- a/src/Logger/Logger.h +++ b/src/Logger/Logger.h @@ -44,14 +44,15 @@ struct LogEntry { void initialise(); +void indent(); +void unindent(); + void addEntry(EntryType type, StringView message); auto entries() -> ArrayView; void lockMutex(); - void unlockMutex(); - bool tryLockMutex(); } // Logger -- 2.39.2 From b0b227471aa54a3999a03f099693b25d8b198d6d Mon Sep 17 00:00:00 2001 From: William JCM Date: Fri, 29 Apr 2022 19:37:07 +0200 Subject: [PATCH 17/24] Logger: remove semicolons from the macro definitions. This'll force adding a semicolon to macro calls. Dunno why I missed that, considering the version that didn't lock the mutex also didn't have the last semicolon. --- src/Logger/Logger.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Logger/Logger.h b/src/Logger/Logger.h index 80ce9f6..ea2e184 100644 --- a/src/Logger/Logger.h +++ b/src/Logger/Logger.h @@ -61,13 +61,13 @@ bool tryLockMutex(); #define LOG_INFO(message) MassBuilderSaveTool::Logger::lockMutex(); \ MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Info, message); \ - MassBuilderSaveTool::Logger::unlockMutex(); + MassBuilderSaveTool::Logger::unlockMutex() #define LOG_SUCCESS(message) MassBuilderSaveTool::Logger::lockMutex(); \ MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Success, message); \ - MassBuilderSaveTool::Logger::unlockMutex(); + MassBuilderSaveTool::Logger::unlockMutex() #define LOG_WARNING(message) MassBuilderSaveTool::Logger::lockMutex(); \ MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Warning, message); \ - MassBuilderSaveTool::Logger::unlockMutex(); + MassBuilderSaveTool::Logger::unlockMutex() #define LOG_ERROR(message) MassBuilderSaveTool::Logger::lockMutex(); \ MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Error, message); \ - MassBuilderSaveTool::Logger::unlockMutex(); + MassBuilderSaveTool::Logger::unlockMutex() -- 2.39.2 From 7aa750b2b1d28698cf46d1d79547200e1e13623a Mon Sep 17 00:00:00 2001 From: William JCM Date: Fri, 29 Apr 2022 22:19:13 +0200 Subject: [PATCH 18/24] CMakeLists: disable deprecated stuff globally. 'Twas causing issues with Containers::Array vs Magnum::Array, the latter of which is deprecated. --- CMakeLists.txt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a68bc02..d7a1c7b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,11 +29,7 @@ set(WITH_INTERCONNECT ON CACHE BOOL "" FORCE) set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE) set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE) set(WITH_MAIN ON CACHE BOOL "" FORCE) -if(CMAKE_BUILD_TYPE STREQUAL Debug) - set(BUILD_DEPRECATED ON CACHE BOOL "" FORCE) -elseif(CMAKE_BUILD_TYPE STREQUAL Release) - set(BUILD_DEPRECATED OFF CACHE BOOL "" FORCE) -endif() +set(BUILD_DEPRECATED OFF CACHE BOOL "" FORCE) set(UTILITY_USE_ANSI_COLORS ON CACHE BOOL "" FORCE) add_subdirectory(third-party/corrade EXCLUDE_FROM_ALL) -- 2.39.2 From 122d170ed4bf4cd03179d40c685b0eddba560202 Mon Sep 17 00:00:00 2001 From: William JCM Date: Fri, 29 Apr 2022 23:09:37 +0200 Subject: [PATCH 19/24] CMakeLists: explicitly specify tests should be off. Also allows me to quickly turn them on should I need to run a Corrade or Magnum test. --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index d7a1c7b..c233d2f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,7 @@ set(BUILD_STATIC ON CACHE BOOL "" FORCE) set(BUILD_STATIC_PIC ON CACHE BOOL "" FORCE) set(BUILD_STATIC_UNIQUE_GLOBALS OFF CACHE BOOL "" FORCE) +set(BUILD_TESTS OFF CACHE BOOL "" FORCE) set(WITH_INTERCONNECT ON CACHE BOOL "" FORCE) set(WITH_PLUGINMANAGER OFF CACHE BOOL "" FORCE) set(WITH_TESTSUITE OFF CACHE BOOL "" FORCE) -- 2.39.2 From 45c1cc2f9e20565c2e4f076b2175679ac7e3d9ad Mon Sep 17 00:00:00 2001 From: William JCM Date: Tue, 24 May 2022 10:19:29 +0200 Subject: [PATCH 20/24] Update Corrade and Magnum. --- third-party/corrade | 2 +- third-party/magnum | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/third-party/corrade b/third-party/corrade index e3b5eb8..5af4056 160000 --- a/third-party/corrade +++ b/third-party/corrade @@ -1 +1 @@ -Subproject commit e3b5eb865f165f65024869cd1c77c1380e6ee8a7 +Subproject commit 5af40565ef5383abc99e46409a96af96bcef832f diff --git a/third-party/magnum b/third-party/magnum index 7c2f758..65e09af 160000 --- a/third-party/magnum +++ b/third-party/magnum @@ -1 +1 @@ -Subproject commit 7c2f758f2ea69e5a95a7a615c0e5ec9a4bfb213f +Subproject commit 65e09afa756b4e451ba718e4d3b8561715870468 -- 2.39.2 From 65bb0d82a9483b4275ecc2db365dc2e03e0bf91a Mon Sep 17 00:00:00 2001 From: William JCM Date: Fri, 27 May 2022 14:16:01 +0200 Subject: [PATCH 21/24] Logger: move away from the MassBuilderSaveTool namespace. Might be useful if I ever use it in another project. --- src/Logger/Logger.cpp | 20 +++++++++----------- src/Logger/Logger.h | 32 ++++++++++++++++++-------------- 2 files changed, 27 insertions(+), 25 deletions(-) diff --git a/src/Logger/Logger.cpp b/src/Logger/Logger.cpp index 1a0a6da..9f3681f 100644 --- a/src/Logger/Logger.cpp +++ b/src/Logger/Logger.cpp @@ -35,7 +35,7 @@ using Utility::Error; using namespace Magnum; -namespace MassBuilderSaveTool { namespace Logger { +namespace Logger { #ifndef SAVETOOL_DEBUG_BUILD static std::ofstream log_file{"SaveToolLog.txt", std::ios::trunc}; @@ -54,33 +54,33 @@ operator<<(Debug& out, const LogEntry& entry) { out << "["_s << Debug::nospace << entry.timestamp << Debug::nospace << "]"_s; #ifdef SAVETOOL_DEBUG_BUILD -#define COLOUR(col) << Debug::color(Debug::Color::col) +#define COLOURED_TEXT(colour, text) Debug::color(Debug::Color::colour) << (text) << Debug::resetColor #else -#define COLOUR(col) +#define COLOURED_TEXT(colour, text) (text) #endif switch(entry.type) { case EntryType::Info: - out << "[INFO]"_s COLOUR(Default); + out << COLOURED_TEXT(Default, "[INFO]"_s); break; case EntryType::Success: - out << "[SUCCESS]"_s COLOUR(Green); + out << COLOURED_TEXT(Green, "[SUCCESS]"_s); break; case EntryType::Warning: - out << "[WARNING]"_s COLOUR(Yellow); + out << COLOURED_TEXT(Yellow, "[WARNING]"_s); break; case EntryType::Error: - out << "[ERROR]"_s COLOUR(Red); + out << COLOURED_TEXT(Red, "[ERROR]"_s); break; } -#undef DEBUG_COLOUR +#undef COLOURED_TEXT for(UnsignedInt i = 0; i < _indentLevel; i++) { out << Debug::nospace << " "_s << Debug::nospace; } - out << entry.message << Debug::resetColor; + out << entry.message; return out; } @@ -149,5 +149,3 @@ tryLockMutex() { } } // Logger - -} // MassBuilderSaveTool diff --git a/src/Logger/Logger.h b/src/Logger/Logger.h index ea2e184..2d437c0 100644 --- a/src/Logger/Logger.h +++ b/src/Logger/Logger.h @@ -20,6 +20,7 @@ #include #include +#include using namespace Corrade; @@ -27,7 +28,7 @@ using Containers::ArrayView; using Containers::String; using Containers::StringView; -namespace MassBuilderSaveTool { namespace Logger { +namespace Logger { enum class EntryType { Info, @@ -57,17 +58,20 @@ bool tryLockMutex(); } // Logger -} // MassBuilderSaveTool +#define LOG_INFO(message) Logger::lockMutex(); \ + Logger::addEntry(Logger::EntryType::Info, message); \ + Logger::unlockMutex() +#define LOG_SUCCESS(message) Logger::lockMutex(); \ + Logger::addEntry(Logger::EntryType::Success, message); \ + Logger::unlockMutex() +#define LOG_WARNING(message) Logger::lockMutex(); \ + Logger::addEntry(Logger::EntryType::Warning, message); \ + Logger::unlockMutex() +#define LOG_ERROR(message) Logger::lockMutex(); \ + Logger::addEntry(Logger::EntryType::Error, message); \ + Logger::unlockMutex() -#define LOG_INFO(message) MassBuilderSaveTool::Logger::lockMutex(); \ - MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Info, message); \ - MassBuilderSaveTool::Logger::unlockMutex() -#define LOG_SUCCESS(message) MassBuilderSaveTool::Logger::lockMutex(); \ - MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Success, message); \ - MassBuilderSaveTool::Logger::unlockMutex() -#define LOG_WARNING(message) MassBuilderSaveTool::Logger::lockMutex(); \ - MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Warning, message); \ - MassBuilderSaveTool::Logger::unlockMutex() -#define LOG_ERROR(message) MassBuilderSaveTool::Logger::lockMutex(); \ - MassBuilderSaveTool::Logger::addEntry(MassBuilderSaveTool::Logger::EntryType::Error, message); \ - MassBuilderSaveTool::Logger::unlockMutex() +#define LOG_INFO_FORMAT(message, ...) LOG_INFO(Utility::format(message, __VA_ARGS__)) +#define LOG_SUCCESS_FORMAT(message, ...) LOG_SUCCESS(Utility::format(message, __VA_ARGS__)) +#define LOG_WARNING_FORMAT(message, ...) LOG_WARNING(Utility::format(message, __VA_ARGS__)) +#define LOG_ERROR_FORMAT(message, ...) LOG_ERROR(Utility::format(message, __VA_ARGS__)) -- 2.39.2 From 2a25dd371cac2d8466dd0948a0d6ff292d112d79 Mon Sep 17 00:00:00 2001 From: William JCM Date: Thu, 21 Jul 2022 09:19:13 +0200 Subject: [PATCH 22/24] resource.rc: update to use clearer macros. --- src/resource.rc | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/resource.rc b/src/resource.rc index 4001ce5..57435bd 100644 --- a/src/resource.rc +++ b/src/resource.rc @@ -14,15 +14,21 @@ // You should have received a copy of the GNU General Public License // along with this program. If not, see . +#include +#include + MAINICON ICON "mbst.ico" -1 24 "Application.manifest" +1 RT_MANIFEST "Application.manifest" 1 VERSIONINFO FILEVERSION 1,4,0,0 PRODUCTVERSION 1,4,0,0 -FILEOS 0x40004 -FILETYPE 0x1 +FILEOS VOS_NT_WINDOWS32 +#ifdef SAVETOOL_DEBUG_BUILD +FILEFLAGS VS_FF_DEBUG +#endif +FILETYPE VFT_APP { BLOCK "StringFileInfo" { -- 2.39.2 From 00be2eeaab9f4b5b951927003d20dfa8008b5376 Mon Sep 17 00:00:00 2001 From: William JCM Date: Thu, 21 Jul 2022 09:20:19 +0200 Subject: [PATCH 23/24] Update Corrade and Magnum. --- third-party/corrade | 2 +- third-party/magnum | 2 +- third-party/magnum-integration | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/third-party/corrade b/third-party/corrade index 5af4056..3977285 160000 --- a/third-party/corrade +++ b/third-party/corrade @@ -1 +1 @@ -Subproject commit 5af40565ef5383abc99e46409a96af96bcef832f +Subproject commit 3977285b406c0165f3df6339ecf9f2535778242c diff --git a/third-party/magnum b/third-party/magnum index 65e09af..e8e9aee 160000 --- a/third-party/magnum +++ b/third-party/magnum @@ -1 +1 @@ -Subproject commit 65e09afa756b4e451ba718e4d3b8561715870468 +Subproject commit e8e9aeec7faee941620a39ee016cdd0df880ddfc diff --git a/third-party/magnum-integration b/third-party/magnum-integration index 5a6aa83..fa60304 160000 --- a/third-party/magnum-integration +++ b/third-party/magnum-integration @@ -1 +1 @@ -Subproject commit 5a6aa83561d4e411ddd968ed50c92aa9443e8191 +Subproject commit fa603040834aa2346af280a707578598011c8c3d -- 2.39.2 From bfa7049e49bceba9035cf62fa7d1fcb6fc49352e Mon Sep 17 00:00:00 2001 From: William JCM Date: Sun, 11 Sep 2022 20:12:34 +0200 Subject: [PATCH 24/24] Update Corrade and Magnum. --- third-party/corrade | 2 +- third-party/magnum | 2 +- third-party/magnum-integration | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/third-party/corrade b/third-party/corrade index 3977285..e6b4d95 160000 --- a/third-party/corrade +++ b/third-party/corrade @@ -1 +1 @@ -Subproject commit 3977285b406c0165f3df6339ecf9f2535778242c +Subproject commit e6b4d952e757ab99a0b67e516235b7f91904dca0 diff --git a/third-party/magnum b/third-party/magnum index e8e9aee..da5d2fa 160000 --- a/third-party/magnum +++ b/third-party/magnum @@ -1 +1 @@ -Subproject commit e8e9aeec7faee941620a39ee016cdd0df880ddfc +Subproject commit da5d2fa958f22844adaec90e894e85270ed0a631 diff --git a/third-party/magnum-integration b/third-party/magnum-integration index fa60304..c6c759d 160000 --- a/third-party/magnum-integration +++ b/third-party/magnum-integration @@ -1 +1 @@ -Subproject commit fa603040834aa2346af280a707578598011c8c3d +Subproject commit c6c759def2090a821a97763fc2e15ec06d0396ce -- 2.39.2