chore: unsingletonize SoundController (#5462)

This commit is contained in:
pajlada 2024-06-16 15:44:08 +02:00 committed by GitHub
parent 85d6ff1e6c
commit f111b0f08d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 13 additions and 24 deletions

View file

@ -21,6 +21,7 @@
- Bugfix: Fixed message history occasionally not loading after a sleep. (#5457)
- Dev: Update Windows build from Qt 6.5.0 to Qt 6.7.1. (#5420)
- Dev: Update vcpkg build Qt from 6.5.0 to 6.7.0, boost from 1.83.0 to 1.85.0, openssl from 3.1.3 to 3.3.0. (#5422)
- Dev: Unsingletonize `ISoundController`. (#5462)
- Dev: Use Qt's high DPI scaling. (#4868, #5400)
- Dev: Add doxygen build target. (#5377)
- Dev: Make printing of strings in tests easier. (#5379)

View file

@ -136,7 +136,7 @@ Application::Application(Settings &_settings, const Paths &paths,
, ffzBadges(&this->emplace<FfzBadges>())
, seventvBadges(&this->emplace<SeventvBadges>())
, userData(new UserDataController(paths))
, sound(&this->emplace<ISoundController>(makeSoundController(_settings)))
, sound(makeSoundController(_settings))
, twitchLiveController(&this->emplace<TwitchLiveController>())
, twitchPubSub(new PubSub(TWITCH_PUBSUB_URL))
, twitchBadges(new TwitchBadges)
@ -173,6 +173,7 @@ void Application::fakeDtor()
this->seventvEmotes.reset();
// this->twitch.reset();
this->fonts.reset();
this->sound.reset();
this->userData.reset();
}
@ -435,7 +436,7 @@ ISoundController *Application::getSound()
{
assertInGuiThread();
return this->sound;
return this->sound.get();
}
ITwitchLiveController *Application::getTwitchLiveController()

View file

@ -161,7 +161,7 @@ private:
FfzBadges *const ffzBadges{};
SeventvBadges *const seventvBadges{};
std::unique_ptr<UserDataController> userData;
ISoundController *const sound{};
std::unique_ptr<ISoundController> sound;
TwitchLiveController *const twitchLiveController{};
std::unique_ptr<PubSub> twitchPubSub;
std::unique_ptr<TwitchBadges> twitchBadges;

View file

@ -1,14 +1,9 @@
#pragma once
#include "common/Singleton.hpp"
#include <QUrl>
namespace chatterino {
class Settings;
class Paths;
enum class SoundBackend {
Miniaudio,
Null,
@ -17,11 +12,11 @@ enum class SoundBackend {
/**
* @brief Handles sound loading & playback
**/
class ISoundController : public Singleton
class ISoundController
{
public:
ISoundController() = default;
~ISoundController() override = default;
virtual ~ISoundController() = default;
ISoundController(const ISoundController &) = delete;
ISoundController(ISoundController &&) = delete;
ISoundController &operator=(const ISoundController &) = delete;

View file

@ -68,10 +68,13 @@ namespace chatterino {
// NUM_SOUNDS specifies how many simultaneous default ping sounds & decoders to create
constexpr const auto NUM_SOUNDS = 4;
void MiniaudioBackend::initialize(Settings &settings, const Paths &paths)
MiniaudioBackend::MiniaudioBackend()
: context(std::make_unique<ma_context>())
, engine(std::make_unique<ma_engine>())
, workGuard(boost::asio::make_work_guard(this->ioContext))
, sleepTimer(this->ioContext)
{
(void)(settings);
(void)(paths);
qCInfo(chatterinoSound) << "Initializing miniaudio sound backend";
boost::asio::post(this->ioContext, [this] {
ma_result result{};
@ -192,15 +195,6 @@ void MiniaudioBackend::initialize(Settings &settings, const Paths &paths)
});
}
MiniaudioBackend::MiniaudioBackend()
: context(std::make_unique<ma_context>())
, engine(std::make_unique<ma_engine>())
, workGuard(boost::asio::make_work_guard(this->ioContext))
, sleepTimer(this->ioContext)
{
qCInfo(chatterinoSound) << "Initializing miniaudio sound backend";
}
MiniaudioBackend::~MiniaudioBackend()
{
// NOTE: This destructor is never called because the `runGui` function calls _exit before that happens

View file

@ -25,8 +25,6 @@ namespace chatterino {
**/
class MiniaudioBackend : public ISoundController
{
void initialize(Settings &settings, const Paths &paths) override;
public:
MiniaudioBackend();
~MiniaudioBackend() override;