On Mon, May 14, 2007 at 08:39:19AM +1000, James Doc Livingston wrote: > > Second one is in rhythmdb/rhythmdb.c in the rhythmdb_idle_poll_events, > > line 2003. When idle it runs the else branch every second. Not sure > > what it does every second but being the DB it may not be fixable. > > This is the hard one. While it is certainly fixable, it's somewhat > complicated to do so. It's been a while since I looked at it, so I might > not be remembering exactly, but basically what happens is:
For anyone interested in this, but who wasn't watching the bug we're using to track this work: we've replaced the rhythmdb event queue polling with a mainloop source that dispatches the queued events, and we wake up the main loop when pushing an event onto the queue. Since rhythmdb events aren't all that common, this means rhythmbox is now completely idle for seconds at a time while nothing is happening. The next step is to look at some of the longer timeouts (audioscrobbler, playlist saving, database saving, etc.), eliminating them when they're unnecessary and using glib's new g_timeout_add_seconds to make as many of them fire at the same time as possible. _______________________________________________ rhythmbox-devel mailing list rhythmbox-devel@gnome.org http://mail.gnome.org/mailman/listinfo/rhythmbox-devel