diff --git a/libs/audio/include/psemek/audio/duration.hpp b/libs/audio/include/psemek/audio/duration.hpp index 2bf22ca1..36687149 100644 --- a/libs/audio/include/psemek/audio/duration.hpp +++ b/libs/audio/include/psemek/audio/duration.hpp @@ -26,7 +26,9 @@ namespace psemek::audio : samples_{seconds_to_samples(seconds)} {} - duration(duration const & other) = default; + duration(duration const & other) + : samples_{other.samples_} + {} float seconds() const { @@ -38,6 +40,12 @@ namespace psemek::audio return samples_; } + duration & operator = (duration const & other) + { + samples_ = other.samples_; + return *this; + } + duration & operator += (duration const & other) { samples_ += other.samples_; diff --git a/libs/audio/source/effect/fade_in.cpp b/libs/audio/source/effect/fade_in.cpp index 777ecd7b..ea4c0384 100644 --- a/libs/audio/source/effect/fade_in.cpp +++ b/libs/audio/source/effect/fade_in.cpp @@ -1,7 +1,7 @@ #include #include -#include +#include namespace psemek::audio { diff --git a/libs/audio/source/effect/fade_out.cpp b/libs/audio/source/effect/fade_out.cpp index 34440932..3137080d 100644 --- a/libs/audio/source/effect/fade_out.cpp +++ b/libs/audio/source/effect/fade_out.cpp @@ -1,7 +1,7 @@ #include #include -#include +#include namespace psemek::audio { diff --git a/libs/audio/source/effect/pause.cpp b/libs/audio/source/effect/pause.cpp index d60453e0..fe57ff85 100644 --- a/libs/audio/source/effect/pause.cpp +++ b/libs/audio/source/effect/pause.cpp @@ -2,6 +2,7 @@ #include #include +#include namespace psemek::audio { diff --git a/libs/audio/source/effect/truncate.cpp b/libs/audio/source/effect/truncate.cpp index 2c98aa5e..d4b55ac4 100644 --- a/libs/audio/source/effect/truncate.cpp +++ b/libs/audio/source/effect/truncate.cpp @@ -1,5 +1,7 @@ #include +#include + namespace psemek::audio { diff --git a/libs/audio/source/engine.cpp b/libs/audio/source/engine.cpp index f8b47060..746a078b 100644 --- a/libs/audio/source/engine.cpp +++ b/libs/audio/source/engine.cpp @@ -29,7 +29,11 @@ namespace psemek::audio channel_ptr output; impl(); - ~impl(); + + ~impl() + { + SDL_CloseAudioDevice(device); + } static void callback(void * userdata, std::uint8_t * stream, int len); }; @@ -54,11 +58,6 @@ namespace psemek::audio SDL_PauseAudioDevice(device, 0); } - engine::impl::~impl() - { - SDL_CloseAudioDevice(device); - } - void engine::impl::callback(void * userdata, std::uint8_t * dst_u8, int len) { static std::string const profiler_str = "audio"; diff --git a/libs/geom/include/psemek/geom/math.hpp b/libs/geom/include/psemek/geom/math.hpp index 28660c95..b74dc013 100644 --- a/libs/geom/include/psemek/geom/math.hpp +++ b/libs/geom/include/psemek/geom/math.hpp @@ -3,6 +3,7 @@ #include #include +#include #include namespace psemek::geom diff --git a/libs/gfx/source/gltf_mesh.cpp b/libs/gfx/source/gltf_mesh.cpp index d69d691c..9def1b61 100644 --- a/libs/gfx/source/gltf_mesh.cpp +++ b/libs/gfx/source/gltf_mesh.cpp @@ -5,6 +5,7 @@ #include #include +#include namespace psemek::gfx { diff --git a/libs/phys/source/engine_3d.cpp b/libs/phys/source/engine_3d.cpp index 1d9977f4..c3fa17e8 100644 --- a/libs/phys/source/engine_3d.cpp +++ b/libs/phys/source/engine_3d.cpp @@ -9,6 +9,9 @@ #include #include +#include +#include + namespace psemek::phys3d { diff --git a/libs/util/include/psemek/util/enum.hpp b/libs/util/include/psemek/util/enum.hpp index 46b98be0..6ba649e5 100644 --- a/libs/util/include/psemek/util/enum.hpp +++ b/libs/util/include/psemek/util/enum.hpp @@ -110,6 +110,6 @@ namespace psemek::util } \ template \ inline ::std::basic_ostream & operator << (::std::basic_ostream & os, name value) { return os << to_string(value); } \ - inline ::psemek::util::enum_range BOOST_PP_CAT(name, _values) () { return {0, BOOST_PP_SEQ_SIZE(values)}; } + inline ::psemek::util::enum_range BOOST_PP_CAT(name, _values) () { return {{0}, {BOOST_PP_SEQ_SIZE(values)}}; } diff --git a/libs/util/include/psemek/util/hstring.hpp b/libs/util/include/psemek/util/hstring.hpp index 7a9775ab..57a0d18f 100644 --- a/libs/util/include/psemek/util/hstring.hpp +++ b/libs/util/include/psemek/util/hstring.hpp @@ -60,7 +60,19 @@ namespace psemek::util inline auto operator <=> (hstring const & str1, hstring const & str2) { +#ifdef __clang__ + // libc++ in MacOSX12.3.sdk doesn't have operator <=> for string views + auto view1 = str1.view(); + auto view2 = str2.view(); + if (std::lexicographical_compare(view1.begin(), view1.end(), view2.begin(), view2.end())) + return std::strong_ordering::less; + else if (std::equal(view1.begin(), view1.end(), view2.begin(), view2.end())) + return std::strong_ordering::equal; + else + return std::strong_ordering::greater; +#else return str1.view() <=> str2.view(); +#endif } } diff --git a/libs/util/source/open_url.cpp b/libs/util/source/open_url.cpp index fb0b3732..2af6098f 100644 --- a/libs/util/source/open_url.cpp +++ b/libs/util/source/open_url.cpp @@ -6,7 +6,7 @@ namespace psemek::util { - static void ignore(int) {} + [[maybe_unused]] static void ignore(int) {} static void do_open_url(std::string url) {