
File previews came together rapidly, after the initial refactoring. The mane unknown is how well PlaybackEngine::interrupt_playback is going to work when it's asynchronously receiving start commands. Interrupt_playback is normally called with the window unlocked so it can wait for the tracker to finish drawing. The problem is it's now going to get start commands when the window is unlocked. It normally works around this by locking FilePreviewer::previewer_lock. This causes a deadlock when interrupting playback so instead, it's locking the window. The file previewer has to call it with the window locked & the previewer_lock unlocked. It seems to work as long as the tracker has an is_playing variable. Instead of waiting for the tracker to finish drawing, the previewer can set is_playing to make the tracker ignore further draw commands. Lions are pondering making this the universal way of interrupting playback. The key requirement i...