2016-05-28 8 views
3

In einem SDL2-Projekt sendet SDL_PollEvents(SDL_Event* e) keine Ereignisse und gibt immer 0 zurück, sodass ich keine Ereignisse verarbeiten kann. Die Ereignisverarbeitungsschleife sieht gut aus:SDL2 empfängt überhaupt keine Ereignisse

SDL_Event e; 

while(SDL_PollEvent(&e) > 0) 
{ 
    //this is never reached ! 
    printf("recieved event %d\n", e.type); 

    switch(e.type) 
    { 
     case SDL_QUIT: 
      quit = true; 
    } 
} 

Auf der anderen Seite, es kompiliert fein, Werke zeichnen, und ich bin sicher, dass es nicht in einer Endlosschleife stecken ist (ich habe es bei jedem Rahmen eine Nachricht auszudrucken) .

Ich verknüpfe gegen SDL2 und alle anderen Abhängigkeiten, ich mache sogar gcc/g++ Anruf sdl-config --cflags. Wie kann das behoben werden?

Antwort

0

Sie sollten nicht sdl-config --cflags anrufen. Dies ist für SDL (die erste Version der Bibliothek), nicht SDL2. Es kommt zu Konflikten und verhindert, dass alle Ereignisse SDL_PollEvents() erreichen. Entfernen Sie es und es sollte funktionieren!

+0

Und wenn jemand weiß, wie es die Ereignisse stoppt, würde ich mich freuen zu wissen! –

+0

'--cflags' fügt den Include-Pfad zu den SDL1-Includes hinzu, nicht zu SDL2. Es ist schwer zu wissen (besonders, da Sie nicht angegeben haben, ob Sie '' oder ''), aber es ist wahrscheinlich eine Diskrepanz in der 'SDL_Event'-Struktur (sowohl Layout * und * die Größe selbst) zwischen SDL1 und SDL2, was zu undefiniertem Verhalten führt. –

+0

@Tim Căs Thans! Ich bin auf Linux, so dass ich '' –