diff -ur '--exclude=*~' '--exclude=*pycache*' gphotoframe-2.0.2-hg2084299dffb6/lib/dbus/idlecheck.py gphotoframe-2.0.2-hg2084299dffb6.new/lib/dbus/idlecheck.py
--- gphotoframe-2.0.2-hg2084299dffb6/lib/dbus/idlecheck.py 2019-08-21 01:34:09.000000000 +0900
+++ gphotoframe-2.0.2-hg2084299dffb6.new/lib/dbus/idlecheck.py 2021-03-16 12:39:35.187129612 +0900
@@ -1,6 +1,8 @@
import sys
+import re
from gi.repository import Gio
+from gi.repository import GLib
from ..utils.gnomescreensaver import is_screensaver_mode
@@ -9,6 +11,9 @@
def __init__(self):
self.is_screensaver = is_screensaver_mode()
+ self.is_service_active = True
+ self.service_known_times = 0
+ self.pattern_service_unknown = re.compile(r"org\.freedesktop\.DBus\.Error\.ServiceUnknown")
try:
bus = Gio.bus_get_sync(Gio.BusType.SESSION, None)
@@ -24,9 +29,17 @@
status = False
try:
- status = False if self.is_screensaver else self.proxy.GetActive()
+ status = False if self.is_screensaver else ( self.is_service_active and self.proxy.GetActive() )
except AttributeError:
pass
+ except GLib.Error:
+ errormsg = str(sys.exc_info()[1])
+ print ("Exception: %s" % errormsg)
+ if self.pattern_service_unknown.search(errormsg):
+ self.service_known_times += 1
+ if self.service_known_times >= 3:
+ print ("Disabling idle status polling.")
+ self.is_service_active = False
except:
print ("Exception: %s" % sys.exc_info()[1])