Frage zu SDL_AddTimer
-
Wenn ich in der Funtkion welche von meinem Timer ausgeführt wird mit einem exit(0) befehl beenden lasse, beendet das Programm mit einer Fehlermeldung. Diese lautet "Meldung: 'Systemfehler.Code: 5". Ich habe keine Möglichkeit gefunden wie ich einen exit befehl in einen SDL Timer einbauen kann ohne das eine Fehlermeldung beim beenden erscheint.
KAnn mir wer helfen?
-
vielleicht kannst du fuer deine hauptschleife die variable setzen dass das programm beendet werden soll beim naechsten durchlauf.
sorry, kenn mich mit sdl 0 aus

-
Nur eine Vermutung: vielleicht wird der Timer nicht im Hauptthread ausgefuehrt, aber exit() verlangt, dass es von dort ausgefuehrt wird? Andere Moeglichkeit: einige Funktionen ( - z. B. SQL_Quit() ) werden nicht aufgerufen, da du ja ohne Aufraeumarbeiten einfach das Programm verlaesst.
-
In C++ sollte man exit sowieso nicht verwenden.
Wenns ein Problem gibt: terminate(), wenns kein Problem gibt: main() verlassen (return).
-
Ich weiß jetzt nicht, ob ich das Problem richtig erfasst habe. Aber wenn ich hin und wieder mal zu SDL greife, verpacke ich Initialisierung, Ablauf und Abbau der Applikation in eine hübsche abstrakte Klasse, die ich dann entsprechend ableite.
Das ganze sieht dann ungefähr so aus:
class Application { private: bool running; public: Application(); // <-- Initialisierung von SDL etc. virtual ~Application(); // <-- DeInit von SDL virtual void onInit() = 0; // <-- um eigene Initialisierungen vorzunehmen virtual void onEvent(SDL_Event& event) = 0; // <-- Für die Event-Behandlung virtual void onUpdate() = 0; // <-- um allgemein Objekte "upzudaten" virtual void onExit() = 0; // <-- für eigene Aufräumarbeiten void mainloop(); // <-- Eventbehandlung, updates, etc. // Hier werden alle abstrakten Methoden entsprechend aufgerufen. inline void stop() { running = false; } // stop kann nun einfach innherhalb des Programms aufgerufen werden. // Die Ereignisse werden noch einmal abgehandelt und die Objekte noch // einmal auf den neusten Stand gebracht, bevor aufgeräumt wird. };Den Rest kann man sich sicher denken.
Grüße aus dem Sauerland...
Heiko