Complete.Org: Mailing Lists: Archives: freeciv-dev: January 2003:
[Freeciv-Dev] Re: city text , sdl widgets and rock & roll ( was Re: (PR#
Home

[Freeciv-Dev] Re: city text , sdl widgets and rock & roll ( was Re: (PR#

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: bursig@xxxxxxxxx
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: city text , sdl widgets and rock & roll ( was Re: (PR#2858) )
From: "Jason Short via RT" <rt@xxxxxxxxxxxxxx>
Date: Thu, 23 Jan 2003 09:00:58 -0800
Reply-to: rt@xxxxxxxxxxxxxx

Rafa³ Bursig via RT wrote:
> Dnia 2003.01.23 02:45 Jason Short via RT napisa³(a):
> 
>>Rafa³ Bursig via RT wrote:

> If I have next buffer to city text or widgets then this buffer must be 
> 32bit surfaces becouse all city text and widgets use ALPHA chanel. City 
> text use AA and are full 32bit surfaces and widgets have screen bit 
> coding but have global alpha variable.
> 
> And this slow down drawing if screen has 8bit and 16 bit pixel coding.
> ( almost all video card use 32bit insteed 24bit ( totaly horror ) but 
> this give lose 8bit per pixel (without alpha) or rgb is 10 12 10 )
> 
> Fastest draw is when both surfaces ( "src" and "dst" ) has the same 
> pixel coding.
> (SDLClient convert all loades graphics to screen format )

Okay, but...

Using a second buffer may slow the drawing down (or maybe not...since it 
means only one display refresh instead of two, and you have to redraw 
the map widgets much less often), but unless you do it I don't see how 
you can avoid drawing problems: namely, the flicker of the widgets as 
they are redrawn, and that partial canvas updates will overwrite the 
widgets.

You could try using the same buffer rather than a second one: that is, 
draw the map widget on top of the main backing store then flush the 
whole thing to screen.  But this will have problems with partial canvas 
updates, since it is difficult to draw a part of the widget.

Also, what is wrong with having the following in update_map_canvas_visible?

   update_map_canvas(..., FALSE);
   show_city_descriptions();
   flush_mapcanvas_full();

?

jason




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