por hugoruscitti » Vie Nov 06, 2009 1:50 pm
Creo que el inconveniente está en que utilices un bucle
dentro de la función que ejecutas en el temporizador.
Si mal no entendí, tu función "callback" nunca regresa... por
eso no puedes eliminarla.
El proceso para crear temporizadores en SDL es ligeramente
distinto, la función "callback" que pides ejecutar en un intervalo
de tiempo tiene que hacer una sola cosa, pero retornar pronto,
no puede tener ciclos infinintos o algo así.
Cuando ejecutas AddTimer con la función, SDL almacena
en un vector que
tiene que ejecutar tu función cada "n" milisegundos, esa tarea
de ejecutar una y otra vez tiene un identificador (el que
retorna AddTimer). Entonces, para deterner esa tarea, simplemente
tienes que llamar a RemoveTime con el identificador que tenías.
Detener una tarea es simplemente decirle a SDL: "no ejecutes
nuevamente esta función otra vez", y SDL quita la tarea de
su vector y no vuelve a llamar a tu función "callback"...