Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

10.11.2020, 14:06

SDL bearbeitet eventloop erst nach SDL_QUIT

hi,
Sdl legt bei mir komisches verhalten an den Tag, zumindestens glaub ich mitlerweile nicht mehr dass es an mir liegt.
Sobald ich auch nur eine Kleinigkeit an meinem Eventloop ändere wird so lange nichts abgearbeitet bis ein SDL_QUIT über das fenster x zustande kommt.
Nachdem SDL_QUIT zustande kommt werden alle printf("PRESSED!"); auf einmal ausgeführt welche durch SDL_KEYDOWN ausgelöst wurden.
Ich habe den Code auf das nötigste runter gebroche und ich Krieg immernoch den selben fehler.
Würde mich freuen wenn mir jemamnd weiter helfen könnte, langsam wirds lächerlich und google spuckt auch nichts mehr aus :dash:

Grüße jonas


C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
int main(int argc, char* args[])
{
SDL_Event e;
bool quit = false;

    if(init())
    {

        while(!quit)
        {
            while( SDL_PollEvent( &e ) )
            {

                if(e.type==SDL_KEYDOWN)
                {
                printf("PRESSED!");
                }   

                else if(e.type==SDL_QUIT)
                {
                printf("clicked X\n");  
                quit=true;
                }

            }
        }

        
    }
    close();
    return 0;
}

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

2

11.11.2020, 08:14

Könnte schlicht ein Buffering der Konsole sein. Pack mal ein \n ans Ende von PRESSED!, dann gibt's sofort ne Meldung.

Randnotiz: lerne Debuggen. Falls wir hier von Visual Studio reden: setze einen Breakpoint auf das PRESSED mit F9, starte das Programm mit F5, und er müsste anhalten, sobald Du eine Taste im Spiel drückst.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.