Path: utzoo!attcan!utgpu!watmath!att!bellcore!rutgers!cs.utexas.edu!sun-barr!decwrl!sgi!msc@ramoth.esd.sgi.com From: msc@ramoth.esd.sgi.com (Mark Callow) Newsgroups: comp.sys.sgi Subject: Re: SaveBehind field of NeWS canvases Summary: reality sets in Message-ID: <41161@sgi.sgi.com> Date: 30 Aug 89 23:38:42 GMT References: <11510@polya.Stanford.EDU> Sender: msc@ramoth.esd.sgi.com Organization: Silicon Graphics, Inc., Mountain View, CA Lines: 28 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