discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Dual head question


From: Frederic Stark
Subject: Re: Dual head question
Date: Thu, 26 Apr 2001 19:20:07 +0200

> systems which I know of (NeXT, Mac) handle multiheading by drawing  
windows on
> both screens partially if a window floats from one screen to the  
other. Therefor a
> window would be assigned to more than one screen at some point in time. 
>
> Am I missing something?
>
> BTW, I wonder wether DPS supports multiheading by itself. If no  
multiheading is
> supported by the backend then a window has to be drawn on both  
screens manually
> which may force a duplication of the window object (off screen  
buffers...). Does
> anybody know how this is handled on OPENSTEP?

(Did read the start of the thread, so sorry if I duplicate some info)

All this IIRC. Most of the behavior was not documented, so I may be  
wrong (was a long time ago)

There was only one offscreen buffer for each window. This offscreen  
buffer don't have to match the depth of the screen. (For instance, a  
normal grayscale window always had its backing store as 2 bits, even  
if the screen was 12bits. This is why OPENSTEP worked on small  
configurations)

The most troublesome case was when a window had a depth superior  
than the one of the screen it was drawn to (the AppKit made its best  
to prevent this from occuring, ie: limiting a window offscreen buffer  
to 12 bits if the screen was 12 bits, or to 2 bits on a mono  
screen). In that case there was a need of real-time dithering when  
drawing the window. The worst case happened in dual headed, in  
particular with a NeXTdimension box, where windows were often 24 bits  
depth, and windows got slow as hell when crossing the border. There  
was an option so windows had their depth (ie backing store) decreased  
when they were completely on a lower depth screen. This is still in  
the OS X Server docs:

----
setDynamicDepthLimit:

- (void)setDynamicDepthLimit:(BOOL)flag

Sets whether the receiver changes its depth to match the depth of  
the screen that it's on, or the depth of the deepest screen when it  
spans multiple screens. If flag is YES, the depth limit depends on  
which screen the receiver is on. If flag is NO, the receiver uses  
either its preset depth limit or the default depth limit. A  
different, and nondynamic, depth limit can be set with the  
setDepthLimit: method.
----

Request more info if I am not clear enough in my explanations.

Cheers,

--fred



reply via email to

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