[haiku-appserver] Re: investigating some bugs

  • From: "Stephan Assmus" <superstippi@xxxxxx>
  • To: haiku-appserver@xxxxxxxxxxxxx
  • Date: Mon, 28 Mar 2005 17:14:56 +0200 CEST

Hi Adi,

> > but the 
> > clipping of the views they contain seems to be wrong. At least I 
> > don't 
> > see these views draw correctly, with the result being pretty much 
> > the 
> > same wether my Painter driver is used or the ViewDriver. See src/
> > tests/
> > servers/app/windows. After I added more stuff there, I started to 
> > see 
> > bits of drawing way outside the windows too.
> 
>       I think this is your fault. :-P
>       I don't know if I can help with this one...

As I wrote above, the results are the same with your original 
ViewDriver and the Painter based implementation. I have investigated a 
little further and I'm relatively sure that the problem is in the 
clipping and invalidation of the views. It looks like issues with 
converting the clipping regions between differnet levels of layers 
(parent<->child). At first I thought that the update message was not 
carried out correctly by the client window (and there seems to be 
something wrong there as well, because parent views draw over child 
views (in the rare cases when they do draw something)). So I commented 
out the app_server side blanking with the view color, but that doesn't 
show the view contents either. Views simply don't draw themselfs (or 
only tiny bits of them), or they have the wrong clipping region applied 
to them. Here are some suggestions: The DisplayDriver expects all 
drawing and of course also clipping to be in screen coordinates. So 
make sure that all drawing commands that arrive at the level of the 
DisplayDriver are consistently in screen coordinates. As I said, the 
results are the same with the original DisplayDriver implementation and 
my implementation. I can easily change the implementation to take into 
account the "origin" of the DrawData, should this make the 
implementation easier, but the coordinates of the drawing commands and 
the clipping must be consitent in the same coordinate system (local or 
world).

Best regards,
-Stephan

Other related posts: