2010-06-01 10 views
6

में परिवर्तनीय टाइमआउट मुझे निष्पादन में होने पर एक जीएलआईबी के टाइम-आउट अंतराल को संशोधित करने की आवश्यकता है। क्या यह संभव है? मैंने सोर्स कोड पर एक नज़र डाली और यह मेरे लिए संभव लगता है, लेकिन जीएलआईबी इंटर्नल्स से कुछ गैर-सार्वजनिक कार्यों का उपयोग करना आवश्यक है। क्या मुझे GTimeoutSource को फिर से लागू करना चाहिए या ऐसा करने का कोई तरीका है?जीएलआईबी

उत्तर

3

अपनी टाइमआउट समारोह में, आप समारोह नई टाइमआउट अंतराल के साथ फिर से जोड़ सकते हैं और फिर लौट FALSE वर्ष अंतराल के साथ समय समाप्ति दूर करने के लिए:

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; 
} 
+0

हाँ, यह मैं क्या सोचा था, लेकिन मैं था एक बेहतर समाधान की तलाश में है क्योंकि g_timeout_add एक नया जीएसओआरएस (वास्तविक रूप से GTimeoutSource) बनाता है और FALSE लौटने से आप वर्तमान जीएसओएस को नष्ट कर देते हैं, जिसका उपयोग आप वास्तव में अंतराल को संशोधित करना चाहते हैं, पूरे जीटीएमआउट स्रोत को नष्ट नहीं कर सकते हैं। – Matachana

+0

मुझे नहीं लगता कि यह एक उल्लेखनीय प्रदर्शन समस्या होगी। ग्लिब डेवलपर्स का आमतौर पर एक अच्छा कारण होता है जब वे अपने एपीआई में आंतरिक का पर्दाफाश नहीं करते हैं। – ptomato

संबंधित मुद्दे