[haiku-appserver] Re: update code.
- From: "Stephan Assmus" <superstippi@xxxxxx>
- To: haiku-appserver@xxxxxxxxxxxxx
- Date: Thu, 31 Mar 2005 01:21:56 +0200 CEST
Hey Adi,
> > For me they do, but I have not checked in the changes you told me
> > to
> > do. Like ignore all DrawData->clipreg. :-)
>
> Aha, please try now, with both ConstrainClippingRegion
> implementations.
Yeah, the clipping region of a View seems to be enforced now. So far so
good. But some problems remain. I think what I wrote earlier about the
app_server not drawing with the ViewColor() prior to Draw() being
called is not correct. The problem must have another cause. But get
your well deserved sleep first! :-) app_server works already much
better.
> Hm...
>
> From Accelerant.h:
> typedef struct {
> uint16 src_left; /* guaranteed constrained to virtual width and
> height */
> uint16 src_top;
> uint16 dest_left;
> uint16 dest_top;
> uint16 width; /* 0 to N, where zero means one pixel, one means
> two
> pixels, etc. */
> uint16 height; /* 0 to M, where zero means one line, one means two
> lines, etc. */
> }
>
> typedef void (*screen_to_screen_blit)(engine_token *et, blit_params
> *list, uint32 count);
>
>
> Seems to me one can move 'n' rectangles to whatever distinct
> destination it wishes.
Ok, you're absolutely right about that. But notice how you cannot tell
the Accelerant about any clipping region? That's because the app_server
has made sure that the rects to be moved actually make sense. In other
words it's the rects that remain *after* clipping has already been
applied. Now, there is no problem to apply the clipping inside the
DisplayDriver implementation. BUT app_server needs to make sure that
the view requesting the CopyBits() gets invalidated whereever there
were no contents on screen before the blit. That is something the
DisplayDriver cannot do for app_server.
Same goes for the other function with blitting all those regions. If it
can be assumed by the DisplayDriver, that the regions are preprocessed,
so that they a) don't overlap (so that the same area doesn't get moved
twice or more), and b) that the destination rects don't overlap for the
different offsets that they may have, this function could be
accelerated 3 times. If those requirements cannot be guaranteed, then
indeed, your implementation is the fail save one. However, it would
draw areas on screen, which would have to be redrawn by the views
anyhow. Maybe I find some time to illustrate the problem. I understand
perfectly well what you guys had in mind when designing this function,
however, I'm saying it is not going to visually work without some
additional precautions.
Best regards,
-Stephan
- Follow-Ups:
- [haiku-appserver] Re: update code.
- From: Adi Oanca
- References:
- [haiku-appserver] Re: update code.
- From: Adi Oanca
Other related posts:
- » [haiku-appserver] update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- » [haiku-appserver] Re: update code.
- [haiku-appserver] Re: update code.
- From: Adi Oanca
- [haiku-appserver] Re: update code.
- From: Adi Oanca