From 335bc89c9788eae1ea9ce6c29e0d607f9ae8d344 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sat, 10 Mar 2018 00:09:55 +0100 Subject: [PATCH] Workaround for broken CD playback in Qt5 (#6021) * Workaround for cdda URL in qUrl() * Workaround for cdda URL in qUrl() * Fix code formatting * Fix code style --- src/devices/cddasongloader.cpp | 2 +- src/engines/gstenginepipeline.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/devices/cddasongloader.cpp b/src/devices/cddasongloader.cpp index 9a584b10b..9923e1636 100644 --- a/src/devices/cddasongloader.cpp +++ b/src/devices/cddasongloader.cpp @@ -35,7 +35,7 @@ CddaSongLoader::~CddaSongLoader() { QUrl CddaSongLoader::GetUrlFromTrack(int track_number) const { if (url_.isEmpty()) { - return QUrl(QString("cdda://%1").arg(track_number)); + return QUrl(QString("cdda://%1a").arg(track_number)); } else { return QUrl(QString("cdda://%1/%2").arg(url_.path()).arg(track_number)); } diff --git a/src/engines/gstenginepipeline.cpp b/src/engines/gstenginepipeline.cpp index bff43aeac..43f988fe5 100644 --- a/src/engines/gstenginepipeline.cpp +++ b/src/engines/gstenginepipeline.cpp @@ -181,9 +181,16 @@ bool GstEnginePipeline::ReplaceDecodeBin(const QUrl& url) { spotify_server, "StartPlayback", Qt::QueuedConnection, Q_ARG(QString, url.toString()), Q_ARG(quint16, port)); } else { + QByteArray uri; + if (url.scheme() == "cdda") { + QString str = url.toString(); + str.remove(str.lastIndexOf(QChar('a')), 1); + uri = str.toUtf8(); + } else { + uri = url.toEncoded(); + } new_bin = engine_->CreateElement("uridecodebin"); - g_object_set(G_OBJECT(new_bin), "uri", url.toEncoded().constData(), - nullptr); + g_object_set(G_OBJECT(new_bin), "uri", uri.constData(), nullptr); CHECKED_GCONNECT(G_OBJECT(new_bin), "drained", &SourceDrainedCallback, this); CHECKED_GCONNECT(G_OBJECT(new_bin), "pad-added", &NewPadCallback, this);