SDL1 und SDL_PollEvent

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

SDL1 und SDL_PollEvent

Beitrag von Mathias »

Wen ich folgend Code ausführe und die Maus klicke, wird etwas 20x "down" ausgegeben. Dies habe ich einem Tutorial in C++ abgeguckt.

Code: Alles auswählen

    repeat
      while SDL_PollEvent(@event) = 0 do begin
        case event.type_ of
          SDL_MOUSEBUTTONDOWN: begin
            WriteLn('down');
          end;
        end;
      end;
    until quit;
Erwünscht ist eigentlich, das "down" pro Klick nur einmal erscheint.
Dann habe ich versucht den Event-Typ auf 0 zu setzen. Und dies scheint auch zu funktionieren.

Code: Alles auswählen

    repeat
      while SDL_PollEvent(@event) = 0 do begin
        case event.type_ of
          SDL_MOUSEBUTTONDOWN: begin
            WriteLn('down');
          end;
          SDL_QUITEV: begin
            quit := True;
          end;
        end;
        event.type_ := 0; // Event auf "0"
      end;
    until quit;
Was mich dabei verwundert, das ich so eine oder ähnliche Lösung nicht mit Google finde.
Hat jemand eine Idee, das sich SDL_PoolEvent so merkwürdig verhaltet ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: SDL1 und SDL_PollEvent

Beitrag von Mathias »

Ich habe den Fehler gefunden. Es müsste so sein.

Code: Alles auswählen

      while SDL_PollEvent(@event) <> 0 do begin
Und so nebenbei hatte ich ein Durcheinander mit den C-Klammern.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten