diff --git a/script/update-version.sh b/script/update-version.sh index fabb40c49..38441175e 100755 --- a/script/update-version.sh +++ b/script/update-version.sh @@ -10,11 +10,12 @@ if [ -z "$MAJOR" ] || [ -z "$MINOR" ] || [ -z "$PATCH" ]; then exit fi -sed -Ei.bak "s/(\s*)(#define VERSION_MAJOR )(.*)/\1\2${MAJOR}/g" src/musikcore/version.h -sed -Ei.bak "s/(\s*)(#define VERSION_MINOR )(.*)/\1\2${MINOR}/g" src/musikcore/version.h -sed -Ei.bak "s/(\s*)(#define VERSION_PATCH )(.*)/\1\2${PATCH}/g" src/musikcore/version.h -sed -Ei.bak "s/(\s*)(#define VERSION_COMMIT_HASH )(.*)/\1\2\"${COMMIT_HASH}\"/g" src/musikcore/version.h -sed -Ei.bak "s/(\s*)(#define VERSION )(.*)/\1\2\"${MAJOR}.${MINOR}.${PATCH}\"/g" src/musikcore/version.h +sed -Ei.bak "s/(\s*)(#define MUSIKCUBE_VERSION_MAJOR )(.*)/\1\2${MAJOR}/g" src/musikcore/sdk/version.h +sed -Ei.bak "s/(\s*)(#define MUSIKCUBE_VERSION_MINOR )(.*)/\1\2${MINOR}/g" src/musikcore/sdk/version.h +sed -Ei.bak "s/(\s*)(#define MUSIKCUBE_VERSION_PATCH )(.*)/\1\2${PATCH}/g" src/musikcore/sdk/version.h +sed -Ei.bak "s/(\s*)(#define MUSIKCUBE_VERSION_COMMIT_HASH )(.*)/\1\2\"${COMMIT_HASH}\"/g" src/musikcore/sdk/version.h +sed -Ei.bak "s/(\s*)(#define MUSIKCUBE_VERSION )(.*)/\1\2\"${MAJOR}.${MINOR}.${PATCH}\"/g" src/musikcore/sdk/version.h +sed -Ei.bak "s/(\s*)(#define MUSIKCUBE_VERSION_WITH_COMMIT_HASH )(.*)/\1\2\"${MAJOR}.${MINOR}.${PATCH}-${COMMIT_HASH}\"/g" src/musikcore/sdk/version.h # visual studio resource files are utf16-le, so sed can't operate on them # directly. convert to utf8, process, then back to utf16-le @@ -35,6 +36,6 @@ sed -Ei.bak "s/(\s*)(%define version )(.*)/\1\2${MAJOR}.${MINOR}.${PATCH}/g" mus # ugh. there's a way to tell sed not to backup, but it's different on gnu and # bsd sed variants. this is easier than trying to switch the args dynamically. -rm src/musikcore/version.h.bak +rm src/musikcore/sdk/version.h.bak rm CMakeLists.txt.bak rm musikcube.spec.bak diff --git a/src/musikcore/net/PiggyWebSocketClient.cpp b/src/musikcore/net/PiggyWebSocketClient.cpp index dcdd0cb7e..cd1ea993e 100644 --- a/src/musikcore/net/PiggyWebSocketClient.cpp +++ b/src/musikcore/net/PiggyWebSocketClient.cpp @@ -39,7 +39,7 @@ #include #include #include -#include +#include using namespace musik::core; using namespace musik::core::net; diff --git a/src/musikcore/net/WebSocketClient.cpp b/src/musikcore/net/WebSocketClient.cpp index 2dff3e761..743afc23c 100644 --- a/src/musikcore/net/WebSocketClient.cpp +++ b/src/musikcore/net/WebSocketClient.cpp @@ -39,7 +39,7 @@ #include #include #include -#include +#include #pragma warning(push, 0) #include @@ -116,8 +116,8 @@ static inline bool isVersionCompatible(const std::string& str) { auto parts = str::Split(str, "."); return parts.size() == 3 && - parts[0] == std::to_string(VERSION_MAJOR) && - parts[1] == std::to_string(VERSION_MINOR); + parts[0] == std::to_string(MUSIKCUBE_VERSION_MAJOR) && + parts[1] == std::to_string(MUSIKCUBE_VERSION_MINOR); } WebSocketClient::WebSocketClient(IMessageQueue* messageQueue, Listener* listener) diff --git a/src/musikcore/pch.hpp b/src/musikcore/pch.hpp index 41649425f..6d2af2abf 100644 --- a/src/musikcore/pch.hpp +++ b/src/musikcore/pch.hpp @@ -179,4 +179,4 @@ #include #include #include -#include \ No newline at end of file +#include \ No newline at end of file diff --git a/src/musikcore/plugin/Plugins.cpp b/src/musikcore/plugin/Plugins.cpp index 55ea4c004..ee13a5ec4 100644 --- a/src/musikcore/plugin/Plugins.cpp +++ b/src/musikcore/plugin/Plugins.cpp @@ -37,7 +37,7 @@ #include "PluginFactory.h" #include -#include +#include #include #include #include @@ -353,7 +353,7 @@ static class Environment: public IEnvironment { } const char* GetAppVersion() override { - return VERSION; + return MUSIKCUBE_VERSION; } } environment; diff --git a/src/musikcore/sdk/constants.h b/src/musikcore/sdk/constants.h index ede2b55a1..cbdf03efb 100644 --- a/src/musikcore/sdk/constants.h +++ b/src/musikcore/sdk/constants.h @@ -34,6 +34,7 @@ #pragma once +#include "version.h" #include #include diff --git a/src/musikcore/version.h b/src/musikcore/sdk/version.h similarity index 84% rename from src/musikcore/version.h rename to src/musikcore/sdk/version.h index fd41ff651..81a4ce2c2 100644 --- a/src/musikcore/version.h +++ b/src/musikcore/sdk/version.h @@ -36,11 +36,12 @@ #include -#define VERSION_MAJOR 0 -#define VERSION_MINOR 99 -#define VERSION_PATCH 5 -#define VERSION_COMMIT_HASH "#0ead12be" -#define VERSION "0.99.5" +#define MUSIKCUBE_VERSION_MAJOR 0 +#define MUSIKCUBE_VERSION_MINOR 99 +#define MUSIKCUBE_VERSION_PATCH 5 +#define MUSIKCUBE_VERSION "0.99.5" +#define MUSIKCUBE_VERSION_COMMIT_HASH "#4a823dee" +#define MUSIKCUBE_VERSION_WITH_COMMIT_HASH "0.99.5-#4a823dee" namespace musik { namespace cube { @@ -60,9 +61,9 @@ namespace musik { #endif return "musikcube " + - std::to_string(VERSION_MAJOR) + "." + - std::to_string(VERSION_MINOR) + "." + - std::to_string(VERSION_PATCH) + + std::to_string(MUSIKCUBE_VERSION_MAJOR) + "." + + std::to_string(MUSIKCUBE_VERSION_MINOR) + "." + + std::to_string(MUSIKCUBE_VERSION_PATCH) + "(" + PLATFORM + ")"; } } diff --git a/src/musikcube/app/layout/ConsoleLayout.cpp b/src/musikcube/app/layout/ConsoleLayout.cpp index 65eb16f18..8f01cec61 100755 --- a/src/musikcube/app/layout/ConsoleLayout.cpp +++ b/src/musikcube/app/layout/ConsoleLayout.cpp @@ -35,7 +35,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/musikcube/app/layout/MainLayout.cpp b/src/musikcube/app/layout/MainLayout.cpp index 6553383b3..9bc4bbee7 100755 --- a/src/musikcube/app/layout/MainLayout.cpp +++ b/src/musikcube/app/layout/MainLayout.cpp @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include @@ -198,7 +198,7 @@ bool MainLayout::KeyPress(const std::string& key) { return true; } else if (key == "M-`") { - std::string version = u8fmt("%s %s", VERSION, VERSION_COMMIT_HASH); + std::string version = u8fmt("%s %s", MUSIKCUBE_VERSION, MUSIKCUBE_VERSION_COMMIT_HASH); ToastOverlay::Show(u8fmt(_TSTR("console_version"), version.c_str()), -1); return true; } diff --git a/src/musikcube/app/layout/SettingsLayout.cpp b/src/musikcube/app/layout/SettingsLayout.cpp index 66d02eff8..cf1be9d5a 100755 --- a/src/musikcube/app/layout/SettingsLayout.cpp +++ b/src/musikcube/app/layout/SettingsLayout.cpp @@ -49,7 +49,7 @@ #include #include #include -#include +#include #include #include @@ -662,7 +662,7 @@ void SettingsLayout::LoadPreferences() { piggyStatus = " (..)"; } } - std::string version = u8fmt("%s %s%s", VERSION, VERSION_COMMIT_HASH, piggyStatus.c_str()); + std::string version = u8fmt("%s %s%s", MUSIKCUBE_VERSION, MUSIKCUBE_VERSION_COMMIT_HASH, piggyStatus.c_str()); this->appVersion->SetText(u8fmt(_TSTR("console_version"), version.c_str())); this->Layout(); diff --git a/src/musikcube/app/overlay/PluginOverlay.cpp b/src/musikcube/app/overlay/PluginOverlay.cpp index 2f48ce17d..d60582bbf 100644 --- a/src/musikcube/app/overlay/PluginOverlay.cpp +++ b/src/musikcube/app/overlay/PluginOverlay.cpp @@ -66,6 +66,7 @@ static const std::string checked = "[x]"; struct PluginInfo { IPlugin* plugin; std::string fn; + std::string version; bool enabled; }; @@ -143,7 +144,7 @@ class PluginListAdapter : public ScrollAdapterBase { std::string display = " " + (info->enabled ? checked : unchecked) + " " + - info->plugin->Name() + " (" + info->fn + ")"; + info->plugin->Name() + " (" + info->fn + ") [v" + info->version + "]"; SinglePtr result = SinglePtr(new SingleLineEntry(text::Ellipsize(display, this->GetWidth()))); @@ -177,6 +178,7 @@ class PluginListAdapter : public ScrollAdapterBase { PluginInfoPtr info(new PluginInfo()); info->plugin = raw; info->fn = std::fs::path(std::fs::u8path(fn)).filename().u8string(); + info->version = plugin->Version(); info->enabled = prefs->GetBool(info->fn, true); plugins.push_back(info); }); diff --git a/src/musikcube/app/util/UpdateCheck.cpp b/src/musikcube/app/util/UpdateCheck.cpp index 440aba150..216a40b53 100644 --- a/src/musikcube/app/util/UpdateCheck.cpp +++ b/src/musikcube/app/util/UpdateCheck.cpp @@ -43,7 +43,7 @@ #include #include -#include +#include #include #include @@ -88,7 +88,7 @@ static inline std::string formattedVersion(short major, short minor, short patch static inline std::string getUserAgent() { return u8fmt("musikcube %s (%s)", - formattedVersion(VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH).c_str(), + formattedVersion(MUSIKCUBE_VERSION_MAJOR, MUSIKCUBE_VERSION_MINOR, MUSIKCUBE_VERSION_PATCH).c_str(), PLATFORM.c_str()); } @@ -127,7 +127,7 @@ bool UpdateCheck::Run(Callback callback) { this->updateUrl = platform[URL].get(); this->latestVersion = formattedVersion(major, minor, patch); - const int64_t current = versionCode(VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH); + const int64_t current = versionCode(MUSIKCUBE_VERSION_MAJOR, MUSIKCUBE_VERSION_MINOR, MUSIKCUBE_VERSION_PATCH); const int64_t latest = versionCode(major, minor, patch); needsUpdate = latest > current; } diff --git a/src/musikcube/stdafx.h b/src/musikcube/stdafx.h index 3175534a2..d72351d61 100644 --- a/src/musikcube/stdafx.h +++ b/src/musikcube/stdafx.h @@ -203,7 +203,7 @@ asio's streambuf. include it up front so work around this */ #include #include #include -#include +#include #include #include diff --git a/src/musikcubed/main.cpp b/src/musikcubed/main.cpp index 737b3466c..9b283adc4 100644 --- a/src/musikcubed/main.cpp +++ b/src/musikcubed/main.cpp @@ -129,7 +129,7 @@ static void handleCommandLine(int argc, char** argv) { stopDaemon(); } else if (command == "--version") { - std::cout << "\n musikcubed version: " << VERSION << " " << VERSION_COMMIT_HASH << "\n\n"; + std::cout << "\n musikcubed version: " << MUSIKCUBE_VERSION << " " << MUSIKCUBE_VERSION_COMMIT_HASH << "\n\n"; } else if (command == "--running") { pid_t pid = getDaemonPid(); diff --git a/src/plugins/alsaout/alsaout_plugin.cpp b/src/plugins/alsaout/alsaout_plugin.cpp index 1447f881a..f9db00aa7 100755 --- a/src/plugins/alsaout/alsaout_plugin.cpp +++ b/src/plugins/alsaout/alsaout_plugin.cpp @@ -42,15 +42,15 @@ class AlsaPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() override { delete this; } - virtual const char* Name() override { return "AlsaOut IOutput"; } - virtual const char* Version() override { return "0.5.0"; } - virtual const char* Author() override { return "Julian Cromarty, clangen"; } - virtual const char* Guid() override { return "668a75e6-1816-4c75-a361-a9d48906f23f"; } - virtual bool Configurable() override { return false; } - virtual void Configure() override { } - virtual void Reload() override { } - virtual int SdkVersion() override { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "AlsaOut IOutput"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "Julian Cromarty, clangen"; } + const char* Guid() override { return "668a75e6-1816-4c75-a361-a9d48906f23f"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; extern "C" musik::core::sdk::IPlugin* GetPlugin() { diff --git a/src/plugins/cddadecoder/cddadecoder_plugin.cpp b/src/plugins/cddadecoder/cddadecoder_plugin.cpp index a0e78680c..10e988843 100644 --- a/src/plugins/cddadecoder/cddadecoder_plugin.cpp +++ b/src/plugins/cddadecoder/cddadecoder_plugin.cpp @@ -52,7 +52,7 @@ BOOL APIENTRY DllMain(HMODULE module, DWORD reason, LPVOID reserved) { class CddaDecoderPlugin : public musik::core::sdk::IPlugin { void Release() noexcept override { delete this; }; const char* Name() override { return PLUGIN_NAME; } - const char* Version() override { return "0.5.0"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } const char* Author() override { return "Björn Olievier, clangen"; } const char* Guid() override { return "0862b76d-67cd-4e54-b5d1-6a2c8e5101a4"; } bool Configurable() noexcept override { return false; } diff --git a/src/plugins/coreaudioout/coreaudioout_plugin.cpp b/src/plugins/coreaudioout/coreaudioout_plugin.cpp index c60fb082b..1cc237c86 100644 --- a/src/plugins/coreaudioout/coreaudioout_plugin.cpp +++ b/src/plugins/coreaudioout/coreaudioout_plugin.cpp @@ -40,15 +40,15 @@ class CoreAudioPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() override { delete this; } - virtual const char* Name() override { return "CoreAudio IOutput"; } - virtual const char* Version() override { return "0.5.0"; } - virtual const char* Author() override { return "clangen"; } - virtual const char* Guid() override { return "7277a19f-a5f7-4123-ac2d-c36273097b72"; } - virtual bool Configurable() override { return false; } - virtual void Configure() override { } - virtual void Reload() override { } - virtual int SdkVersion() override { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "CoreAudio IOutput"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "7277a19f-a5f7-4123-ac2d-c36273097b72"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; extern "C" musik::core::sdk::IPlugin* GetPlugin() { diff --git a/src/plugins/directsoundout/directsoundout_plugin.cpp b/src/plugins/directsoundout/directsoundout_plugin.cpp index 53bb1853a..65dbc4c44 100644 --- a/src/plugins/directsoundout/directsoundout_plugin.cpp +++ b/src/plugins/directsoundout/directsoundout_plugin.cpp @@ -39,15 +39,15 @@ class DirectSoundPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() { delete this; } - virtual const char* Name() { return "DirectSound IOutput"; }; - virtual const char* Version() { return "0.5.0"; } - virtual const char* Author() { return "clangen"; }; - virtual const char* Guid() { return "731ad687-c52d-47b0-90b4-5483399640b5"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "DirectSound IOutput"; }; + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; }; + const char* Guid() override { return "731ad687-c52d-47b0-90b4-5483399640b5"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { diff --git a/src/plugins/ffmpegdecoder/plugin.cpp b/src/plugins/ffmpegdecoder/plugin.cpp index c31451ecf..6d6b6adb6 100644 --- a/src/plugins/ffmpegdecoder/plugin.cpp +++ b/src/plugins/ffmpegdecoder/plugin.cpp @@ -67,15 +67,15 @@ extern "C" { class FfmpegPlugin : public musik::core::sdk::IPlugin { public: FfmpegPlugin() { } - virtual void Release() { }; - virtual const char* Name() { return "ffmpeg IDecoder"; } - virtual const char* Version() { return "0.7.0"; } - virtual const char* Author() { return "clangen"; } - virtual const char* Guid() { return "f993ec34-ab43-4c6a-9a0a-6462b4ae1a1c"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { }; + const char* Name() override { return "ffmpeg IDecoder"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "f993ec34-ab43-4c6a-9a0a-6462b4ae1a1c"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } } plugin; class FfmpegDecoderFactory : public musik::core::sdk::IDecoderFactory { @@ -128,14 +128,14 @@ class FfmpegDecoderFactory : public musik::core::sdk::IDecoderFactory { ~FfmpegDecoderFactory() { } - virtual void Release() { + void Release() override { } - virtual musik::core::sdk::IDecoder* CreateDecoder() { + musik::core::sdk::IDecoder* CreateDecoder() override { return new FfmpegDecoder(); } - virtual bool CanHandle(const char* type) const { + bool CanHandle(const char* type) const override { std::string str(type); std::transform(str.begin(), str.end(), str.begin(), tolower); diff --git a/src/plugins/gmedecoder/plugin.cpp b/src/plugins/gmedecoder/plugin.cpp index cf0511bc2..b6a5cf9f6 100644 --- a/src/plugins/gmedecoder/plugin.cpp +++ b/src/plugins/gmedecoder/plugin.cpp @@ -59,28 +59,28 @@ IPreferences* prefs = nullptr; class GmePlugin: public IPlugin { public: - virtual void Release() { delete this; }; - virtual const char* Name() { return PLUGIN_NAME; } - virtual const char* Version() { return "0.1.0"; } - virtual const char* Author() { return "clangen"; } - virtual const char* Guid() { return "2c4eee19-6585-4984-a631-b52ff7d6d564"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; }; + const char* Name() override { return PLUGIN_NAME; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "2c4eee19-6585-4984-a631-b52ff7d6d564"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; class GmeDecoderFactory: public IDecoderFactory { public: - virtual IDecoder* CreateDecoder() override { + IDecoder* CreateDecoder() override { return new GmeDecoder(); } - virtual void Release() override { + void Release() override { delete this; } - virtual bool CanHandle(const char* type) const override { + bool CanHandle(const char* type) const override { return canHandle(std::string(type)); } }; @@ -89,12 +89,12 @@ class GmeDataStreamFactory: public IDataStreamFactory{ public: using OpenFlags = musik::core::sdk::OpenFlags; - virtual bool CanRead(const char *uri) override { + bool CanRead(const char *uri) override { std::string str = uri; return str.find("gme://") == 0 && canHandle(str); } - virtual IDataStream* Open(const char *uri, OpenFlags flags) override { + IDataStream* Open(const char *uri, OpenFlags flags) override { auto result = new GmeDataStream(); if (result->Open(uri, flags)) { return result; @@ -103,7 +103,7 @@ class GmeDataStreamFactory: public IDataStreamFactory{ return nullptr; } - virtual void Release() override { + void Release() override { delete this; } }; diff --git a/src/plugins/httpdatastream/httpdatastream_plugin.cpp b/src/plugins/httpdatastream/httpdatastream_plugin.cpp index 03a62f077..2bd95b233 100644 --- a/src/plugins/httpdatastream/httpdatastream_plugin.cpp +++ b/src/plugins/httpdatastream/httpdatastream_plugin.cpp @@ -51,15 +51,15 @@ static class HttpDataStreamPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() { }; - virtual const char* Name() { return "HTTP IDataStream"; } - virtual const char* Version() { return "0.1.0"; } - virtual const char* Author() { return "clangen"; } - virtual const char* Guid() { return "b153adad-ee98-4331-ad32-4ff7f34828cd"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { }; + const char* Name() override { return "HTTP IDataStream"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "b153adad-ee98-4331-ad32-4ff7f34828cd"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } } plugin; extern "C" DLLEXPORT IPlugin* GetPlugin() { diff --git a/src/plugins/libopenmptdecoder/plugin.cpp b/src/plugins/libopenmptdecoder/plugin.cpp index 5e961cecf..16cd1daec 100644 --- a/src/plugins/libopenmptdecoder/plugin.cpp +++ b/src/plugins/libopenmptdecoder/plugin.cpp @@ -64,28 +64,28 @@ IPreferences* prefs = nullptr; class OpenMptPlugin: public IPlugin { public: - virtual void Release() { delete this; }; - virtual const char* Name() { return "libopenmpt IDecoder"; } - virtual const char* Version() { return "0.1.0"; } - virtual const char* Author() { return "clangen"; } - virtual const char* Guid() { return "c367f42f-389a-4378-966c-1f96dad6a66a"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; }; + const char* Name() override { return "libopenmpt IDecoder"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "c367f42f-389a-4378-966c-1f96dad6a66a"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; class OpenMptDecoderFactory: public IDecoderFactory { public: - virtual IDecoder* CreateDecoder() override { + IDecoder* CreateDecoder() override { return new OpenMptDecoder(); } - virtual void Release() override { + void Release() override { delete this; } - virtual bool CanHandle(const char* type) const override { + bool CanHandle(const char* type) const override { return isFileTypeSupported(type); } }; @@ -94,7 +94,7 @@ class OpenMptDataStreamFactory : public IDataStreamFactory { public: using OpenFlags = musik::core::sdk::OpenFlags; - virtual bool CanRead(const char *uri) override { + bool CanRead(const char *uri) override { std::string fn; int track; if (indexer::parseExternalId(EXTERNAL_ID_PREFIX, std::string(uri), fn, track)) { @@ -105,7 +105,7 @@ class OpenMptDataStreamFactory : public IDataStreamFactory { return false; } - virtual IDataStream* Open(const char *uri, OpenFlags flags) override { + IDataStream* Open(const char *uri, OpenFlags flags) override { auto result = new OpenMptDataStream(); if (result->Open(uri, flags)) { return result; @@ -114,7 +114,7 @@ class OpenMptDataStreamFactory : public IDataStreamFactory { return nullptr; } - virtual void Release() override { + void Release() override { delete this; } }; diff --git a/src/plugins/macosmediakeys/plugin.mm b/src/plugins/macosmediakeys/plugin.mm index 6851dc3b7..df5c72053 100644 --- a/src/plugins/macosmediakeys/plugin.mm +++ b/src/plugins/macosmediakeys/plugin.mm @@ -60,15 +60,15 @@ struct IKeyProcessor { static class Plugin: public IPlugin { public: - virtual void Release() override { } - virtual const char* Name() override { return "MediaKeys IPlaybackRemote"; } - virtual const char* Version() override { return "0.1.0"; } - virtual const char* Author() override { return "clangen"; } - virtual const char* Guid() override { return "e850a2eb-5aaa-4322-b63e-bf1c1593805b"; } - virtual bool Configurable() override { return false; } - virtual void Configure() override { } - virtual void Reload() override { } - virtual int SdkVersion() override { return musik::core::sdk::SdkVersion; } + void Release() override { } + const char* Name() override { return "MediaKeys IPlaybackRemote"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "e850a2eb-5aaa-4322-b63e-bf1c1593805b"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } } plugin; class PlaybackRemote: public IPlaybackRemote, IKeyProcessor { @@ -85,7 +85,7 @@ class PlaybackRemote: public IPlaybackRemote, IKeyProcessor { } } - virtual void Release() override { + void Release() override { this->Unregister(); delete this; } @@ -99,12 +99,12 @@ class PlaybackRemote: public IPlaybackRemote, IKeyProcessor { } } - virtual void SetPlaybackService(IPlaybackService* playback) override { + void SetPlaybackService(IPlaybackService* playback) override { std::unique_lock lock(mutex); this->playback = playback; } - virtual void ProcessKeyCode(int keyCode) override { + void ProcessKeyCode(int keyCode) override { std::unique_lock lock(mutex); if (this->playback) { switch (keyCode) { @@ -131,12 +131,12 @@ class PlaybackRemote: public IPlaybackRemote, IKeyProcessor { } } - virtual void OnTrackChanged(ITrack* track) override { } - virtual void OnPlaybackStateChanged(PlaybackState state) override { } - virtual void OnPlaybackTimeChanged(double time) override { } - virtual void OnVolumeChanged(double volume) override { } - virtual void OnModeChanged(RepeatMode repeatMode, bool shuffled) override { } - virtual void OnPlayQueueChanged() override { } + void OnTrackChanged(ITrack* track) override { } + void OnPlaybackStateChanged(PlaybackState state) override { } + void OnPlaybackTimeChanged(double time) override { } + void OnVolumeChanged(double volume) override { } + void OnModeChanged(RepeatMode repeatMode, bool shuffled) override { } + void OnPlayQueueChanged() override { } private: std::mutex mutex; diff --git a/src/plugins/mpris/mpris.cpp b/src/plugins/mpris/mpris.cpp index 2ba8dab5f..20f03a2b4 100644 --- a/src/plugins/mpris/mpris.cpp +++ b/src/plugins/mpris/mpris.cpp @@ -35,16 +35,16 @@ static std::string GetThumbnailPath(ITrack* track) static class MPRISPlugin : public IPlugin { public: - MPRISPlugin() { } - void Release() { } - const char* Name() { return "MPRIS interface"; } - const char* Version() { return "0.1.0"; } - const char* Author() { return "brunosmmm"; } - const char* Guid() { return "457df67f-f489-415f-975e-282f470b1c10"; } - bool Configurable() { return false; } - void Configure() { } - void Reload() { } - int SdkVersion() { return musik::core::sdk::SdkVersion; } + MPRISPlugin() override { } + void Release() override { } + const char* Name() override { return "MPRIS interface"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "brunosmmm"; } + const char* Guid() override { return "457df67f-f489-415f-975e-282f470b1c10"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } } plugin; extern "C" void SetEnvironment(IEnvironment* environment) { diff --git a/src/plugins/nullout/nullout_plugin.cpp b/src/plugins/nullout/nullout_plugin.cpp index c3f4bada5..f97f3b262 100644 --- a/src/plugins/nullout/nullout_plugin.cpp +++ b/src/plugins/nullout/nullout_plugin.cpp @@ -43,7 +43,7 @@ class NullPlugin : public musik::core::sdk::IPlugin { public: void Release() noexcept override { delete this; } const char* Name() override { return "Null IOutput"; } - const char* Version() override { return "0.2.0"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } const char* Author() override { return "clangen"; } const char* Guid() override { return "0d45a986-24f1-4253-9fc2-b432353a1eea"; } bool Configurable() override { return false; } diff --git a/src/plugins/pipewireout/pipewireout_plugin.cpp b/src/plugins/pipewireout/pipewireout_plugin.cpp index ebf631d2a..838875740 100644 --- a/src/plugins/pipewireout/pipewireout_plugin.cpp +++ b/src/plugins/pipewireout/pipewireout_plugin.cpp @@ -43,7 +43,7 @@ class PipeWirePlugin : public musik::core::sdk::IPlugin { public: void Release() noexcept override { delete this; } const char* Name() override { return "PipeWire IOutput"; } - const char* Version() override { return "0.1.0"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } const char* Author() override { return "clangen"; } const char* Guid() override { return "ab79e0f2-53d8-4774-ad00-266a30c50427"; } bool Configurable() override { return false; } diff --git a/src/plugins/portaudioout/portaudioout_plugin.cpp b/src/plugins/portaudioout/portaudioout_plugin.cpp index d6fc4fbca..b2250290f 100644 --- a/src/plugins/portaudioout/portaudioout_plugin.cpp +++ b/src/plugins/portaudioout/portaudioout_plugin.cpp @@ -43,7 +43,7 @@ class PortAudioPlugin : public musik::core::sdk::IPlugin { public: void Release() noexcept override { delete this; } const char* Name() override { return "PortAudio IOutput"; } - const char* Version() override { return "0.1.0"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } const char* Author() override { return "clangen"; } const char* Guid() override { return "521934a5-2263-41a4-9852-937d0b63f196"; } bool Configurable() override { return false; } diff --git a/src/plugins/pulseout/pulseout_plugin.cpp b/src/plugins/pulseout/pulseout_plugin.cpp index b0b652153..1f842bef9 100755 --- a/src/plugins/pulseout/pulseout_plugin.cpp +++ b/src/plugins/pulseout/pulseout_plugin.cpp @@ -42,15 +42,15 @@ class PulsePlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() override { delete this; } - virtual const char* Name() override { return "PulseAudio IOutput"; } - virtual const char* Version() override { return "0.5.0"; } - virtual const char* Author() override { return "clangen"; } - virtual const char* Guid() override { return "67c7e90b-5123-41c0-b03a-838ecd6cb8b5"; } - virtual bool Configurable() override { return false; } - virtual void Configure() override { } - virtual void Reload() override { } - virtual int SdkVersion() override { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "PulseAudio IOutput"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "67c7e90b-5123-41c0-b03a-838ecd6cb8b5"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; extern "C" musik::core::sdk::IPlugin* GetPlugin() { diff --git a/src/plugins/server/main.cpp b/src/plugins/server/main.cpp index 86a1aab8c..0d6cb8430 100644 --- a/src/plugins/server/main.cpp +++ b/src/plugins/server/main.cpp @@ -151,7 +151,7 @@ static class Plugin : public IPlugin { public: virtual void Release() { } virtual const char* Name() { return "musikcube Server (wss, http)"; } - virtual const char* Version() { return "0.7.0"; } + virtual const char* Version() { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } virtual const char* Author() { return "clangen"; } virtual const char* Guid() { return "9fc897a3-dfd5-4524-a0fc-b02f46aea4a9"; } virtual bool Configurable() { return false; } diff --git a/src/plugins/sndioout/plugin.cpp b/src/plugins/sndioout/plugin.cpp index 18e7e84ab..6e1a1e83d 100644 --- a/src/plugins/sndioout/plugin.cpp +++ b/src/plugins/sndioout/plugin.cpp @@ -38,15 +38,15 @@ class SndioPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() { delete this; } - virtual const char* Name() { return "Sndio IOutput"; } - virtual const char* Version() { return "0.1.0"; } - virtual const char* Author() { return "clangen"; } - virtual const char* Guid() { return "13903ab8-b387-4de9-86e3-14ba22057dcd"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "Sndio IOutput"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "13903ab8-b387-4de9-86e3-14ba22057dcd"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; extern "C" musik::core::sdk::IPlugin* GetPlugin() { diff --git a/src/plugins/stockencoders/main.cpp b/src/plugins/stockencoders/main.cpp index 1520704ca..bebcea655 100644 --- a/src/plugins/stockencoders/main.cpp +++ b/src/plugins/stockencoders/main.cpp @@ -80,18 +80,16 @@ static std::set supportedFormats = { static class Plugin : public IPlugin { public: - Plugin() { - } - - virtual void Release() { } - virtual const char* Name() { return "Stock Encoders (lame + ffmpeg)"; } - virtual const char* Version() { return "0.7.0"; } - virtual const char* Author() { return "clangen"; } - virtual const char* Guid() { return "d4d13803-a285-4481-ad1e-106131e0d523"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + Plugin() { } + void Release() override { } + const char* Name() override { return "Stock Encoders (lame + ffmpeg)"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "d4d13803-a285-4481-ad1e-106131e0d523"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } } plugin; static class EncoderFactory: public IEncoderFactory { @@ -102,10 +100,10 @@ static class EncoderFactory: public IEncoderFactory { #endif } - virtual void Release() override { + void Release() override { } - virtual IEncoder* CreateEncoder(const char* type) override { + IEncoder* CreateEncoder(const char* type) override { auto lowerType = toLower(type); if (isMp3(lowerType)) { return new LameEncoder(); @@ -116,7 +114,7 @@ static class EncoderFactory: public IEncoderFactory { return nullptr; } - virtual bool CanHandle(const char* type) const override { + bool CanHandle(const char* type) const override { return supportedFormats.find(toLower(type)) != supportedFormats.end(); } diff --git a/src/plugins/supereqdsp/supereqdsp_plugin.cpp b/src/plugins/supereqdsp/supereqdsp_plugin.cpp index c14cbdea8..9699638df 100644 --- a/src/plugins/supereqdsp/supereqdsp_plugin.cpp +++ b/src/plugins/supereqdsp/supereqdsp_plugin.cpp @@ -41,15 +41,15 @@ class SuperEqPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() { delete this; } - virtual const char* Name() { return "SuperEq IDSP"; } - virtual const char* Version() { return "0.1.0"; } - virtual const char* Author() { return "Naoki Shibata, Alexey Yakovenko, clangen"; } - virtual const char* Guid() { return "6f0ed53b-0f13-4220-9b0a-ca496b6421cc"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { SuperEqDsp::NotifyChanged(); } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "SuperEq IDSP"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "Naoki Shibata, Alexey Yakovenko, clangen"; } + const char* Guid() override { return "6f0ed53b-0f13-4220-9b0a-ca496b6421cc"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { SuperEqDsp::NotifyChanged(); } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; #ifdef WIN32 diff --git a/src/plugins/taglib_plugin/taglib_plugin.cpp b/src/plugins/taglib_plugin/taglib_plugin.cpp index eba2fe491..36d701c40 100644 --- a/src/plugins/taglib_plugin/taglib_plugin.cpp +++ b/src/plugins/taglib_plugin/taglib_plugin.cpp @@ -51,15 +51,15 @@ class TaglibPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() { delete this; } - virtual const char* Name() { return "Taglib 1.11 ITagReader (+ffmpeg)"; } - virtual const char* Version() { return "0.6.0"; } - virtual const char* Author() { return "Daniel Önnerby, clangen"; } - virtual const char* Guid() { return "c77ea7a4-5d57-4f17-8521-aba8eeadeda7"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "Taglib 1.11 ITagReader (+ffmpeg)"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "Daniel Önnerby, clangen"; } + const char* Guid() override { return "c77ea7a4-5d57-4f17-8521-aba8eeadeda7"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; extern "C" DLLEXPORT musik::core::sdk::ITagReader* GetTagReader() { diff --git a/src/plugins/wasapiout/wasapiout_plugin.cpp b/src/plugins/wasapiout/wasapiout_plugin.cpp index 22f3b2e85..91540bf3e 100644 --- a/src/plugins/wasapiout/wasapiout_plugin.cpp +++ b/src/plugins/wasapiout/wasapiout_plugin.cpp @@ -40,15 +40,15 @@ class WasapiPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() { delete this; } - virtual const char* Name() { return "Wasapi IOutput"; } - virtual const char* Version() { return "0.5.0"; } - virtual const char* Author() { return "clangen"; } - virtual const char* Guid() { return "871cb3c2-0002-49cd-9410-5207cb3cfd4a"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "Wasapi IOutput"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "871cb3c2-0002-49cd-9410-5207cb3cfd4a"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { diff --git a/src/plugins/waveout/waveout_plugin.cpp b/src/plugins/waveout/waveout_plugin.cpp index 988ba0a90..c068da802 100644 --- a/src/plugins/waveout/waveout_plugin.cpp +++ b/src/plugins/waveout/waveout_plugin.cpp @@ -39,15 +39,15 @@ class WaveOutPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() { delete this; } - virtual const char* Name() { return "WaveOut IOutput"; } - virtual const char* Version() { return "0.7.0"; } - virtual const char* Author() { return "Bj\xC3\xB6rn Olievier, clangen"; } - virtual const char* Guid() { return "bec5bf30-0208-4db0-af0a-2722d9de8421"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - virtual int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "WaveOut IOutput"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "Bj\xC3\xB6rn Olievier, clangen"; } + const char* Guid() override { return "bec5bf30-0208-4db0-af0a-2722d9de8421"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { diff --git a/src/plugins/win32gdivis/GdiVis.cpp b/src/plugins/win32gdivis/GdiVis.cpp index f198e211e..0783c76e1 100644 --- a/src/plugins/win32gdivis/GdiVis.cpp +++ b/src/plugins/win32gdivis/GdiVis.cpp @@ -203,29 +203,29 @@ BOOL APIENTRY DllMain(HMODULE hModule, DWORD reason, LPVOID lpReserved) { class VisualizerPlugin : public musik::core::sdk::IPlugin { public: - virtual void Release() { delete this; } - virtual const char* Name() { return "GdiVis"; } - virtual const char* Version() { return "0.2.0"; } - virtual const char* Author() { return "clangen"; } - virtual const char* Guid() { return "4b0f37f7-96fe-438c-acf2-bbdd53ce1ddf"; } - virtual bool Configurable() { return false; } - virtual void Configure() { } - virtual void Reload() { } - int SdkVersion() { return musik::core::sdk::SdkVersion; } + void Release() override { delete this; } + const char* Name() override { return "GdiVis"; } + const char* Version() override { return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } + const char* Author() override { return "clangen"; } + const char* Guid() override { return "4b0f37f7-96fe-438c-acf2-bbdd53ce1ddf"; } + bool Configurable() override { return false; } + void Configure() override { } + void Reload() override { } + int SdkVersion() override { return musik::core::sdk::SdkVersion; } }; class Visualizer : public musik::core::sdk::ISpectrumVisualizer { public: - virtual const char* Name() { + const char* Name() override { return "GdiVis"; } - virtual void Release() { + void Release() override { this->Hide(); delete this; } - virtual void Write(float *spectrum, int size) { + void Write(float *spectrum, int size) override { std::unique_lock lock(pcmMutex); if (::spectrumSize != size) { @@ -239,7 +239,7 @@ class Visualizer : public musik::core::sdk::ISpectrumVisualizer { memcpy(::spectrumIn, spectrum, size * sizeof(float)); } - virtual void Show() { + void Show() override { if (!Visible()) { quit.store(false); thread.store(true); @@ -248,7 +248,7 @@ class Visualizer : public musik::core::sdk::ISpectrumVisualizer { } } - virtual void Hide() { + void Hide() override { if (Visible()) { quit.store(true); @@ -259,7 +259,7 @@ class Visualizer : public musik::core::sdk::ISpectrumVisualizer { } } - virtual bool Visible() { + bool Visible() override { return thread.load(); } }; diff --git a/src/plugins/win32globalhotkeys/win32globalhotkeys_plugin.cpp b/src/plugins/win32globalhotkeys/win32globalhotkeys_plugin.cpp index bd42fb355..48863ea5a 100644 --- a/src/plugins/win32globalhotkeys/win32globalhotkeys_plugin.cpp +++ b/src/plugins/win32globalhotkeys/win32globalhotkeys_plugin.cpp @@ -158,40 +158,40 @@ class MMShellHook: public musik::core::sdk::IPlugin, public musik::core::sdk::IPlaybackRemote { public: - virtual void Release() { + void Release() override { } - virtual const char* Name() { + const char* Name() override { return "win32globalhotkeys"; } - virtual const char* Version() { - return "0.3.0"; + const char* Version() override { + return MUSIKCUBE_VERSION_WITH_COMMIT_HASH; } - virtual const char* Author() { + const char* Author() override { return "clangen"; } - virtual const char* Guid() { + const char* Guid() override { return "e2678930-ecd4-43b8-85e0-e41d634445b2"; } - virtual bool Configurable() { + bool Configurable() override { return false; } - virtual void Configure() { + void Configure() override { } - virtual void Reload() { + void Reload() override { } - virtual int SdkVersion() { + int SdkVersion() override { return musik::core::sdk::SdkVersion; } - virtual void SetPlaybackService(musik::core::sdk::IPlaybackService* playback) { + void SetPlaybackService(musik::core::sdk::IPlaybackService* playback) override { ::playback = playback; if (playback) { installHook(); @@ -201,28 +201,22 @@ class MMShellHook: } } - virtual void OnTrackChanged(musik::core::sdk::ITrack* track) { - + void OnTrackChanged(musik::core::sdk::ITrack* track) override { } - virtual void OnPlaybackStateChanged(musik::core::sdk::PlaybackState state) { - + void OnPlaybackStateChanged(musik::core::sdk::PlaybackState state) override { } - virtual void OnPlaybackTimeChanged(double time) { - + void OnPlaybackTimeChanged(double time) override { } - virtual void OnVolumeChanged(double volume) { - + void OnVolumeChanged(double volume) override { } - virtual void OnModeChanged(musik::core::sdk::RepeatMode repeatMode, bool shuffled) { - + void OnModeChanged(musik::core::sdk::RepeatMode repeatMode, bool shuffled) override { } - virtual void OnPlayQueueChanged() { - + void OnPlayQueueChanged() override { } };