Re: Label wont show right.
- From: Owen Taylor <owt1 cornell edu>
- To: NGUYEN <htn3463 osfmail isc rit edu>
- Cc: gtk-list redhat com
- Subject: Re: Label wont show right.
- Date: 18 Mar 1998 13:56:56 -0500
NGUYEN <htn3463@osfmail.isc.rit.edu> writes:
> > See the FAQ question 4.11 (whose name I'm gonna have to change).
> 
> I still get unexpected behaviour even with
> 	 while(gtk_event_pending())
> 		gtk_main_iteration();
> in the function. The label showes up once or twice or whenever it feels like it..:). Am i doing something wrong? This isnt the X server queing on me , is it?.
> Doesnt gdk_flush() take care of that?. Here's the codes again. And thanks for your help.
The problem is that the while (gtk_events_pending())... code fragment
basically checks if there is something for GTK to do, _right now_.
But in the process of putting the window on screen, GTK momentarily
has to wait for X. At that point, the while() terminates, and your
code executes.
I thought the following:
	while (1)
	  {
	    if (!gtk_events_pending())
	      {
		gdk_flush();
		if (!gtk_events_pending())
	           break;
	      }
	    gtk_main_iteration();
	  }
Might be guaranteed way of doing it. (It says, "if there is nothing
for GTK to do, wait until X has processed all our events, then
see if there is _still_ nothing for us to do".) But that doesn't
seem to help. Apparently the expose events are not generated
until after gdk_flush() (which calls XSync()) returns.
So, my best advice is that you should call the 
while (gtk_events_pending()) stuff not just once at the beginning
of your processing, but occasionally during the execution of
your long-processing code. (If possible). This will have the
nice side effect that your window will get redrawn if it 
is obscured during the processing.
The other thing to do is:
	while(gtk_event_pending())
 	  gtk_main_iteration();
	gdk_flush ();
        gtk_widget_draw (label);
Which draws the label immediately instead of waiting for it
to get exposed by Expose events.
Regards,
                                        Owen
 
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]