Hi PyToners! I just uploaded a pre-release for the next major PyTone version. It can be found under http://www.luga.de/pytone/download/PyTone-2.3.0-pre1.tar.gz Please test extensively as there are many, partially rather invasive, changes included in this release. In particular, a new database version requires an update. You, thus, should backup your song databases before running the new release for the first time and ensure that there is enough disk space for the upgrade. Included is a C version of the output buffer which needs the header files of the libao library for building. A detailed list of changes is attached. Enjoy, Jörg 2005-08-23 Jörg Lehmann <joerg@luga.de> * Add error reporting to bufferedao extension module. 2005-08-22 Jörg Lehmann <joerg@luga.de> * Disabled automatic closing of help window by default. * Added changeable play speed support (many thanks to Richard A. Smith <smithbone at gmail dot com> for providing the patch). 2005-08-21 Jörg Lehmann <joerg@luga.de> * Merged item-rework branch, which contains a new filter code. The new code makes the unfiltered case a special case of the filtered one. As a result, more than one filter can be applied, e.g., filtering for all songs in a certain genre of a given decade and with a given rating is now possible. Furthermore, every index now contains a (nearly) full directory hierarchy, thus allowing things like showing the top-played songs of a certain genre. 2005-08-19 Jörg Lehmann <joerg@luga.de> * Get rid of multi-file database layout: - convert old layout automatically - leave configuration file switches basename and dbfile intact but warn the user when they are non-empty - in a next step, we will set the default value of the basename switch to an empty value (when presumably all databases have been converted) - finally as a final step, we remove the switches and require that the users change their config files * Database version 5: do not longer index by years but by decades which removes many special code paths at various places in the db code. 2005-08-11 Jörg Lehmann <joerg@luga.de> * bufferedao.c: New C extension module corresponding to services/players/interal/buffereddevice with an ao device. The advantage of the C module is that it does not have to rely on holding the GIL when doing the output, which should help preventing sound dropouts. * services/players/internal.py: Make use of new extension module bufferedao. 2005-08-10 Jörg Lehmann <joerg@luga.de> * services/songdbs/internal.py: Checkpoint database regularly during registering of songs to prevent oversized transaction logs. * services/songdbs/internal.py: Replace quadratic in number of songs algorithm by a linear in time version to avoid huge system loads at the end of the song registering process. * services/players/internal.py: Do not open audiodevice without need. 2005-08-09 Jörg Lehmann <joerg@luga.de> * help.py, helpwin.py, statusbar.py: Introduced getkeyname function which has a fallback solution for unnamed keys (thanks to Troels Vognsen <bashfalcon at gmail dot com> for reporting this problem). 2005-08-03 Jörg Lehmann <joerg@luga.de> * Normalize all paths in config files. * Rework dbstats system. 2005-08-02 Jörg Lehmann <joerg@luga.de> * services/songdb.py. Measure cache size not by number of stored requests but by the number of objects the requests refer to. * services/songdb.py: rename resultcache -> requestcache. * conf/pytonerc, config.py, services/songdb.py: Add new section database with currently only one option requestcachesize, which allows one to configure the maximal number of objects contained in the cache. * item.py: Create genres/ratings/etc. instances only once to permit the caching of the requests involving them. * statswin.py, config.py, conf/pytonerc: New window for statistical information about databases and the request cache (accessible via "%"). * Various updates in German PyTone.po. 2005-07-16 Jörg Lehmann <joerg@luga.de> * plugin.py: Use thread-local channel in threadedplugin to make it actually a threaded plugin. * log.py: Add time and current thread to debugging output and prune common path from module name. 2005-07-16 Jörg Lehmann <joerg@luga.de> * filelist.py. Update window contents in filelistjumptosong(). * plugin.py. Daemonize threaded plugins, in order to prevent a blocking of misbehaved plugins on shutdown. * Initial checkin into Subversion repository. 2005-06-30 Jörg Lehmann <joerg@luga.de> * plugin.py: Use init() method instead of start(), which has a different meaning for threads. The plugins currently distributed with PyTone have been changed in this regard. * plugins/audioscrobbler/scrobbler.py: Fix typos in backlog code. 2005-06-28 Jörg Lehmann <joerg@luga.de> * config.py: Be more liberal concerning the accepted section names (patch by Dag Wieers <dag at wieers dot com>).