Fehler bei Ausführung der Callbackfunktion (SDL)
-
Moin Leute, hab mal wieder ein Problem mit der SDL .
Ich hab mich jetzt mal von der Theorie richtig an die Praxis getraut und wollte jetzt einfach mal ein rechteckiges weißes Kästchen auf einem Screen ereugen. Wenn alles funktioniert will ich das ganze dann mit Klassen erweitern, für den Beginn reicht mir allerdings eine main.cpp aus.
Nun habe ich meine Callbackfunktion ProcessEvents() geschrieben, welcher ein Pointer auf die SDL_Surface des Screen und die des Kästchens übergeben wird, damit innerhalb der Funktion SDL_BlitSurface() und SDL_Flip() ausgeführt werden können. Wenn ich das Programm dann schlussendlich ausführe, taucht ein Problem auf: Die Schleife wird nur zwei bis dreimal aufgerufen, dann wird das Programm normal beendet. Die while-Schleife läuft solange ab, wie SDL_PollEvent() true zurückgibt - könnte darin das Problem liegen?
Hier der Code von ProcessEvents():
// main.cpp - Callbackfunktion void ProcessEvents(SDL_Surface *screen, SDL_Surface *pic) { SDL_Event Event; while( SDL_PollEvent(&Event) ) { switch(Event.type) { case SDL_QUIT: Quit(); // Quit() ruft SDL_Quit() auf und beendet das Programm break; case SDL_KEYDOWN: { switch(Event.key.keysym.sym) { case SDLK_ESCAPE: Quit(); break; } } break; } SDL_BlitSurface(pic, NULL, screen, NULL); SDL_Flip(screen); } }
-
Okay, ich bin jetzt nach langem Überlegen und nochmaligem durchgehen der Header auf die Ursache gestoßen (man bin ich ein Dussel -.-)
Ich hatte nicht beachtet, dass es ja eintreten kann, dass keine Events geschehen sind - dann wird von SDL_PollEvent() ja 0 zurückgegeben, das Prog wird beendet. Hab jetzt einfach die while-Schleife so abgeändert, dass in einer Variablen gespeichert wird, ob das Prog noch läuft, oder nicht. Mich hat dieses blöde Beispiel in der SDL-Dokumentation ganz einfach verwirrt. -.-