[comp.sys.sgi] SaveBehind field of NeWS canvases

ramani@anaconda.uucp (Ramani Pichumani) (08/24/89)

I have been trying in vain to build a popup window in 4sight that will
save the contents of a DGL window underneath it.  I really need this
feature because the time to redraw the images underneath can be
unacceptably long.  I've tried the following PostScript code with no
success:

/win framebuffer newcanvas def   % create a canvas
win /SaveBehind true put         % enable SaveBehind
framebuffer setcanvas            % shape the canvas
100 100 translate
0 0 100 0 360 arc                % make the canvas circular
win reshapecanvas
win setcanvas 
erasepage clippath .5 setgray fill    % fill the canvas
win /Mapped true put             % map it
win /Mapped false put            % unmap

After unmapping the canvas, all I'm left with is a white hole where
the canvas used to be.  The only thing I could think of is maybe I
should pass the DGL canvas as the parent canvas but I don't know where
to get it's handle.  The code works fine on my Sun3 but doesn't work
as expected on a 4D.

Ramani Pichumani
Department of Computer Science, Stanford University
ramani@patience.stanford.edu

meuer@msi-s9 (Mark Meuer) (08/24/89)

About two months ago, someone said they were going to post a .dvi file
previewer for SGI machines.  I thought I've been keeping up with the
group, but havn't seen a sign of this program.  Has anyone heard of it
or know of an anonymous ftp site where it can be found?

Thanks,
-mark
Mark Meuer                         |       1200 Washington Ave. So.
Geometry Supercomputer Project	   |	   Minneapolis, MN  55415  
meuer@geom.umn.edu		   |	   (612) 624-1867          

msc@ramoth.esd.sgi.com (Mark Callow) (08/31/89)

In article <11510@polya.Stanford.EDU>, ramani@anaconda.uucp (Ramani Pichumani) writes:
> 
> I have been trying in vain to build a popup window in 4sight that will
> save the contents of a DGL window underneath it.  I really need this
> feature because the time to redraw the images underneath can be
> unacceptably long.  I've tried the following PostScript code with no
> success:
> 
> /win framebuffer newcanvas def   % create a canvas
> win /SaveBehind true put         % enable SaveBehind

Because all the GL (and DGL clients) are drawing asynchronously to the
window server, SaveBehind isn't a good solution.  Most GL applications
will change their bits will the SaveBehind is active thus outdating the
SaveBehind contents.  Notifying the window server every time a GL client
drew would seriously affect GL performance so we don't do it.

For this reason GL canvases are always damaged even though the canvas above
has SaveBehind set to true.  This causes a REDRAW to be sent to the client.
Also SaveBehind doesn't save the contents of the window-id planes.  It wasn't
worth the extra memory it would have taken since I was causing damage to
GL canvases and all NeWS canvases have the same window-id value.

We are designing a new GL client to window system interface and are considering
hints that a slow drawing client such as yours could use to request different
treatment.
--
	-Mark