2010-10-27 8 views
5

Tôi đang tạo sự kiện với g_timeout_add hoặc g_timeout_add_seconds trả về id sự kiện; Tôi có thể hủy sự kiện bằng cách gọi g_source_remove.có thể lấy thời gian còn lại trên một sự kiện 'glib'?

Tuy nhiên, vào thời điểm nào đó, điều tôi muốn làm là xem còn bao nhiêu thời gian cho đến khi sự kiện được kích hoạt. Có cách nào đơn giản để làm điều này với api glib hay tôi cần lưu trữ và so sánh dấu thời gian theo cách thủ công với g_source_get_current_time?

Trả lời

3

Không có cách nào hợp lý để thực hiện việc này trong GLib.

Cách không hợp lý là lấy GSource (g_main_context_find_source_by_id) và sau đó gọi hoạt động source-> source_funcs-> prepare() trên GSource, sẽ trả về thời gian cho đến khi nguồn được gửi đi. Đây là loại sơ sài: source_funcs là riêng tư, và chuẩn bị() không thực sự có ý định được sử dụng ngoại trừ nội bộ bởi vòng lặp chính.

Tốt nhất tôi có thể nói là nó sẽ hoạt động. Tôi đã không thử nó.

+0

Cảm ơn; Tôi không muốn phụ thuộc vào bất kỳ chức năng riêng tư nào có thể hoặc có thể không thay đổi, vì vậy tôi đoán tôi sẽ phải theo dõi thời gian của bản thân mình. –

2

lưu thời gian bắt đầu + khoảng thời gian chờ, giảm thời gian hiện tại khi bạn muốn biết thời gian còn lại.