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
This commit is contained in:
Jonas Kvinge 2018-03-10 00:09:55 +01:00 committed by John Maguire
parent 5966ff51cc
commit 335bc89c97
2 changed files with 10 additions and 3 deletions

View File

@ -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));
}

View File

@ -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);