/t_backcompat/core_event_filter.pl

http://github.com/PerlGameDev/SDL · Perl · 47 lines · 39 code · 6 blank · 2 comment · 17 complexity · a774a246d62dbc4aa911215e3ea52618 MD5 · raw file

  1. #!/usr/bin/perl -w
  2. use strict;
  3. use warnings;
  4. use lib '.';
  5. use SDL;
  6. use SDL::Event;
  7. use SDL::Events;
  8. use SDL::Video;
  9. SDL::init(SDL_INIT_VIDEO);
  10. my $display = SDL::Video::set_video_mode( 640, 480, 32, SDL_SWSURFACE );
  11. my $event = SDL::Event->new();
  12. #This filters out all ActiveEvents
  13. my $filter = sub {
  14. if ( $_[0]->type == SDL_ACTIVEEVENT ) { return 0 }
  15. else { return 1; }
  16. };
  17. my $filtered = 1;
  18. SDL::Events::set_event_filter($filter);
  19. while (1) {
  20. SDL::Events::pump_events();
  21. if ( SDL::Events::poll_event($event) ) {
  22. if ( $event->type == SDL_ACTIVEEVENT ) {
  23. $filtered = 0; #we got a problem!
  24. print "Hello Mouse!!!\n"
  25. if ( $event->active_gain
  26. && ( $event->active_state == SDL_APPMOUSEFOCUS ) );
  27. print "Bye Mouse!!!\n"
  28. if ( !$event->active_gain
  29. && ( $event->active_state == SDL_APPMOUSEFOCUS ) );
  30. }
  31. if ( $event->type == SDL_MOUSEBUTTONDOWN ) {
  32. my ( $x, $y, $but, $wh ) = (
  33. $event->button_x, $event->button_y,
  34. $event->button_button, $event->button_which
  35. );
  36. warn "$but $wh CLICK!!! at $x and $y \n";
  37. }
  38. exit if ( $event->type == SDL_QUIT );
  39. }
  40. }
  41. SDL::quit();