Complete.Org: Mailing Lists: Archives: freeciv-dev: February 2003:
[Freeciv-Dev] Re: (PR#3424) New flush code
Home

[Freeciv-Dev] Re: (PR#3424) New flush code

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: bursig@xxxxxxxxx
Subject: [Freeciv-Dev] Re: (PR#3424) New flush code
From: "Raimar Falke" <rf13@xxxxxxxxxxxxxxxxx>
Date: Tue, 25 Feb 2003 23:49:47 -0800
Reply-to: rt@xxxxxxxxxxxxxx

On Tue, Feb 25, 2003 at 11:51:58AM -0800, Jason Short wrote:
> >>>What does this list tell me? You said above that there are two times
> >>>when flush is called: after the network (easy to implement) and during
> >>>animation (we have animation for unit combat, unit movement and
> >>>mushroom). So what is the reason for this list?
> >>
> >>No, the two times are:
> >>
> >>- Before we hand control back to the GUI main event loop.
> >>- Before any animation.
> >>
> >>After the network code is only one case of #1.  For instance, when the 
> >>user clicks a mouse to recenter the mapview, we call 
> >>center_tile_mapcanvas and then we have to flush_dirty (except in gtk2). 
> >>  There are about 6 different cases where this type of thing is done 
> >>from the GUI code.
> >>
> >>So, the long and complicated list traces the callers of 
> >>dirty_rect/dirty_all back toward the GUI main event loop.  At some point 
> >>in between the two, there needs to be a call to flush_dirty.  You can 
> >>verify that this is always the case.
> > 
> > 
> > This sounds cumbersome and error-prone. Can't we put a call to
> > gui_callback_finished in these callbacks which are called by the GUI?
> 
> It probably will be cumbersome and error-prone, unfortunately.
> 
> I don't quite understand your suggestion.  

> You want every GUI callback to call gui_callback_finished when it's
> done?

Yes.

> Then we could get rid of 
> most of the other calls...but that seems even more cumbersome and only 
> slightly less error-prone.
> 
> Another idea was to pass a write_to_screen value to common functions 
> which are called by the GUI (and which don't already flush).  Right now 
> the only such function (IIRC) is center_tile_mapcanvas.

I think you brought this up and I now think it is a good idea: calling
gui_callback_finished after each event. For this we have to break up
the main loop. This is possible for:
 - xaw: http://www.xfree86.org/4.2.0/XtAppNextEvent.3.html
 - gtk: 
http://developer.gnome.org/doc/API/gtk/gtk-general.html#GTK-MAIN-ITERATION
 - gtk2: 
http://developer.gnome.org/doc/API/2.0/gtk/gtk-General.html#gtk-main-iteration

sdl, win32 and mui already have to loop broken up in the current
source code.

        Raimar

-- 
 email: rf13@xxxxxxxxxxxxxxxxx
 1 + 1 = 3, for large values of 1




[Prev in Thread] Current Thread [Next in Thread]