Whole document tree 15. Funzioni periodiche, di I/O e di attesa
15.1 Funzioni periodicheProbabilmente vi sarete chiesti come far fare qualcosa di utile a GTK durante la chiamata alla gtk_main(). Ci sono diverse possibilità. Usando le seguenti funzioni si possono creare funzioni che vengono chiamate periodicamente.
Il primo argomento è il numero di millisecondi tra le chiamate alla funzione. Il secondo è la funzione periodica, mentre il terzo rappresenta i dati che vengono passati alla funzione. Il valore restituito è un'etichetta che può essere utilizzata per fermare la chiamata periodica, passandolo alla funzione:
La chiamata periodica si ferma anche se la funzione periodica ritorna zero o FALSE. Naturalmente questo vuol dire che se si vuole che la funzione periodica continui ad essere richiamata, essa deve restituire un valore non nullo, cioè TRUE. La dichiarazione della funzione periodica dovrebbe essere come questa:
15.2 Controllo dell'I/OUn'altra utile caratteristica di GTK è la possibilità di fargli controllare che siano verificate certe condizioni su un descrittore di file (come quelli restituiti da open(2) o socket(2)). Questo è utile in particolar modo per le applicazioni di rete. La funzione è la seguente:
Il primo argomento è il descrittore che si desidera venga controllato, mentre il secondo specifica quale condizione si vuole che GDK controlli. Questa può essere una tra: GDK_INPUT_READ - Chiama la funzione quando ci sono dati pronti per la lettura nel descrittore di file. GDK_INPUT_WRITE - Chiama la funzione quando il descrittore di file è pronto per la scrittura. Come sicuramente avrete già intuito, il terzo parametro è la funzione da chiamare quando la condizione specificata è soddisfatta, mentre il quarto rappresenta i dati da passare a questa funzione. Il valore di ritorno è un etichetta che può essere usata per fermare il controllo di GDK sul descrittore di file, usando la seguente funzione:
La funzione da richiamare va dichiarata così:
15.3 Funzioni di attesa (``Idle'')Cosa fare se si ha una funzione che si vuole venga chiamata quando non sta accadendo nient'altro?
Questa fa si che GDK chiami la funzione specificata quando non c'è nessuna altra operazione in corso.
Non ci soffermeremo sul significato dei parametri in quanto del tutto analoghi ai precedenti. La funzione puntata dal primo argomento della gtk_idle_add viene chiamata non appena se ne presenta l'opportunità; come negli altri casi, se essa restituisce FALSE non viene più chiamata.
Avanti Indietro Indice |