[kupfer] data: Use Thread(target=) instead of RescanThread
- From: Ulrik Sverdrup <usverdrup src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [kupfer] data: Use Thread(target=) instead of RescanThread
- Date: Tue, 25 Aug 2009 13:21:08 +0000 (UTC)
commit 6151a6e104bc1d4e0d5afba2fc4d5ad03edd9070
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date: Mon Aug 24 15:42:11 2009 +0200
data: Use Thread(target=) instead of RescanThread
We do not need to subclass Thread to run threaded.
kupfer/data.py | 31 ++++++++++---------------------
1 files changed, 10 insertions(+), 21 deletions(-)
---
diff --git a/kupfer/data.py b/kupfer/data.py
index bf59557..ee171db 100644
--- a/kupfer/data.py
+++ b/kupfer/data.py
@@ -137,20 +137,6 @@ class Searcher (object):
match, match_iter = peekfirst(decorator(valid_check(unique_matches)))
return match, match_iter
-class RescanThread (threading.Thread, pretty.OutputMixin):
- def __init__(self, source, sender, signal, context=None, **kwargs):
- super(RescanThread, self).__init__(**kwargs)
- self.source = source
- self.sender = sender
- self.signal = signal
- self.context = context
-
- def run(self):
- self.output_debug(repr(self.source))
- items = self.source.get_leaves(force_update=True)
- if self.sender and self.signal:
- gobject.idle_add(self.sender.emit, self.signal, self.context)
-
class PeriodicRescanner (gobject.GObject, pretty.OutputMixin):
"""
Periodically rescan a @catalog of sources
@@ -188,7 +174,7 @@ class PeriodicRescanner (gobject.GObject, pretty.OutputMixin):
oldtime = self.latest_rescan_time.get(next, 0)
if (time.time() - oldtime) > self._min_rescan_interval:
self.timer.set(self.period, self._periodic_rescan_helper)
- self.reload_source(next)
+ self._start_source_rescan(next)
return
# No source to scan found
self.output_info("Campaign finished, pausing %d s" % self.campaign)
@@ -198,16 +184,19 @@ class PeriodicRescanner (gobject.GObject, pretty.OutputMixin):
"""Register an object for rescan
dynamic sources will only be rescanned if @force is True
"""
- self.reload_source(source, force)
+ self._start_source_rescan(source, force)
- def reload_source(self, source, force=False):
+ def _start_source_rescan(self, source, force=False):
self.latest_rescan_time[source] = time.time()
if force:
- source.get_leaves(force_update=True)
- self.emit("reloaded-source", source)
+ self.rescan_source(source)
elif not source.is_dynamic():
- rt = RescanThread(source, self, "reloaded-source", context=source)
- rt.start()
+ thread = threading.Thread(target=self.rescan_source, args=(source,))
+ thread.start()
+
+ def rescan_source(self, source):
+ items = source.get_leaves(force_update=True)
+ gobject.idle_add(self.emit, "reloaded-source", source)
gobject.signal_new("reloaded-source", PeriodicRescanner, gobject.SIGNAL_RUN_LAST,
gobject.TYPE_BOOLEAN, (gobject.TYPE_PYOBJECT,))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]