[haiku-appserver] Re: invalidation again
- From: Adi Oanca <adioanca@xxxxxxxxxxxxxx>
- To: haiku-appserver@xxxxxxxxxxxxx
- Date: Fri, 15 Apr 2005 13:57:17 +0300
Hi Stephan,
Stephan Assmus wrote:
> Hi,
>
> I was trying to make BView::Invalidate() work. I'm giving up, because I
> don't understand the code.
If you spend some time on it, you will. Same happen to me when I came
to work on app_server. :-) But I can understand you as the code is more
complex now.
> I have an idea what the problem is, but I
> have no idea where to fix it. The triggering of update requests works
> for moving windows arround. So I thought it must be simple to make
> BView::Invalidate() work.
It is simple. If it doesn't work, that's another problem...
GetRootLayer()->GoRedraw(cl, reg) should've worked in this case.
> However, there is no one central mechanism,
> while it should be the same thing.
There is a central mechanism:
RootLayer::GoInvalidate()
RootLayer::GoRedraw()
from a tread != RootLayer's one
RootLayer::invalidate_layer()
RootLayer::redraw_layer()
from inside RootLayer's thread.
> Instead, there is horrible
> commenting, bad naming of member variables and functions. A ton of
> similar functions that seem to be ment for the same thing. Refactoring
> is desperately needed.
Yes, I agree.
> A little commenting about the *structure* of the
> code and the interacting parts would help too.
When I'll have time I'll make a diagram about how region rebuilding
and region invalidation works.
You'll see that's it's pretty simple to grab by someone with your
experience.
[ The main idea is that all region rebuilding and canvas cleaning is done from
one thread only: RootLayer's one. If you want to understand how that works
start with RootLayer::invalidate_layer() and go down until you hit Painter
:-) ]
> Adi, if you find some time, it would be really nice if you could make
> BView::Invalidate() work. I would do it, but I'm just clueless.
OK, I will see what's wrong during this weekend.
> Since this is an open source project, we all benefit from people
> digging in and trying to help. So code should be written with that in
> mind.
We don't even have an alpha going, this is still early stage
development, specifications are not complete and thus code is not that
clear until a certain point in time when a cleaning is required.
Clipping code still has some things left to be done, like BView origin
support(not that big of a deal), dragging transparent surfaces, etc.
I have started a big cleanup in window management code (RooLayer,
WinBorder, Workspace, ServerWindow partially) and I'm almost finished,
but I have not yet reached the clipping and update code.
bye,
Adi.
- Follow-Ups:
- [haiku-appserver] Re: invalidation again
- From: Stephan Assmus
- References:
- [haiku-appserver] invalidation again
- From: Stephan Assmus
Other related posts:
- » [haiku-appserver] invalidation again
- » [haiku-appserver] Re: invalidation again
- » [haiku-appserver] Re: invalidation again
- » [haiku-appserver] Re: invalidation again
- » [haiku-appserver] Re: invalidation again
- » [haiku-appserver] Re: invalidation again
- » [haiku-appserver] Re: invalidation again
- » [haiku-appserver] Re: invalidation again
- [haiku-appserver] Re: invalidation again
- From: Stephan Assmus
- [haiku-appserver] invalidation again
- From: Stephan Assmus