src/events/SDL_events.c
branchSDL-1.3
changeset 1731 875c3cf1a12c
parent 1724 6c63fc2bd986
equal deleted inserted replaced
1730:e70477157db9 1731:875c3cf1a12c
   433 }
   433 }
   434 
   434 
   435 int
   435 int
   436 SDL_PushEvent(SDL_Event * event)
   436 SDL_PushEvent(SDL_Event * event)
   437 {
   437 {
   438     if (SDL_PeepEvents(event, 1, SDL_ADDEVENT, 0) <= 0)
   438     if (SDL_EventOK && !SDL_EventOK(SDL_EventOKParam, event)) {
       
   439         return 0;
       
   440     }
       
   441     if (SDL_PeepEvents(event, 1, SDL_ADDEVENT, 0) <= 0) {
   439         return -1;
   442         return -1;
   440     return 0;
   443     }
       
   444     return 1;
   441 }
   445 }
   442 
   446 
   443 void
   447 void
   444 SDL_SetEventFilter(SDL_EventFilter filter, void *userdata)
   448 SDL_SetEventFilter(SDL_EventFilter filter, void *userdata)
   445 {
   449 {
   449     SDL_EventOK = filter;
   453     SDL_EventOK = filter;
   450     SDL_EventOKParam = userdata;
   454     SDL_EventOKParam = userdata;
   451     while (SDL_PollEvent(&bitbucket) > 0);
   455     while (SDL_PollEvent(&bitbucket) > 0);
   452 }
   456 }
   453 
   457 
   454 SDL_EventFilter
   458 SDL_bool
   455 SDL_GetEventFilter(void **userdata)
   459 SDL_GetEventFilter(SDL_EventFilter * filter, void **userdata)
   456 {
   460 {
       
   461     if (filter) {
       
   462         *filter = SDL_EventOK;
       
   463     }
   457     if (userdata) {
   464     if (userdata) {
   458         *userdata = SDL_EventOKParam;
   465         *userdata = SDL_EventOKParam;
   459     }
   466     }
   460     return (SDL_EventOK);
   467     return SDL_EventOK ? SDL_TRUE : SDL_FALSE;
   461 }
   468 }
   462 
   469 
   463 void
   470 void
   464 SDL_FilterEvents(SDL_EventFilter filter, void *userdata)
   471 SDL_FilterEvents(SDL_EventFilter filter, void *userdata)
   465 {
   472 {
   534     if (SDL_ProcessEvents[SDL_SYSWMEVENT] == SDL_ENABLE) {
   541     if (SDL_ProcessEvents[SDL_SYSWMEVENT] == SDL_ENABLE) {
   535         SDL_Event event;
   542         SDL_Event event;
   536         SDL_memset(&event, 0, sizeof(event));
   543         SDL_memset(&event, 0, sizeof(event));
   537         event.type = SDL_SYSWMEVENT;
   544         event.type = SDL_SYSWMEVENT;
   538         event.syswm.msg = message;
   545         event.syswm.msg = message;
   539         if ((SDL_EventOK == NULL)
   546         posted = (SDL_PushEvent(&event) > 0);
   540             || (*SDL_EventOK) (SDL_EventOKParam, &event)) {
       
   541             posted = 1;
       
   542             SDL_PushEvent(&event);
       
   543         }
       
   544     }
   547     }
   545     /* Update internal event state */
   548     /* Update internal event state */
   546     return (posted);
   549     return (posted);
   547 }
   550 }
   548 
   551