summary refs log tree commit diff
path: root/src/ui/MxcMediaProxy.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2024-01-08 01:23:55 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2024-01-08 01:23:55 +0100
commiteed23cdf1102a8099bd7f47bfe3fb44e19148a08 (patch)
tree1b7f6d43daee97d0a3871aa9062432946335b30e /src/ui/MxcMediaProxy.cpp
parentSpeedup room switching by forcing a bigger initial item size (diff)
downloadnheko-eed23cdf1102a8099bd7f47bfe3fb44e19148a08.tar.xz
Fix lag when media messages are shown and fix media controls
Diffstat (limited to 'src/ui/MxcMediaProxy.cpp')
-rw-r--r--src/ui/MxcMediaProxy.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/ui/MxcMediaProxy.cpp b/src/ui/MxcMediaProxy.cpp

index 5fae0654..3d486f6a 100644 --- a/src/ui/MxcMediaProxy.cpp +++ b/src/ui/MxcMediaProxy.cpp
@@ -23,8 +23,6 @@ MxcMediaProxy::MxcMediaProxy(QObject *parent) : QMediaPlayer(parent) { - connect(this, &MxcMediaProxy::eventIdChanged, &MxcMediaProxy::startDownload); - connect(this, &MxcMediaProxy::roomChanged, &MxcMediaProxy::startDownload); connect( this, &QMediaPlayer::errorOccurred, this, [](QMediaPlayer::Error error, QString errorString) { nhlog::ui()->debug("Media player error {} and errorStr {}", @@ -36,6 +34,17 @@ MxcMediaProxy::MxcMediaProxy(QObject *parent) static_cast<int>(status), static_cast<int>(this->error())); }); + connect(this, &MxcMediaProxy::playbackStateChanged, [this](QMediaPlayer::PlaybackState status) { + // We only set the output when starting the playback because otherwise the audio device + // lookup takes about 500ms, which causes a lot of stutter... + if (status == QMediaPlayer::PlayingState && !audioOutput()) { + nhlog::ui()->debug("Set audio output"); + auto newOut = new QAudioOutput(this); + newOut->setMuted(muted_); + newOut->setVolume(volume_); + setAudioOutput(newOut); + } + }); connect(this, &MxcMediaProxy::metaDataChanged, [this]() { emit orientationChanged(); }); connect(ChatPage::instance()->timelineManager()->rooms(), @@ -55,7 +64,7 @@ MxcMediaProxy::orientation() const } void -MxcMediaProxy::startDownload() +MxcMediaProxy::startDownload(bool onlyCached) { if (!room_) return; @@ -126,6 +135,9 @@ MxcMediaProxy::startDownload() } } + if (onlyCached) + return; + http::client()->download(url, [filename, url, processBuffer](const std::string &data, const std::string &,