diff --git a/cockatrice/CMakeLists.txt b/cockatrice/CMakeLists.txt index c88aca46b..efdfdffb3 100644 --- a/cockatrice/CMakeLists.txt +++ b/cockatrice/CMakeLists.txt @@ -292,7 +292,7 @@ if(APPLE) set(plugin_dest_dir cockatrice.app/Contents/Plugins) set(qtconf_dest_dir cockatrice.app/Contents/Resources) - # Qt plugins: audio (Qt5), iconengines, imageformats, platforms, printsupport (Qt5), styles, tls (Qt6) + # Qt plugins: audio (Qt5), iconengines, imageformats, multimedia (Qt6), platforms, printsupport (Qt5), styles, tls (Qt6) install( DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} @@ -303,6 +303,7 @@ if(APPLE) PATTERN "audio/*.dylib" PATTERN "iconengines/*.dylib" PATTERN "imageformats/*.dylib" + PATTERN "multimedia/*.dylib" PATTERN "platforms/*.dylib" PATTERN "printsupport/*.dylib" PATTERN "styles/*.dylib" @@ -343,7 +344,7 @@ if(WIN32) PATTERN "*.dll" ) - # Qt plugins: audio (Qt5), iconengines, imageformats, platforms, printsupport (Qt5), styles, tls (Qt6) + # Qt plugins: audio (Qt5), iconengines, imageformats, multimedia (Qt6) platforms, printsupport (Qt5), styles, tls (Qt6) install( DIRECTORY "${QT_PLUGINS_DIR}/" DESTINATION ${plugin_dest_dir} @@ -355,6 +356,7 @@ if(WIN32) PATTERN "imageformats/*.dll" PATTERN "mediaservice/dsengine.dll" PATTERN "mediaservice/wmfengine.dll" + PATTERN "multimedia/*.dll" PATTERN "platforms/qdirect2d.dll" PATTERN "platforms/qminimal.dll" PATTERN "platforms/qoffscreen.dll" diff --git a/cockatrice/src/client/sound_engine.cpp b/cockatrice/src/client/sound_engine.cpp index 5ffb39817..849088704 100644 --- a/cockatrice/src/client/sound_engine.cpp +++ b/cockatrice/src/client/sound_engine.cpp @@ -28,6 +28,10 @@ SoundEngine::~SoundEngine() player->deleteLater(); player = nullptr; } + if (audioOutput) { + audioOutput->deleteLater(); + audioOutput = nullptr; + } } void SoundEngine::soundEnabledChanged() @@ -37,8 +41,8 @@ void SoundEngine::soundEnabledChanged() if (!player) { player = new QMediaPlayer; #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) - auto qAudioOutput = new QAudioOutput; - player->setAudioOutput(qAudioOutput); + audioOutput = new QAudioOutput(player); + player->setAudioOutput(audioOutput); #endif } } else { @@ -48,6 +52,10 @@ void SoundEngine::soundEnabledChanged() player->deleteLater(); player = nullptr; } + if (audioOutput) { + audioOutput->deleteLater(); + audioOutput = nullptr; + } } } diff --git a/cockatrice/src/client/sound_engine.h b/cockatrice/src/client/sound_engine.h index 11304874a..7d99c00f4 100644 --- a/cockatrice/src/client/sound_engine.h +++ b/cockatrice/src/client/sound_engine.h @@ -1,12 +1,12 @@ #ifndef SOUNDENGINE_H #define SOUNDENGINE_H +#include #include #include #include #include -class QAudioOutput; class QBuffer; typedef QMap QStringMap; @@ -23,6 +23,7 @@ public: private: QStringMap availableThemes; QMap audioData; + QAudioOutput *audioOutput; QMediaPlayer *player; protected: