diff options
Diffstat (limited to 'src/multimedia/pulseaudio')
-rw-r--r-- | src/multimedia/pulseaudio/qpulseaudiosource.cpp | 19 | ||||
-rw-r--r-- | src/multimedia/pulseaudio/qpulseaudiosource_p.h | 5 |
2 files changed, 16 insertions, 8 deletions
diff --git a/src/multimedia/pulseaudio/qpulseaudiosource.cpp b/src/multimedia/pulseaudio/qpulseaudiosource.cpp index 62fb5c17f..3c0640c06 100644 --- a/src/multimedia/pulseaudio/qpulseaudiosource.cpp +++ b/src/multimedia/pulseaudio/qpulseaudiosource.cpp @@ -106,14 +106,11 @@ QPulseAudioSource::QPulseAudioSource(const QByteArray &device, QObject *parent) , m_stream(nullptr) , m_device(device) { - m_timer = new QTimer(this); - connect(m_timer, SIGNAL(timeout()), SLOT(userFeed())); } QPulseAudioSource::~QPulseAudioSource() { close(); - delete m_timer; } void QPulseAudioSource::setError(QAudio::Error error) @@ -307,7 +304,7 @@ bool QPulseAudioSource::open() connect(pulseEngine, &QPulseAudioEngine::contextFailed, this, &QPulseAudioSource::onPulseContextFailed); m_opened = true; - m_timer->start(m_periodTime); + m_timer.start(m_periodTime, this); m_elapsedTimeOffset = 0; m_totalTimeValue = 0; @@ -320,7 +317,7 @@ void QPulseAudioSource::close() if (!m_opened) return; - m_timer->stop(); + m_timer.stop(); QPulseAudioEngine *pulseEngine = QPulseAudioEngine::instance(); @@ -482,7 +479,7 @@ void QPulseAudioSource::resume() pulseEngine->wait(operation.get()); } - m_timer->start(m_periodTime); + m_timer.start(m_periodTime, this); setState(QAudio::ActiveState); setError(QAudio::NoError); @@ -531,7 +528,7 @@ void QPulseAudioSource::suspend() setError(QAudio::NoError); setState(QAudio::SuspendedState); - m_timer->stop(); + m_timer.stop(); QPulseAudioEngine *pulseEngine = QPulseAudioEngine::instance(); @@ -542,6 +539,14 @@ void QPulseAudioSource::suspend() } } +void QPulseAudioSource::timerEvent(QTimerEvent *event) +{ + if (event->timerId() == m_timer.timerId()) + userFeed(); + + QPlatformAudioSource::timerEvent(event); +} + void QPulseAudioSource::userFeed() { if (m_deviceState == QAudio::StoppedState || m_deviceState == QAudio::SuspendedState) diff --git a/src/multimedia/pulseaudio/qpulseaudiosource_p.h b/src/multimedia/pulseaudio/qpulseaudiosource_p.h index 81f3936ae..5326e3889 100644 --- a/src/multimedia/pulseaudio/qpulseaudiosource_p.h +++ b/src/multimedia/pulseaudio/qpulseaudiosource_p.h @@ -67,6 +67,9 @@ public: QAudio::State m_deviceState; qreal m_volume; +protected: + void timerEvent(QTimerEvent *event) override; + private slots: void userFeed(); bool deviceReady(); @@ -88,7 +91,7 @@ private: int m_bufferSize; int m_periodSize; unsigned int m_periodTime; - QTimer *m_timer; + QBasicTimer m_timer; qint64 m_elapsedTimeOffset; pa_stream *m_stream; QByteArray m_streamName; |