From f0628c2cce8f11c5b100994e6df2fbda2a5c2b2e Mon Sep 17 00:00:00 2001 From: "Robin E. R. Davies" Date: Fri, 27 Jun 2025 06:09:41 -0400 Subject: [PATCH] GCC 12.2 portability issues --- PiPedalCommon/src/AlsaSequencer.cpp | 5 ++++- PiPedalCommon/src/HtmlHelper.cpp | 4 ++-- PiPedalCommon/src/include/json.hpp | 2 ++ PiPedalCommon/src/include/json_variant.hpp | 1 + src/AudioFiles.cpp | 6 ++++-- todo.txt | 2 ++ 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/PiPedalCommon/src/AlsaSequencer.cpp b/PiPedalCommon/src/AlsaSequencer.cpp index 28be46f..26854c4 100644 --- a/PiPedalCommon/src/AlsaSequencer.cpp +++ b/PiPedalCommon/src/AlsaSequencer.cpp @@ -81,8 +81,11 @@ namespace pipedal port.canReadSubscribe = capability & SND_SEQ_PORT_CAP_SUBS_READ; port.canWriteSubscribe = capability & SND_SEQ_PORT_CAP_SUBS_WRITE; auto typeBits = snd_seq_port_info_get_type(port_info); - +#ifdef SND_SEQ_PORT_TYPE_MIDI_UMP port.isUmp = (typeBits & SND_SEQ_PORT_TYPE_MIDI_UMP) != 0; +#else + port.isUmp = false; // UMP support is not available in all versions of ALSA +#endif port.isSystemAnnounce = (typeBits & SND_SEQ_PORT_SYSTEM_ANNOUNCE) != 0; port.isMidiSynth = (typeBits & SND_SEQ_PORT_TYPE_MIDI_GENERIC) != 0 || (typeBits & SND_SEQ_PORT_TYPE_MIDI_GM) != 0 || diff --git a/PiPedalCommon/src/HtmlHelper.cpp b/PiPedalCommon/src/HtmlHelper.cpp index 33c1bb4..607c7aa 100644 --- a/PiPedalCommon/src/HtmlHelper.cpp +++ b/PiPedalCommon/src/HtmlHelper.cpp @@ -44,9 +44,9 @@ std::string HtmlHelper::timeToHttpDate(std::filesystem::file_time_type time) { // Convert to time_t. - std::chrono::system_clock::time_point system_time = std::chrono::clock_cast(time); + auto sctp = std::chrono::time_point_cast(time - std::filesystem::file_time_type::clock::now() + std::chrono::system_clock::now()); - auto time_t_value = std::chrono::system_clock::to_time_t(system_time); + auto time_t_value = std::chrono::system_clock::to_time_t(sctp); return timeToHttpDate(time_t_value); } diff --git a/PiPedalCommon/src/include/json.hpp b/PiPedalCommon/src/include/json.hpp index 93e9d03..aa193aa 100644 --- a/PiPedalCommon/src/include/json.hpp +++ b/PiPedalCommon/src/include/json.hpp @@ -35,6 +35,8 @@ #include #include #include +#include +#include #define DECLARE_JSON_MAP(CLASSNAME) \ static pipedal::json_map::storage_type jmap diff --git a/PiPedalCommon/src/include/json_variant.hpp b/PiPedalCommon/src/include/json_variant.hpp index d6454f2..9c4b69b 100644 --- a/PiPedalCommon/src/include/json_variant.hpp +++ b/PiPedalCommon/src/include/json_variant.hpp @@ -30,6 +30,7 @@ #include #include #include +#include #include "json.hpp" namespace pipedal diff --git a/src/AudioFiles.cpp b/src/AudioFiles.cpp index 6825241..ec67e28 100644 --- a/src/AudioFiles.cpp +++ b/src/AudioFiles.cpp @@ -33,6 +33,7 @@ #include "Lv2Log.hpp" #include "ss.hpp" #include "util.hpp" +#include #undef _GLIBCXX_DEBUG // Ensure we are not in debug mode, as this file is not compatible with it. #include "SQLiteCpp/SQLiteCpp.h" @@ -112,8 +113,9 @@ namespace static int64_t fileTimeToInt64(const fs::file_time_type &fileTime) { - std::chrono::system_clock::time_point system_time = std::chrono::clock_cast(fileTime); - auto result = std::chrono::duration_cast(system_time.time_since_epoch()).count(); + auto sctp = std::chrono::time_point_cast( + fileTime - fs::file_time_type::clock::now() + std::chrono::system_clock::now()); + auto result = std::chrono::duration_cast(sctp.time_since_epoch()).count(); return result; } static int64_t GetLastWriteTime(const fs::path &file) diff --git a/todo.txt b/todo.txt index fd1dddc..4a7eda0 100644 --- a/todo.txt +++ b/todo.txt @@ -1,3 +1,5 @@ +check filetime conversion in gcc 12.2. + AudioFiles.cpp fileTimeToInt64