Skip to content

Commit

Permalink
chore: unsingletonize SoundController (#5462)
Browse files Browse the repository at this point in the history
  • Loading branch information
pajlada authored Jun 16, 2024
1 parent 85d6ff1 commit f111b0f
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 24 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
5 changes: 3 additions & 2 deletions src/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -173,6 +173,7 @@ void Application::fakeDtor()
this->seventvEmotes.reset();
// this->twitch.reset();
this->fonts.reset();
this->sound.reset();
this->userData.reset();
}

Expand Down Expand Up @@ -435,7 +436,7 @@ ISoundController *Application::getSound()
{
assertInGuiThread();

return this->sound;
return this->sound.get();
}

ITwitchLiveController *Application::getTwitchLiveController()
Expand Down
2 changes: 1 addition & 1 deletion src/Application.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ class Application : public IApplication
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;
Expand Down
9 changes: 2 additions & 7 deletions src/controllers/sound/ISoundController.hpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
#pragma once

#include "common/Singleton.hpp"

#include <QUrl>

namespace chatterino {

class Settings;
class Paths;

enum class SoundBackend {
Miniaudio,
Null,
Expand All @@ -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;
Expand Down
18 changes: 6 additions & 12 deletions src/controllers/sound/MiniaudioBackend.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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{};
Expand Down Expand Up @@ -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
Expand Down
2 changes: 0 additions & 2 deletions src/controllers/sound/MiniaudioBackend.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ namespace chatterino {
**/
class MiniaudioBackend : public ISoundController
{
void initialize(Settings &settings, const Paths &paths) override;

public:
MiniaudioBackend();
~MiniaudioBackend() override;
Expand Down

0 comments on commit f111b0f

Please sign in to comment.