summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorMikko Hallamaa <mikko.hallamaa@qt.io>2024-03-18 18:28:19 +0100
committerMikko Hallamaa <mikko.hallamaa@qt.io>2024-03-20 17:22:04 +0100
commitf1720f9bc4b30416eda384b88adfa304ef2ae180 (patch)
tree3114c14b72ccc5f7acf1601b682804baef755884 /src/multimedia
parent6289bb03401224f3139d43add0cda166ba23e3eb (diff)
Use QBasicTimer in QPulseAudioSource
Replace QTimer with the more light-weight QBasicTimer in QPulseAudioSource. Pick-to: 6.7 6.6 6.5 Change-Id: I47a10c5cbed1a5fcd8c771b190faf3112ca0ad93 Reviewed-by: Artem Dyomin <artem.dyomin@qt.io> Reviewed-by: Jøger Hansegård <joger.hansegard@qt.io>
Diffstat (limited to 'src/multimedia')
-rw-r--r--src/multimedia/pulseaudio/qpulseaudiosource.cpp19
-rw-r--r--src/multimedia/pulseaudio/qpulseaudiosource_p.h5
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;