erlug
[Top] [All Lists]

Re: [Erlug] [Gtk] gtk_timeout_add

To: erlug@xxxxxxxxxxxxxx
Subject: Re: [Erlug] [Gtk] gtk_timeout_add
From: "Ivan Sergio Borgonovo" <mail@xxxxxxxxxxxxxxx>
Date: Wed, 15 May 2002 18:00:48 +0200
On 15 May 2002 at 17:21, Pier Luigi Fiorini wrote:

> Salve,

[snip]

> gtk_widget_destroy (dialog);
> timeout = gtk_timeout_add ((delay * 1000), (GtkFunction) delay_callback,
> NULL); gtk_widget_show_now (toplevel);

[snip]

> ecco delay_callback:
>
> if (timeout != 0) {
>  gtk_timeout_remove (timeout);
>  timeout = 0;
> }
>
> take_shot();
>
> return TRUE;
>
> in pratica elimina il timeout (se necessario) e fa una screen shot.

> Il problema e' che non passano (delay * 1000) millisecondi dal clic su
> Si alla shot. Come devo fare? Ho provato in tutti i modi, ho spulciato
> il cvs ma tutti fanno come ho pensato io.

Cioè? non passano esattamente delay*1000 millisecondi o succede tutto
in un millisecondo?

http://www.it.gnome.org/GGAD/sec-mainloop.html

Le funzioni di Timeout vengono associate e dissociate esattamente come
le funzioni di uscita. La callback associatavi è inoltre identica.
gtk_timeout_add() aspetta come argomento un intervallo. La callback
viene chiamata ogni intervallo di millisecondi. Se la callback
restituisce FALSE, questa viene rimossa dalla lista delle funzioni di
timeout, come se aveste chiamato gtk_timeout_remove() in una funzione
di timeout. Questa modifica la lista dei timeout mentre GTK+ esegue
iterazioni sopra di essa, causando un errore fatale. Dovete invece far
restituire il valore FALSE per rimuovere la funzione.


Io toglerei

gtk_timeout_remove (timeout);

e cambierei il ritorno in:

return FALSE;

altra cosa... da dove arriva timeout visto che alla funzone di call
back passi NULL???

http://www.gtk.org/tutorial/ch-timeouts.html

Passeresti tutto il codice della funzione di call back?


--
Salve
Ivan Sergio Borgonovo
http://www.webthatworks.it/
uniq life || sleep 24h



<Prev in Thread] Current Thread [Next in Thread>