mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-07-13 13:55:50 +00:00
add one more workaround for possible freezes (#96)
First of all it seems that freezes were caused by stuck dbus calls. I've enabled dbus call timeout (build-configured, default to 3000 msec). And moreover I've added one more thread lock for dbus calls.
This commit is contained in:
@ -164,8 +164,12 @@ void PlayerSource::run()
|
||||
m_values = getPlayerMpdInfo(m_mpdAddress);
|
||||
} else if (m_player == QString("mpris")) {
|
||||
// players which supports mpris
|
||||
QString mpris = m_mpris == QString("auto") ? getAutoMpris() : m_mpris;
|
||||
m_values = getPlayerMprisInfo(mpris);
|
||||
if (m_dbusMutex.tryLock()) {
|
||||
QString mpris
|
||||
= m_mpris == QString("auto") ? getAutoMpris() : m_mpris;
|
||||
m_values = getPlayerMprisInfo(mpris);
|
||||
m_dbusMutex.unlock();
|
||||
}
|
||||
}
|
||||
|
||||
// dymanic properties
|
||||
@ -258,7 +262,7 @@ QVariantHash PlayerSource::defaultInfo() const
|
||||
QString PlayerSource::getAutoMpris() const
|
||||
{
|
||||
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(
|
||||
QDBus::BlockWithGui, QString("ListNames"));
|
||||
QDBus::BlockWithGui, QString("ListNames"), DBUS_CALL_TIMEOUT);
|
||||
if (listServices.arguments().isEmpty())
|
||||
return QString();
|
||||
QStringList arguments = listServices.arguments().first().toStringList();
|
||||
@ -315,7 +319,8 @@ QVariantHash PlayerSource::getPlayerMprisInfo(const QString mpris) const
|
||||
QString("org.mpris.MediaPlayer2.%1").arg(mpris),
|
||||
QString("/org/mpris/MediaPlayer2"), QString(""), QString("Get"));
|
||||
request.setArguments(args);
|
||||
QDBusMessage response = bus.call(request, QDBus::BlockWithGui);
|
||||
QDBusMessage response
|
||||
= bus.call(request, QDBus::BlockWithGui, DBUS_CALL_TIMEOUT);
|
||||
if ((response.type() != QDBusMessage::ReplyMessage)
|
||||
|| (response.arguments().isEmpty())) {
|
||||
qCWarning(LOG_ESS) << "Error message" << response.errorMessage();
|
||||
|
Reference in New Issue
Block a user