[quote] Is there any way that you could FORCE apps to fail that don’t call tick, so as to make it harder to forget?
[/quote]
Yes, we could have some flag which is set upon paint - and if it is still set on the next paint (or 5 paints) we could throw an exception.
[quote]The problem is that its just really bad practice to HAVE to do something all the time and then give you a function call to make sure its done.
[/quote]
Agreed. However you don’t HAVE to call it (at least in theory) - granted windowed mode would be completely f*cked.
In theory I dislike having to call a method, just because the subsystem requires it - but we all have to do that in some way with most api’s - take the win32 api, all apps have to have the following (in one way or another):
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
I don’t like that I need to do that - but such is life.
Since there are no methods that are guarenteed to be called at any time (except tick(), which we have defined as being a must call method), the only other way to implement it, is by spawning a thread to do this - which is just as evil.
So we’re left with the following solutions:
1 - mandetory tick() = allows the developer to control when the subsystem should be run.
2 - no tick - the developer does zilch, but has no control over when the subsystem is run.
Of the two, I think the former is the least evil.
That said, I am very open for suggestions…