2010-10-27 13 views
5

Estoy creando un evento con g_timeout_add o g_timeout_add_seconds que devuelve una identificación de evento; Puedo cancelar el evento llamando al g_source_remove.posible recuperar el tiempo que queda en un evento glib '?'

Sin embargo, en algún momento lo que me gustaría hacer es ver cuánto tiempo queda hasta que se dispare el evento. ¿Hay una manera simple de hacer esto con la API glib, o necesito almacenar y comparar manualmente las marcas de tiempo con g_source_get_current_time?

Respuesta

3

No hay una forma razonable de hacerlo en GLib.

La forma irracional sería obtener GSource (g_main_context_find_source_by_id) y luego invocar la operación source-> source_funcs-> prepare() en GSource, que devolvería el tiempo hasta que se despache la fuente. Esto es algo incompleto: source_funcs es privado, y prepare() no está destinado a ser utilizado, excepto internamente por el bucle principal.

Lo mejor que puedo decir es que funcionaría bien. No lo he intentado.

+0

Gracias; Prefiero no depender de ninguna funcionalidad privada que pueda o no cambiar, así que supongo que tendré que hacer un seguimiento de la hora yo mismo. –

2

guarde la hora de inicio + intervalo de tiempo de espera, restar de la hora actual cuando desee saber el tiempo restante.

Cuestiones relacionadas