2010-10-27 10 views
5

Je crée un événement avec g_timeout_add ou g_timeout_add_seconds qui renvoie un identifiant d'événement; Je peux annuler l'événement en appelant le g_source_remove.possible de récupérer le temps restant sur un événement 'glib'?

Cependant, à un moment donné, ce que je voudrais faire, c'est voir combien de temps il reste avant que l'événement ne soit déclenché. Existe-t-il un moyen simple de faire cela avec la glib api, ou ai-je besoin de stocker et de comparer manuellement les horodatages avec g_source_get_current_time?

Répondre

3

Il n'existe aucun moyen raisonnable de le faire dans GLib. Le moyen déraisonnable serait d'obtenir la GSource (g_main_context_find_source_by_id) et ensuite d'appeler l'opération source-> source_funcs-> prepare() sur la GSource, ce qui retournerait le temps jusqu'à ce que la source soit distribuée. C'est un peu schématique: source_funcs est privé, et prepare() n'est pas vraiment destiné à être utilisé en interne par la boucle principale.

Meilleur que je peux dire que cela fonctionnerait bien. Je ne l'ai pas essayé.

+0

Merci; Je préfère ne pas dépendre de toute fonctionnalité privée qui peut ou ne peut pas changer, donc je suppose que je devrais garder une trace de l'heure moi-même. –

2

enregistrer l'heure de début + délai d'attente, subract à partir de l'heure actuelle lorsque vous voulez connaître le temps restant.

Questions connexes