]> git.treefish.org Git - photosort.git/blobdiff - src/dirtrigger.py
print observer error
[photosort.git] / src / dirtrigger.py
index 67945debac96ab59950d5cb6512f4b1fa1291e7c..9bcad350c3fc506dca187be1c62ef62e7e352d44 100644 (file)
@@ -1,3 +1,4 @@
+import logging
 import threading
 import time
 from watchdog.events import DirDeletedEvent, FileDeletedEvent, FileSystemEventHandler
@@ -16,7 +17,10 @@ class DirTrigger(FileSystemEventHandler):
         self._observer.schedule(self, path=dir_path, recursive=True)
 
     def start(self):
-        self._observer.start()
+        try:
+            self._observer.start()
+        except Exception as e:
+            logging.warning("Error starting file observer for %s: %s", dir_path, str(e))
 
     def stop(self):
         self._observer.stop()
@@ -24,15 +28,20 @@ class DirTrigger(FileSystemEventHandler):
     def is_triggering(self):
         self._lock.acquire()
         try:
+            now = time.time()
             return ( self._got_event and
-                     (time.time() - self._last_event_time > self._cool_time) ) or \
-                     time.time() - self._last_reset_time > self._max_time
+                     (now - self._last_event_time > self._cool_time) ) or \
+                     now - self._last_reset_time > self._max_time
         finally:
             self._lock.release()
 
     def reset(self):
-        self._got_event = False
-        self._last_reset_time = time.time()
+        self._lock.acquire()
+        try:
+            self._got_event = False
+            self._last_reset_time = time.time()
+        finally:
+            self._lock.release()
 
     def on_any_event(self, event):
         if event.event_type == FileDeletedEvent or event.event_type == DirDeletedEvent: