Skip to content

Commit

Permalink
Fix check for disconnected error
Browse files Browse the repository at this point in the history
  • Loading branch information
ilya-fedin authored and john-preston committed Apr 30, 2021
1 parent 0baa954 commit d018714
Showing 1 changed file with 26 additions and 6 deletions.
32 changes: 26 additions & 6 deletions base/platform/linux/base_last_input_linux.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,19 @@ std::optional<crl::time> FreedesktopDBusLastUserInputTime() {
}

try {
const auto connection = Gio::DBus::Connection::get_sync(
Gio::DBus::BusType::BUS_TYPE_SESSION);
const auto connection = [] {
try {
return Gio::DBus::Connection::get_sync(
Gio::DBus::BusType::BUS_TYPE_SESSION);
} catch (...) {
return Glib::RefPtr<Gio::DBus::Connection>();
}
}();

if (!connection) {
NotSupported = true;
return std::nullopt;
}

auto reply = connection->call_sync(
"/org/freedesktop/ScreenSaver",
Expand All @@ -86,7 +97,6 @@ std::optional<crl::time> FreedesktopDBusLastUserInputTime() {
return (crl::now() - static_cast<crl::time>(value));
} catch (const Glib::Error &e) {
static const auto NotSupportedErrors = {
"org.freedesktop.DBus.Error.Disconnected",
"org.freedesktop.DBus.Error.ServiceUnknown",
"org.freedesktop.DBus.Error.NotSupported",
};
Expand Down Expand Up @@ -123,8 +133,19 @@ std::optional<crl::time> MutterDBusLastUserInputTime() {
}

try {
const auto connection = Gio::DBus::Connection::get_sync(
Gio::DBus::BusType::BUS_TYPE_SESSION);
const auto connection = [] {
try {
return Gio::DBus::Connection::get_sync(
Gio::DBus::BusType::BUS_TYPE_SESSION);
} catch (...) {
return Glib::RefPtr<Gio::DBus::Connection>();
}
}();

if (!connection) {
NotSupported = true;
return std::nullopt;
}

auto reply = connection->call_sync(
"/org/gnome/Mutter/IdleMonitor/Core",
Expand All @@ -137,7 +158,6 @@ std::optional<crl::time> MutterDBusLastUserInputTime() {
return (crl::now() - static_cast<crl::time>(value));
} catch (const Glib::Error &e) {
static const auto NotSupportedErrors = {
"org.freedesktop.DBus.Error.Disconnected",
"org.freedesktop.DBus.Error.ServiceUnknown",
};

Expand Down

0 comments on commit d018714

Please sign in to comment.