I have now moved a lot of the core code into what I call "managers". There's the MediaManager which takes care of playback, the PlaylistManager which is pretty self-explanatory, along with the FilesystemManager which takes care of finding the tracks and keeping sync with the filesystem, the UpgradeManager which talks to the upgrade server and installs all the new files, and finally the SettingsManager which remembers settings and initializes stuff upon first run.
This makes the code much easier to work with. Having everything separated instead of everything all over the place. But the benefit is not only for me as a code. There's also some nice results here for the users as well. Thanks to this I managed (no pun intended) to optimize the code a bit. Most of the startup time of Yama is spent on 1) initialize the GUI and 2) scan the filesystem for any changes since the last run. I cannot do much about Windows initializing the GUI but I did bring the FilesystemManager up to some speed.
I will do some testing on my other machine which is a bit slower but on my desktop which is equipped with a 64bit Core 2 Duo I have measured a 25% improvement in startup speed. Tomorrow I will be back with a nice graph and some nice numbers to show the improvement on both machines.
The goal is to keep Yama fast and light, so I try to always find ways to improve the startup time and overall responsiveness of the GUI.
Have a nice weekend!