g_timeout_add
イベントIDを使用して、またはg_timeout_add_seconds
イベントIDを返すイベントを作成しています。を呼び出すことでイベントをキャンセルできg_source_remove
ます。
ただし、ある時点で、イベントが発生するまでの残り時間を確認したいと思います。glib apiを使用してこれを行う簡単な方法はありますか、それともタイムスタンプを手動で保存して比較する必要がありg_source_get_current_time
ますか?
GLibでこれを行うための合理的な方法はありません。
不合理な方法は、GSource(g_main_context_find_source_by_id)を取得してから、GSourceでsource-> source_funcs-> prepare()操作を呼び出すことです。これにより、ソースがディスパッチされるまでの時間が返されます。これはちょっと大雑把です。source_funcsはプライベートであり、prepare()は、メインループによって内部的に使用される場合を除いて実際に使用されることを意図していません。
私はそれがうまくいくと言うことができます。私はそれを試していません。
開始時間+タイムアウト間隔を保存し、残り時間を知りたいときに現在の時間からサブラクトします。