How come it used to work before? (or didn't it, and we just didn't notice?)
Apparently I must be blind. Frames for every BView are updated with Stephan's code which handles B_VIEW_RESIZED/MOVED messages. This is
for the clipping code that is in place. Only the new clipping code had this problem.
Sorry, for bothering you. ;-)
I was wondering all along while reading the messages... :-) The "big" message was sent for _all_ views having been resized on the server side. The checking for the B_FRAME_EVENTS was done on the client side with my code. In another words, the old clipping code had the same problem, and I solved this with the "one message for all invalid views" thing. When you redesigned the clipping code, you probably were not aware of my changes for the old code. :-)
I was aware of your changes, :-) I just didn't noticed they are sent for all views that had their frame changed. I thought they were sent only for view that had B_FRAME_EVENTS flag.
Anyways, nice this is solved now.
Yup. But related to this I think we have another problem: Messages being dropped when client's queue is full. This is a very serious problem! We didn't thought the app_server with this aspect in mid. If an _UPDATE_ message is dropped, we are in big trouble. This happened to me a few times with the new clipping code because of sending a lot of B_VIEW_MOVED/RESIZED messages. I think this happened to someone else also, because of a timeout value != 0 in SendMessageToClient() and I don't remember adding that there. Also, another problem is with the message that updates frame coordinates, the very message we talk about in this thread. There would be big discrepancies between the server and the client if such a message is dropped. Nasty bugs would appear. Don't you agree?
But something else... about the scrolling problem.
Funny you mention this now. I wasn't aware of this problem until last night when I chose to go to bed instead of investigate the problem. :-) Good thing I did so, because you already investigated the issue. :-)
First I thought it was a problem in the new clipping code but when I tested with the old code and saw the same problem I had a relief. :-P
I'm pretty sure that I know what the reason is. (IIRC, I have written about this before.) The problem is that you can Scroll() an area on the client side, which contains dirty regions. In another words, the scrolling when it is performed on the server side needs to scroll the dirty region as well.
Aha, OK. It seams you are right. I'll test this when I get home and tell you the results.
Sorry for the lengthy mail. I have not slept much, and I am too tired to compact my mail.... I hope you forgive me.
:-) No problem! It was a good read! ;-)
And I do hope I could shed some light into what I think is the scrolling problem.
Oh, you did! Thank you.