[haiku-appserver] Re: Be's BView and BGLView (and BDirectWindow?) clipping info is faulty

  • From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
  • To: haiku-appserver@xxxxxxxxxxxxx
  • Date: Thu, 07 Apr 2005 19:38:30 +0200 CEST

"Rudolf" <drivers.be-hold@xxxxxxxxxxxx> wrote:
> > I cannot confirm this. The [1] array at the end of a structure is 
> > often used to indicate that the structure itself has a non 
> > specified 
> > length. 
> OK, so that's OK then :)

It should be, at least :-))

> > the clipping info. In BeUAE I used this to copy the clipping info 
> > and 
> > it worked fine:
> > 
> >     fClipListCount = info->clip_list_count;
> >     if (fClipListCount > MAX_CLIP_LIST_COUNT)
> >             fClipListCount = MAX_CLIP_LIST_COUNT;
> > 
> >     memcpy(fClipList, info->clip_list, fClipListCount * 
> > sizeof(clipping_rect));
> 
> Yep: tried that as well. Nogo!

Which is very strange!

> That BeUAE: is that a GLView thing?

No, just a BDirectWindow - the views in it shouldn't really matter; you 
just need them to get proper input messages in case for a direct 
window.

> > Since the clipping info is specified in screen coordinates, I would 
> > find it very odd if a BMenuBar (which is just a view) would mess 
> > the 
> > clipping up, but who knows.
> It's faulty. Maybe I'd better recheck if it's screen coordinates 
> then: 
> could be relative to left-top as well. But it's faulty.

Okay.
Have a look at the /boot/optional/sample-code/game_kit/Chart sample 
(also available as a demo application). It doesn't look like there is 
anything odd there (ChartWindow::SwitchContext()).

> > IIRC there is also a stars demo that uses both, a BMenuBar and a 
> > direct window - maybe that can give us a clue.
> Maybe. But I expect we must conclude BWindowScreen is OK but BGLView 
> is 
> not at best. I can image the top-offset existing especially for BGL 
> view BTW: I guess it's not that common (or possible at all?) that a 
> DirectWindow has a menu?
> (again: I'm new at this..)

Actually, I remembered wrong: the Chart demo doesn't have a menu bar, 
although it does have something similar. A BDirectWindow can have views 
like any other window - it essentially is exactly like any other 
window. It only gets direct information on how to access the screen 
buffer, including the clipping rects.
You have to make sure that the part of the window you want to update 
directly is not drawn over by a view, ie. that view shouldn't draw at 
all (by using a transparent view color).

> Really: I spent a lot of time on BGLView now :-/
> Thanks anyway..

Hope that helps. What I don't understand yet, what makes BGLView 
special? It should only be the GL context that it has plus the backing 
buffer, right?

> PS: Textures up and running already: driver state is now active 
> rendering :) (acc func's still turned off though: as they are not yet 
> OK it seems)
> Damn: the suspense is killing me :)

Hehe - sounds very nice, though :-))

Bye,
   Axel.


Other related posts: