[haiku-appserver] Re: GetMouse()

  • From: "Axel Dörfler" <axeld@xxxxxxxxxxxxxxxx>
  • To: haiku-appserver@xxxxxxxxxxxxx
  • Date: Mon, 30 May 2005 17:47:22 +0200 CEST

Adi Oanca <adioanca@xxxxxxxxxxxxxx> wrote:
> Axel D=F6rfler wrote:
> >>    What makes GetMouse() "extreme"=3F
> > Now that you say it - probably nothing. I always think that it 
> > needs to 
> > poll, but instead, it just searches the message queue, or gets the 
> > information from the app=5Fserver directly. What makes GetMouse() 
> > need to 
> > use UpdateIfNecessary() is not GetMouse() itself but the context 
> > it's 
> > usually used in (MouseDown()).
>       I'm not too happy with this method. I think it does not respect
> the logic, in general. I just asked for mouse coordinates, not for a 
> UI
> update. The fact is that I can call GetMouse() from everywhere in 
> window's
> context and not actually wanting to update the UI.

GetMouse() does not ask for an UI update either, it just makes sure 
they are processed when there is an =5FUPDATE=5F message in the queue.

>       IMO, in R2 this method should only return mouse location and
> buttons. What do you think=3F Also I think we should remove support for
> synchronous controls in R2. Opinions=3F

I'm not sure about this. We should investigate this with every 
application that needs it, and if the same could be achieved in 
asynchronous mode.
What I am sure of, however, is that we should switch to asynchronous 
mode by default, and only allow synchronous mode if specifically asked 

> >>    "I'm still not sure about this method. What I think it should 
> > > do, 
> >>is
> >>process the =5FUPDATE=5F request that is pending in the message queue, 
> >>just
> >>as GetMouse() does, and above that, it should query the server if 
> >>there
> >>still are invalid regions to be updated (regions that became 
> > > invalid
> >>since the server sent the last =5FUPDATE=5F request) and if there are 
> > > do,
> >>get the data from the reply and do a DispatchMessage(updateMsg, 
> > > this)
> >>again."
> > I thought DoUpdate() does that already=3F Or was that only the plan=3F
>       No, no... DoUpdate() calls Draw() methods for every view that's
> inside the invalidated rect.
>       DoUpdate() must not be modified, instead we should ask 
> synchronously
> the server if it has an invalid region to pass to us, and force a 2nd 
> update
> if one supplied. (DoUpdate() still has to be cleaned up. :-) Will do 
> that
> someday)

That would be fine by me, too :-)


Other related posts: