Hi, On 13.05.05, Dag Wieers wrote:
Another set of comments:
+ The interface feels a bit sluggish and I think that is because if you 'tab' between the 2 windows there is a visible refresh. I've been looking to get rid of it one way or the other but I struggle with ncurses.
Hmm, logging the calls of the doupdate function of the curses library shows only on call after pressing the TAB key.
+ One of my databases is /media/cdrom, even though pytone doesn't really take care of removable media, it works well. The only problem is that when it jumps to a new song and the new song happens to be on CD/DVD, the cross-fading stops (and the playback stops) until the CD/DVD has spun up. Usually a 1 or 2 second freeze :(
Except from raising the buffer sizes of the output buffer, I don't see how to avoid this with the current player code. The reason for that is, that the player itself is not threaded (except for the audiodevice buffering), so when opening a new file for crossfading, a freeze can happen.
+ It would be nice if there was a global search facility. Something that is not context sensitive (like the 'j' option in xmms). A popup with all the results as you type.
Yes, I also had this idea. But I wouldn't use a popup, but just show the results in the database window.
+ Regarding the open()/close() versus seek()/truncate(), strace clearly shows that open()/close() costs more than seek()/truncate() (I'm not sure if the results is system dependent). But the win is just a small part of the overall of pytone.
+ It would be nice if someone more experienced with 'strace -f -c -p <pid of pytone>' during playback can comment on the immense ammount of futex time spend. I see 11 threads by default for 1 playback, most of the threads spend time in futex. I wonder why there need to be 11 threads ?
Yes, there are many threads running: player(s), audiodevice buffer, database(s), database manager, playlist service, timer service, network service and of course the main UI thread. So at least you have 8 threads running... So PyTone is quite heavily threaded. Jörg