Haxk20
Haxk20

Reputation: 77

SDL and C keyboard or touch event

I'm programming in c4droid but I can't get the touch event to work. Tried switch or if statement but nothing works im sure rendering is ok because if I delete the switch then its renders normally

Here I the code:

#include <SDL2/SDL.h>

int main()
{
    SDL_Window *window = NULL;
    window = SDL_CreateWindow("Shooter", SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);

    // Setup renderer
    SDL_Renderer *renderer = NULL;
    renderer = SDL_CreateRenderer(window, 0, SDL_RENDERER_ACCELERATED);

    // Set render color to red ( background will be rendered in this color )
    SDL_SetRenderDrawColor(renderer, 0, 255, 25, 255);

    // Clear winow
    SDL_RenderClear(renderer);

    // Creat a rect at pos ( 50, 50 ) that's 50 pixels wide and 50 pixels
    // high.
    SDL_SetRenderDrawColor(renderer, 255, 0, 255, 255);
    SDL_Rect r;
    r.x = 500;
    r.y = 500;
    r.w = 50;
    r.h = 50;
    SDL_Rect e;
    e.x = 5;
    e.y = 5;
    e.w = 50;
    e.h = 50;
    SDL_Event event;

    while(SDL_PollEvent(&event) != 0) {
        switch (event.type) { 
        case SDL_FINGERDOWN : 
            e.x = e.x + 10;
            SDL_RenderFillRect(renderer, &r);    
            SDL_RenderFillRect(renderer, &e); 
            SDL_RenderPresent(renderer); 
            break; 
        } 
    }
    // Wait for 5 sec
    SDL_Delay(50000);

    SDL_DestroyWindow(window);
    SDL_Quit();
}

Upvotes: 0

Views: 564

Answers (1)

Cat
Cat

Reputation: 50

You need to make sure to poll the event.

while(true) {
    while(SDL_PollEvent(&event) != 0) {
        switch (event.type) {

        case SDL_FINGERDOWN :
            e.x = e.x + 10;
            SDL_RenderFillRect(renderer, &r);
            SDL_RenderFillRect(renderer, &e);
            SDL_RenderPresent(renderer);

            break;
        // Render rect
        }
    }
}

Provided event is not NULL, SDL_PollEvent will take the next event from the queue and store it in the SDL_Event that event is pointing at.

Edit: Don't remove the while(true) loop, put this one inside it. Sorry, I probably should have been a bit more clear in the beginning.

Upvotes: 1

Related Questions