Bennu Game Development

Foros en Español => General => Topic started by: josebita on December 15, 2010, 12:02:06 PM

Title: Posible bug con libsdlhandler
Post by: josebita on December 15, 2010, 12:02:06 PM
Diría que hay un bug con libsdlhandler, en particular con la función dump_new_events().
Entiendo que esa función descarta todos los eventos que no se hayan registrado hasta el momento, para limpiar la pila de eventos innecesarios y que, por tanto, debe ser ejecutada después de todas las demás que los utilicen (libmouse, libwm...).
El tema es que la prioridad de ejecución de la función dump_new_events() se establece a 5000, mientras que la de libmouse está en 4800. Eso provoca que la función do_mouse_events() de libmouse se ejecute más tarde y -en teoría- se encuentre la pila de eventos vacía y los eventos del ratón no se registran. libwm tiene la prioridad a 4700 y libkey a 4900.

Por alguna razón éste no es el caso con SDL1.2, pero sí en SDL1.3+iOS, lo que provocaba que los eventos de ratón/teclado/gestor de ventanas no se estuvieran registrando.
¿No podrías bajar la prioridad de libsdlhandler para que dump_new_events() se ejecute más tarde?
Title: Re: Posible bug con libsdlhandler
Post by: SplinterGU on December 15, 2010, 12:37:43 PM
Lo que decis no puede ser posible, ya que SDL_PeepEvents libera los eventos previamente obtenidos con SDL_PumpEvents y no los que estan a la espera de ser procesados.
Esto es, SDL tiene un buffer donde va metiendo los eventos internamente, ese buffer no es accedido por la funcion SDL_PeepEvents, cuando se ejecuta la funcion SDL_PumpEvents todos los eventos de ese buffer interno son pasados al buffer que si puede acceder la funcion SDL_PeepEvents, mientras vos procesas desde el codigo los eventos obtenidos con la SDL_PumpEvents, los nuevos eventos se vuelven a encolar en el buffer interno.

entonces no puede pasar esto que decis, a menos que SDL tenga un bug en SDL1.3+iOS, en ese caso toca que el equipo SDL corrija tal bug.

pero no puedo cambiar la prioridad, porque en ese caso, si uno quiere hacer algo que procese los eventos que no son procesados por bennugd, directamente desde codigo bennu (prg) no podria hacerlo, como es el caso de una lib de eventos SDL de Sandman.
Title: Re: Posible bug con libsdlhandler
Post by: josebita on December 15, 2010, 01:18:27 PM
Perdón, tienes razón. No me había dado cuenta de que SDL_PumpEvents() está siendo llamada después. Será cosa de la plataforma, u otra razón... habrá que mirarlo con un poco más de cariño...

Gracias.
Title: Re: Posible bug con libsdlhandler
Post by: josebita on December 15, 2010, 01:32:21 PM
Buff, por lo que veo, en realidad en el iOS la función PumpEvents sólo se encarga de que la aplicación no se muera demasiado mal cuando el usuario pulsa el botón... Vamos, que en realidad ese SDL_PumpEvents() en este caso en particular no está haciendo nada y lo que hay que hacer es que los eventos lleguen a la pila solitos; no se les puede forzar.
Title: Re: Posible bug con libsdlhandler
Post by: SplinterGU on December 15, 2010, 02:03:25 PM
eso es un horror, no pueden cambiar asi el comportamiento, mas en un comportamiento tan especifico de una funcion, en el caso de esta funcion su sentido de ser es este comportamiento.

te sugiero lo reportes al SDL team.

yo por lo pronto no usare la 1.3 si pasan estas cosas.
Title: Re: Posible bug con libsdlhandler
Post by: josebita on December 15, 2010, 02:19:58 PM
Es cosa del port a iOS, que parece que aún tiene sus cosillas. He estado mirando el código de algunas otras plataformas y sí está bien...
Title: Re: Posible bug con libsdlhandler
Post by: SplinterGU on December 15, 2010, 03:15:56 PM
reportalo al team, con una incidencia reportada se activan las prioridades en los fix.