
|
[haiku-appserver]
||
[Date Prev]
[04-2005 Date Index]
[Date Next]
||
[Thread Prev]
[04-2005 Thread Index]
[Thread Next]
[haiku-appserver] Re: Going "back" & clipping
- From: "Stephan Assmus" <superstippi@xxxxxx>
- To: haiku-appserver@xxxxxxxxxxxxx
- Date: Wed, 20 Apr 2005 12:08:41 +0200 CEST
I think that either way is fine. If you can make it so that everything
is blitted which can be blitted, fine with me.
What makes CopyBits() and probably CopyRegionList() different from the
rest of the drawing methods in DisplayDriver, is that partial
invalidation of some views might have to be triggered. This is
obviously something that DisplayDriver cannot be responsible for taking
care of. So I would argue, that the correct clipping for these two
methods should be done *before* calling CopyBits()/CopyRegionList().
For the simple reason that these calculations have to be done anyways
to know which parts of layers need a possible redraw. Therefor I think
that the CopyBits() and CopyRegionList() should have to do no further
clipping, except for maybe watching out if copying out of frame buffer
bounds (just as an exercise in writing error resistent code).
This argument is independent of wether right/center aligned views are
blitted or not. It doesn't make DisplayDriver code more complicated.
That being said, I'm more for "having a correct implementation" first,
and "worrying about the speed" later. By correct implementation in this
context, I'm talking about triggering all the right regions to be
invalidated and taking care of moving and resizing layers other than
the front most layer (!).
As for doing the in-place copy of all the rects in a BRegion in the
correct order, I have already contacted Stefano in privat (because he
wrote BRegion). If anybody else has an idea for a fast topological
sorting algorithm, feel free to speak up! :-) To learn more about the
problem, read the extensive comment above src/servers/app/drawing/
DisplayDriverPainter::CopyRegionList().
Best regards,
-Stephan
|

|