mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-08-03 20:04:20 -04:00
fixed sound on linux using phonon. This should be extensible to all unix systems
This commit is contained in:
parent
fc3606c18e
commit
e25787bcd5
3 changed files with 32 additions and 4 deletions
|
@ -37,6 +37,14 @@
|
|||
#define GROUP_ENABLE "Enable"
|
||||
#define GROUP_SOUNDFILE "SoundFilePath"
|
||||
|
||||
#ifdef UBUNTU
|
||||
#include <phonon/audiooutput.h>
|
||||
#include <phonon/mediaobject.h>
|
||||
#include <phonon/mediasource.h>
|
||||
|
||||
Phonon::MediaObject *SoundManager::mediaObject = NULL ;
|
||||
#endif
|
||||
|
||||
SoundManager *soundManager = NULL;
|
||||
|
||||
SoundEvents::SoundEvents()
|
||||
|
@ -234,12 +242,24 @@ void SoundManager::playFile(const QString &filename)
|
|||
}
|
||||
|
||||
QString playFilename = realFilename(filename);
|
||||
|
||||
#ifdef UBUNTU
|
||||
// The media object is only deleted before being used, so as to avoid a memory leak. We cannot delete it after calling play() because the
|
||||
// playing is asynchronous. The way to do this properly would be to connect the finish() signal of the player to some slot that delete it,
|
||||
// assuming it's not done in a static method like now.
|
||||
|
||||
if(mediaObject != NULL)
|
||||
delete mediaObject ;
|
||||
|
||||
mediaObject = Phonon::createPlayer(Phonon::NotificationCategory, Phonon::MediaSource(QUrl::fromLocalFile(filename)));
|
||||
mediaObject->play();
|
||||
#else
|
||||
|
||||
#if QT_VERSION >= QT_VERSION_CHECK (5, 0, 0)
|
||||
if (!QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).isEmpty()) {
|
||||
if (!QAudioDeviceInfo::availableDevices(QAudio::AudioOutput).isEmpty())
|
||||
#else
|
||||
if (QSound::isAvailable()) {
|
||||
if (QSound::isAvailable())
|
||||
#endif
|
||||
QSound::play(playFilename);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue