SDL_Quit after GC shutdown?
Mike Parker
aldacron at gmail.com
Thu Dec 28 09:16:22 UTC 2017
On Thursday, 28 December 2017 at 06:34:00 UTC, Ivan Trombley
wrote:
> I believe that I should call SDL_Quit before my program
> terminates. However, some objects may be holding on to SDL
> resources and freeing these resources (particularly truetype
> resources) causes crashiness if SDL_Quit is called before. Is
> there a way to have SDL_Quit (and TTF_Quit) called after the GC
> has completed shutting down on program exit?
No. GC cleanup happens after static destructors are run.
>
> If not then it could make things very complex and messy to keep
> track of these resources.
You really, really, really shouldn't be depending on class
destructors to free resources like that. There is no guarantee a
class destructor will ever be called and they are
non-deterministic, so you can never ensure they will be called in
a non-problematic sequence.
There are a number of alternatives here. The one I recommend is
to use structs to wrap your SDL resources. It's what I settled on
long ago and works well for me. Yes, you will have to take a
couple of extra steps to cover all your bases if you don't want
to manually release things, but it's possible to keep it simple
and avoid messiness.
More information about the Digitalmars-d
mailing list