Generalmente en SDL se suele crear una sola estructura para representar
al evento, y desde el bucle se analizan uno a uno los eventos a medida
que se producen.
Ten en cuenta que SDL sabe administrar los eventos por su cuenta, si llegan
varios eventos SDL los agrupa en una cola y mediante la función PollEvent
te permite obtenerlos uno a uno.
Este sería un extracto de código para ejemplificarlo (tomado del ejemplo
"desplazamiento suave" [1]):
int main (int argc, char * argv [])
{
SDL_Event event;
int salir = 0;
[...]
while (! salir)
{
while (SDL_PollEvent (& event))
{
if (event.type == SDL_QUIT)
salir = 1;
if (event.type == SDL_KEYDOWN)
{
if (event.key.keysym.sym == SDLK_ESCAPE)
salir = 1;
}
}
[...]
> Y en segundo lugaar quisiera saber si ven algo raro en este codigo
> devido a que no me deja cerrar la aplicacion una vez que la estoy
> corriendo.
Por lo que veo el valor de "running" es la condición de salida, por lo
tanto para terminar el programa deberías hacer que "running" tenga
el valor 0. En el código estás asignando -1 y ese valor para C es verdadero,
nunca daría la condición para salir del "while(running)" ...
Saludos.
PD: no llegué a probar el programa, pero puede que el problema que tienes
no sea a causa del Sistema Operativo sino del bucle de eventos, puedes
usar un depurador como DDD [2] para determinar la causa del fallo.
[1] - http://www.losersjuegos.com.ar/referencia/ejemplos/ejemplos.php
[2] - http://www.loosersjuegos.com.ar/foro/viewtopic.php?t=318
--
Hugo Ruscitti
www.losersjuegos.com.ar
¿es notoria esa latencia?, generalmente no se toman medidas al respecto
porque pocos juegos requieren ser tan precisos, y el mismo diseño de SDL
no busca tanta precisión sino compatibilidad con varias plataformas...
comentanos
un poco mas del problema, si observas retardo en las respuestas de los eventos
tal vez se deba a otro motivo, como el uso de SDL_Delay, una
sobrecarga de eventos
en el buffer u otro aspecto relacionado con tu programa en particular,
por cierto
¿has evaluado si SDL_WaitEvent no es mas adecuada para tu programa?,
generalmente
lo es para programas orientados a generar respuestas en base a eventos, como en
tu programa (si el usuario pulsa un botón reproduce tal sonido...).
Saludos.
--
Hugo Ruscitti
www.losersjuegos.com.ar
ah, me desconcierta... que raro, voy a probar la versión que descargué del
programa en mi casa (donde tengo un joystick) y luego te cuento si
me ocurre lo mismo.
Un saludo.
--
Hugo Ruscitti
www.losersjuegos.com.ar
Si, evidentemente la versión que había probado hace unos días no era la
mas reciente. Con la versión actual no tuve ningún problema, los sonidos
se reproducen inmediatamente después de pulsar el botón del joystick...
¿en tu equipo sigues notando una demora?, ¿o es algo que has solucionado
con la actualización?.