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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
/* Cette fonction ne devrait pas etre utilise pour faire des choses complexes,
* elle est la pour juste decider si oui ou non on fait passer le message a la boucle evenementielle...
*
* Faire un exit ici ne me semble pas forcement une bonne idee, c'est un peu trop bourrin...
*
* Si cette fonction retourne 0, l'evenement n'est pas passe a la boucle evenementielle,
* Sinon elle l'est.
*/
int myfilter(const SDL_Event *event)
{
if(event->type == SDL_MOUSEMOTION) {
return 0;
}
return 1;
}
int main(void)
{
SDL_Event ev;
SDL_Surface *screen;
int stop = 0;
//Initialisation de SDL
if(SDL_Init(SDL_INIT_VIDEO)!=0) {
printf("Problème pour initialiser SDL %s\n", SDL_GetError());
return EXIT_FAILURE;
}
screen = SDL_SetVideoMode(640,480, 32, SDL_DOUBLEBUF | SDL_HWSURFACE);
if(screen==NULL) {
stop = 1;
}
/* Mettre le filtre en place */
SDL_SetEventFilter(myfilter);
while(stop == 0) {
while(SDL_PollEvent(&ev)) {
switch(ev.type)
{
case SDL_QUIT:
stop = 1;
break;
case SDL_MOUSEMOTION:
printf("Mouse motion\n");
break;
default:
break;
}
}
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0));
SDL_Flip(screen);
}
SDL_Quit();
return EXIT_FAILURE;
} |