fix invalid mpris parser

In some cases it causes the error like:

Error message "Интерфейс «(null)» для пути /org/mpris/MediaPlayer2 объекта не найден"

(for example deadbeef was affected). Suggested patch should fix this
issue and seems to be working with at least deadbeef and qmmp mpris
engines.
This commit is contained in:
Evgenii Alekseev 2017-05-17 17:43:18 +03:00
parent 0a723aef82
commit acc4df92bc

View File

@ -73,8 +73,10 @@ QString PlayerSource::getAutoMpris() const
{ {
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call( QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(
QDBus::BlockWithGui, "ListNames"); QDBus::BlockWithGui, "ListNames");
if (listServices.arguments().isEmpty()) if (listServices.arguments().isEmpty()) {
qCWarning(LOG_ESS) << "Could not find any DBus service";
return ""; return "";
}
QStringList arguments = listServices.arguments().first().toStringList(); QStringList arguments = listServices.arguments().first().toStringList();
for (auto &arg : arguments) { for (auto &arg : arguments) {
@ -353,7 +355,7 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString &_mpris) const
= QVariantList({"org.mpris.MediaPlayer2.Player", "Metadata"}); = QVariantList({"org.mpris.MediaPlayer2.Player", "Metadata"});
QDBusMessage request = QDBusMessage::createMethodCall( QDBusMessage request = QDBusMessage::createMethodCall(
QString("org.mpris.MediaPlayer2.%1").arg(_mpris), QString("org.mpris.MediaPlayer2.%1").arg(_mpris),
"/org/mpris/MediaPlayer2", "", "Get"); "/org/mpris/MediaPlayer2", "org.freedesktop.DBus.Properties", "Get");
request.setArguments(args); request.setArguments(args);
QDBusMessage response QDBusMessage response
= bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT); = bus.call(request, QDBus::BlockWithGui, REQUEST_TIMEOUT);