fix(SoundManager): use logarithmic sound volume scale

Needed for status-im/status-desktop#8426
This commit is contained in:
Lukáš Tinkl 2022-12-09 13:57:46 +01:00 committed by Michał
parent 555192427e
commit 68096fe9ab
2 changed files with 7 additions and 25 deletions

View File

@ -1,5 +1,4 @@
#ifndef STATUS_SOUND_MANAGER_H
#define STATUS_SOUND_MANAGER_H
#pragma once
#include <QObject>
#include <QMediaPlayer>
@ -10,30 +9,13 @@ namespace Status
class SoundManager : public QObject
{
Q_OBJECT
Q_DISABLE_COPY_MOVE(SoundManager)
public:
/*!
* Singleton instance.
*/
static SoundManager &instance();
/*!
* Delete copy constructor.
*/
SoundManager(const SoundManager &) = delete;
/*!
* Delete move constructor.
*/
SoundManager(SoundManager &&) = delete;
/*!
* Delete copy asignment operator.
*/
SoundManager &operator=(const SoundManager &) = delete;
/*!
* Delete move asignment operator.
*/
SoundManager &operator=(SoundManager &&) = delete;
/*!
* Plays a sound with soundUrl.
*
@ -60,5 +42,3 @@ namespace Status
std::unique_ptr<QMediaPlayer> m_player;
};
}
#endif

View File

@ -17,7 +17,7 @@ void SoundManager::playSound(const QUrl &soundUrl)
{
if (m_player->state() != QMediaPlayer::PlayingState)
{
if (m_player->currentMedia().canonicalUrl() != soundUrl)
if (m_player->currentMedia().request().url() != soundUrl)
{
m_player->setMedia(soundUrl);
}
@ -28,10 +28,12 @@ void SoundManager::playSound(const QUrl &soundUrl)
void SoundManager::setPlayerVolume(int volume)
{
m_player->setVolume(volume);
m_player->setVolume(QAudio::convertVolume(volume / qreal(100.0),
QAudio::LogarithmicVolumeScale,
QAudio::LinearVolumeScale) * 100);
}
void SoundManager::stopPlayer()
{
m_player->stop();
}
}