Threading improvements - yay! :)

git-svn-id: svn://svn.berlios.de/gpodder@68 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This commit is contained in:
Thomas Perl 2006-04-03 20:59:10 +00:00
parent 4a1afadeec
commit 74cc17ab9b
3 changed files with 11 additions and 13 deletions

View File

@ -4,6 +4,9 @@ Mon, 03 Apr 2006 21:40:39 +0200 <thp@perli.net>
in available list doesn't appear in "downloaded" list)
* Put contents of description into <![CDATA[ ... ]]> in case it
includes HTML (parser chokes on entities like &amp; and also &)
* Better threading, shouldn't fuck up GUI responsiveness after
download has finished (also gives us realtime "downloading"
status updates - yeah, I've now read the pygtk threading faq..)
Fri, 31 Mar 2006 18:13:16 +0200 <thp@perli.net>
* Major code clean-up in gpodder.py and other modules

View File

@ -820,7 +820,8 @@ class Gpodderepisode(SimpleGladeApp):
def main( __version__ = None):
global app_version
gtk.gdk.threads_init()
#gtk.gdk.threads_init()
gobject.threads_init()
bindtextdomain( app_name, locale_dir)
app_version = __version__
g_podder = Gpodder()

View File

@ -169,7 +169,7 @@ class downloadStatusManager( object):
iter = self.status_list[id]['iter']
if iter != None:
self.smlock.acquire()
self.tree_model.remove( iter)
gobject.idle_add( self.tree_model.remove, iter)
self.smlock.release()
self.status_list[id]['iter'] = None
self.status_list[id]['thread'].cancel()
@ -181,10 +181,10 @@ class downloadStatusManager( object):
iter = self.status_list[id]['iter']
if iter != None:
self.smlock.acquire()
self.tree_model.set( iter, 0, new_status['episode'])
self.tree_model.set( iter, 1, new_status['speed'])
self.tree_model.set( iter, 2, new_status['progress'])
self.tree_model.set( iter, 3, new_status['url'])
gobject.idle_add( self.tree_model.set, iter, 0, new_status['episode'])
gobject.idle_add( self.tree_model.set, iter, 1, new_status['speed'])
gobject.idle_add( self.tree_model.set, iter, 2, new_status['progress'])
gobject.idle_add( self.tree_model.set, iter, 3, new_status['url'])
self.smlock.release()
def is_download_in_progress( self, url):
@ -200,20 +200,14 @@ class downloadStatusManager( object):
self.status_list[element]['iter'] = None
self.status_list[element]['thread'].cancel()
# clear the tree model after cancelling
self.smlock.acquire()
self.tree_model.clear()
self.smlock.release()
gobject.idle_add( self.tree_model.clear)
def get_url_by_iter( self, iter):
self.smlock.acquire()
result = self.tree_model.get_value( iter, 3)
self.smlock.release()
return result
def get_title_by_iter( self, iter):
self.smlock.acquire()
result = self.tree_model.get_value( iter, 0)
self.smlock.release()
return result
def cancel_by_url( self, url):