2010-06-01 6 views
6

GLib의 실행 중 타임 아웃 간격을 수정해야합니다. 그게 가능하니? 소스 코드를 살펴 보았지만 가능한 것 같습니다.하지만 GLib 내부에서 비공개 함수를 사용해야합니다. GTimeoutSource를 다시 구현해야합니까, 아니면이를 수행 할 방법이 있습니까?GLib의 변수 타임 아웃

gboolean 
my_timeout_function(gpointer data) 
{ 
    // do stuff 
    // ... 

    if(need_to_change_interval) 
    { 
     g_timeout_add(new_interval, (GSourceFunc)my_timeout_function, data); 
     return FALSE; 
    } 
    return TRUE; 
} 

답변

3

, 당신은 새로운 제한 시간 간격으로 기능을 다시 추가하고 이전 간격으로 시간 제한을 제거하기 위해 FALSE를 반환 할 수 g_timeout_add가 새로운 GSource (사실 GTimeoutSource)를 생성하고 FALSE를 반환하면 실제로 간격을 수정하고 전체 GTimeoutSource를 파괴 및 다시 생성하지 않을 때 사용중인 현재 GSource가 파괴되므로 더 나은 솔루션을 찾고 있습니다.
+0

그래, 내가 생각하지만 난 무엇이다 : 시간 제한 기능에 – Matachana

+0

성능상의 문제가 될 것이라고 생각하지 않습니다. Glib 개발자는 일반적으로 API에 내부를 노출시키지 않으면 좋은 이유가 있습니다. – ptomato