PARTIAL:0/Accelerator is basically equivalent to STANDARD, just slower, so if you had luck with that you should just use STANDARD.
And the threading works quite differently today. Unless something is broken (which may well be the case; Toady basically went at it with an axe to make it work, and I haven't had time to fix it properly yet), the renderer thread controls the simulation thread, not the other way around.
Basically, it works like this. Renderer thread is -, simulation is *:
- Signal the simulation thread to build the UI.
* Finish the current simulation frame, then look at the messagebox. Build UI. Signal renderer thread.
- Wait for the signal, grab the built UI, convert indexed colors to RGB (..and some of toady's other code converts RGB to indexed, earlier...), print the result to screen.
- Check how long it's been since the last time we got to this point, calculate how many frames the simulation thread should have done since that time (floating-point), then signal it with a message telling it that number.
- Sleep until the next frame should be drawn.
- Check for keyboard input.
- Loop to start.
While this is going on, the simulation thread runs frames as quickly as possible, but maintains a count of how many frames it's
supposed to have done, and pauses if that hits zero. It's allowed to fall one second behind, giving it a sufficient buffer without letting it overrun the FPS limit for longer than one second at a time. Works well, overall.
Oh, and the newest code is up on
http://github.com/Baughn/Dwarf-Fortress--libgraphics-/ if you want a look. Doesn't actually compile at the moment, though. (The code in question is in enabler.cpp, look for async_loop)