[comp.windows.x] save-unders etc

asw@vax-d.rutherford.ac.UK (Antony Williams) (11/11/87)

There has been quite a lot of discussion about save-unders.  Meanwhile,
there are proposals for double buffering, and no doubt there will
be implementations of retained windows appearing soon.

I would like to take this opportunity to point out that Brad Myers implemented
save-unders as well as (optionally) retained windows in his Sapphire
window manager.  He wrote about this in his chapter
"Issues in Window Management Design and Implementation"
in Methodology of Window Management (Springer 1986, ISBN 0-387-16116-3).
He pointed out that combining save-unders (he called them "courteous"
windows) with retained windows
     " ... does not work very well.  If you have windows
     that have off-screen memory and courteous windows overlapping
     each other, and you move one of the windows to the top, there is
     no order in which you can update the windows that will be correct.
     They all have to be updated first or you have to use separate buffers
     into which you move the information temporarily."

In Sapphire, Brad was trying to retain as much of the window images
as possible while conserving memory space and cpu time.

He also observed a great deal of complexity in moveing and growing
windows in an overlapped set.  I think this comes largely because
the image is partially on screen, and partially somewhere else,
and complexity is n^2.  If you have enough store to save a copy
of all of the pixels in one place (eg if retaining or double buffering)
life gets much easier.  Also note that if all windows are retained,
saving only the obscured regions (as on the BLIT)
saves *at most* one screenful of memory compared to saving whole windows.
For monochrome displays this is almost trivial,
and well worth the simplification in software.
   Tony
---------------------------------------------------------------------------
Tony Williams					|Informatics Division
JANET:	asw@uk.ac.rl.vd				|Rutherford Appleton Lab
Usenet:	{... | mcvax}!ukc!rlvd!asw		|Chilton, Didcot
ARPA:	asw%vd.rl.ac.uk@nss.cs.ucl.ac.uk	|Oxon OX11 0QX, UK

garfinke@hplabsb.UUCP (Dan Garfinkel) (11/12/87)

>                       Also note that if all windows are retained,
> saving only the obscured regions (as on the BLIT)
> saves *at most* one screenful of memory compared to saving whole windows.

I may be missing something or have a different meaning to retaining only
obscured regions, but how can this be true.  Suppose you have 3 window,
one at (0,0) with a size of (w-2, h-2), another at (1,1) size (w-2, h-2),
and the third at (3,3) size (w-2, h-2), where the physical screen is (w,h).  
The obscured parts of window two is from (1,1) size (w-3, h-3), and window
three's obscured parts is from (1,1) size (w-3, h-3).  As you can see,
you need to save almost *twice* the screen size in this simple case of
only three windows.  I think one could say that the most one would have to
save is (windows-1) * (sccreen_size) amount of memory.

Dan Garfinkel - HP

garfinke@hplabsb.UUCP (Dan Garfinkel) (11/12/87)

>     > Also note that if all windows are retained, saving only the obscured
>     > regions (as on the BLIT) saves *at most* one screenful of memory
>     > compared to saving whole windows.
> 
>     I may be missing something or have a different meaning to retaining only
>     obscured regions, but how can this be true?
> 
> Just think about it.  By saving only the obscured portions, you are in
> effect using the frame buffer as an alternate to memory for storing those
> pixels.  You have only one screen, so the most savings you can expect over
> saving entire windows is one screenful.  The question is not what the total
> is, but what the difference is.

I guess I was missing something!  I read the original response to mean
you need only one screenful of memory if you were only saving obscured
regions.  Too many "saves" can get confusing...

-Dan

bobr@zeus.UUCP (11/20/87)

In article <70700002@hplabsb.UUCP> garfinke@hplabsb.UUCP (Dan Garfinkel) writes:

    > Also note that if all windows are retained, saving only the obscured
    > regions (as on the BLIT) saves *at most* one screenful of memory
    > compared to saving whole windows.

    I may be missing something or have a different meaning to retaining only
    obscured regions, but how can this be true?

Just think about it.  By saving only the obscured portions, you are in
effect using the frame buffer as an alternate to memory for storing those
pixels.  You have only one screen, so the most savings you can expect over
saving entire windows is one screenful.  The question is not what the total
is, but what the difference is.
-- 
Robert Reed, Tektronix CAE Systems Division, bobr@zeus.TEK