Esempio n. 1
0
def set_blocked(event_types):
    if event_types is None:
        sdl.SDL_EventState(0xff, sdl.SDL_IGNORE)
        return

    for event_type in _event_types_iter(event_types):
        sdl.SDL_EventState(event_type, sdl.SDL_IGNORE)
Esempio n. 2
0
def get_blocked(event_types):
    is_blocked = False

    for event_type in _event_types_iter(event_types):
        # TODO: Is it safe to short-circuit here? The implementation in
        # pygame's event.c doesn't.
        if sdl.SDL_EventState(event_type, sdl.SDL_QUERY) == sdl.SDL_IGNORE:
            is_blocked = True

    return is_blocked
Esempio n. 3
0
def post(event):
    """post(Event): return None
       place a new event on the queue"""
    # SDL requires video to be initialised before PushEvent does the right thing
    check_video()
    is_blocked = sdl.SDL_EventState(event.type, sdl.SDL_QUERY) == sdl.SDL_IGNORE
    if is_blocked:
        # Silently drop blocked events, since that's what pygame does
        # (maybe worth logging somehow?)
        return None

    sdl_event = ffi.new("SDL_Event *")
    sdl_event.type = event.type
    sdl_event.user.code = _USEROBJECT_CHECK1
    sdl_event.user.data1 = _USEROBJECT_CHECK2
    sdl_event.user.data2 = ffi.cast("void*", sdl_event)
    _user_events[sdl_event] = event
    if sdl.SDL_PushEvent(sdl_event) == -1:
        raise SDLError.from_sdl_error()
Esempio n. 4
0
def post(event):
    """post(Event): return None
       place a new event on the queue"""
    # SDL requires video to be initialised before PushEvent does the right thing
    check_video()
    is_blocked = sdl.SDL_EventState(event.type,
                                    sdl.SDL_QUERY) == sdl.SDL_IGNORE
    if is_blocked:
        raise RuntimeError("event post blocked for %s" %
                           event_name(event.type))

    sdl_event = ffi.new("SDL_Event *")
    sdl_event.type = event.type
    sdl_event.user.code = _USEROBJECT_CHECK1
    sdl_event.user.data1 = _USEROBJECT_CHECK2
    sdl_event.user.data2 = ffi.cast("void*", sdl_event)
    _user_events[sdl_event] = event
    if sdl.SDL_PushEvent(sdl_event) == -1:
        raise SDLError.from_sdl_error()