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