Well, it looks like I ended up doing the opposite of what I had planned.
Most of my progress has actually been made in improving the implementation of the Global Main Menu. I have gotten rid of the Quit and RTL flags that were being used by the engines. This is better because previously the Quit flag had to be made public, and the GMM code needed to access these flags, which was not good.
Now the DefaultEventManager keeps track of whether to Quit or RTL, and the GMM can simply send QUIT and RTL events to the Event Manager. This elminates the need for engines to track EVENT_QUIT in most cases, and now we can use the Quit flag for ScummVM without the need for an engine to be running.
I have implemented an artificialEventQueue and a pushEvent() method which allows you to push “fake” events into the event queue. I am using it to create QUIT, RTL, and MAINMENU events. The artificialEventQueue can be useful for other tasks as well, Stephen Kennedy is using this feature for his Virtual Keyboard.
I did make some progress with configuring the sound settings from the Options dialog. It is now possible to adjust the volume for all of the engines through the Global Main Menu. However the implementation needs some improvement. In particular, I need to look into how the kPlainSoundType is being used by the engines.
The Mid-Term evaluation period is over now, and I feel like I have made some good progress so far. I also think that now is a good time for me to look at my project schedule and re-evaluate how to spend my time.
I would at least like to get configuring the sound settings through the GMM properly implemented for all of the engines. Hopefully that will all be done this week. Then I will move on to the savestate management features.