Mercurial > sdl-ios-xcode
view test/testwm2.c @ 3238:96492d29034a
David Carre to Sam
When i call the "SDL_Quit()" function, it call the func "SDL_QuitSubSystem(SDL_INIT_EVERYTHING)", which call the "SDL_VideoQuit()" function.
It's where i'm lost, this function "SDL_VideoQuit()" will recall the "SDL_Quit()" function (i don't find where it is called), which in turn recall the "SDL_QuitSubSystem(SDL_INIT_EVERYTHING)", which in turn recall "SDL_VideoQuit()", which cause a "double free" seg fault since it has been already called.
I have set the num_displays to 0 instead of 1, so it wont free it twice in the videoquit function loop.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Tue, 18 Aug 2009 03:26:53 +0000 |
parents | 8055185ae4ed |
children | 9de326b3099c |
line wrap: on
line source
#include <stdlib.h> #include <stdio.h> #include "common.h" static CommonState *state; /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ static void quit(int rc) { CommonQuit(state); exit(rc); } int main(int argc, char *argv[]) { int i, done; SDL_Event event; /* Initialize test framework */ state = CommonCreateState(argv, SDL_INIT_VIDEO); if (!state) { return 1; } state->skip_renderer = SDL_TRUE; for (i = 1; i < argc;) { int consumed; consumed = CommonArg(state, i); if (consumed == 0) { consumed = -1; } if (consumed < 0) { fprintf(stderr, "Usage: %s %s\n", argv[0], CommonUsage(state)); quit(1); } i += consumed; } if (!CommonInit(state)) { quit(2); } /* Main render loop */ done = 0; while (!done) { /* Check for events */ while (SDL_PollEvent(&event)) { CommonEvent(state, &event, &done); } } quit(0); } /* vi: set ts=4 sw=4 expandtab: */