Newsgroup: it.comp.os.linux.development
Titolo: [GTK] portare drawable in image

Poiche' avrei necessita' di portare il contenuto di una drawable_area
in una image, dato che mi sembra uno spreco richiamare la callback di
"riempimento" (piuttosto complessa) ogni volta che viene lanciato il
segnale di esposizione, mi chiedevo: come poter richiamare la suddetta
callback di riempimento una volta sola?
Ho provato a far restituire (come da manuale) TRUE alla callback
agganciata al segnale di "expose_event", poiche' la Reference Guide
dice: "Returns : TRUE to stop other handlers from being invoked for
the event. FALSE to propagate the event further.". Cilecca.
Ho pensato di assegnare (tramite il classico g_signal_connect) la
drawable_area alla callback mediante un segnale tipo "show" o
"realize". Cilecca.
Ulteriori suggerimenti?
TIA

 the event. FALSE to propagate the event further.". Cilecca.
Per forza: pasticciare nell'expose event è sempre rischioso, se non si
sa quello che si sta facendo.
Ciao,
 Emmanuele.
-- 
Emmanuele Bassi (Zefram)                 [ 
http://www.emmanuelebassi.net
 ]
GnuPG Key fingerprint = 4DD0 C90D 4070 F071 5738  08BD 8ECC DB8F A432 0FF4

 
... Ovvero?

 ... Ovvero?
In Python, che al momento mi risulta più facile prototipare codice così:
	done_redraw = 0
	def redraw (widget, *args):
		if done_redraw:
			return
		# redraw
		done_redraw = 1
Se non è chiaro, rispiego a parole.


 
Mai visto Python in vita mia, solo C (e PHP e Java, ma sono altre storie...).
Dunque la spiegazione "a parole" e' ben gradita.
Grazie :-)

 Dunque la spiegazione "a parole" e' ben gradita.
Usi una variabile booleana impostata a FALSE, e la controlli prima del
codice in cui fai il redraw; alla fine del redraw la imposti a TRUE, e
ritorni.
In C:
	static gboolean done_redraw = FALSE;
 
	/* ... */
	if (done_redraw)
		return;
 
	/* codice del redraw */
	done_redraw = TRUE;
Tutto qui. In questo modo, sei sicuro che il callback viene portato a
termine una sola volta; anche se questo viene chiamato varie volte, e
ritorna subito, la perdita prestazionale è comunque mascherata dal resto
del mainloop delle GTK.


 
Ops, e' vero: era la soluzione piu' semplice e ovvia... L'osservanza
della regola KISS non e' mai stata il mio forte :-)
Grazie :-) !

 della regola KISS non e' mai stata il mio forte :-)
regola KISS??? posso saperla anche io?
ciao
-- 
Er Baitch
http://baitch.altervista.org/
-- Fortune of the day --
You will lose your present job and have to become a door to door
mayonnaise salesman.

 regola KISS??? posso saperla anche io?
"Keep It Simple Stupid"
Non ricordo a chi va attribuita, pero`.
ciao,
S.
-- 
Stefano Rodighiero      |  
http://larsen.perlmonk.org
mailto:
lar...@perl.it
   |  
http://www.perl.it

 regola KISS??? posso saperla anche io?
wolverine:~$ dict KISS
1 definition found
From V.E.R.A. -- Virtual Entity of Relevant Acronyms June 2002 [vera]:
  KISS
  	  Keep It Simple, Stupid (telecommunication, Usenet, IRC)


 regola KISS??? posso saperla anche io?
[kral@aleph:~] wtf kiss
KISS: keep it simple, stupid
Ciao,
-- 
+--------+ | ASCII ribbon campaign ( ) | 
www.autistici.org/kral
|  kral  | |  - against HTML email  X  |
+--------+ |              & vCards / \ | my gpg id = 0x7C946947

   	  Keep It Simple, Stupid (telecommunication, Usenet, IRC)
:-) Grazie (e pensare che l'avevo anche letta a suo tempo... mi sa che
ogni tanto devo rimettere mano al jargon)
