emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: make-pointer-invisible on Windows


From: martin rudalics
Subject: Re: make-pointer-invisible on Windows
Date: Fri, 26 Jun 2015 08:55:26 +0200

> It turns out this has nothing to do with redisplay.  Inserting a
> single character is enough to turn off the mouse pointer with your
> original patch, after removing the call to SET_FRAME_GARBAGED.  The
> problem is that sometimes the effect is far from immediate, you need
> to wait for a second or so.

This explains why I couldn't consistently trigger the misbehavior.

> Looking into this, I concluded that calling SetCursor from the main
> (a.k.a. "Lisp") thread has no effect whatsoever.  For some reason,
> only the input thread can do that.  And it already does, whenever it
> gets an appropriate message.  So all we have to do in the main thread
> is send that message to the input thread.  This is what the first hunk
> below, to be applied on top of your patch, does.

Seems to work here.

> Well, actually, it _is_ related, albeit to a different aspect of this.
> The code that turns the mouse pointer back on when mouse moves also
> runs in the main thread.  So whenever the main thread is busy with
> some long calculation, or waits for some synchronous system call, we
> cannot rely on this mechanism to timely turn the pointer back on.  But
> the input thread can very well do that, so the second hunk of changes
> below makes that happen.
>
> So please install your changes, followed by mine (or tell me to do the
> latter).  Thanks for working on this.

All changes should be in place by now.

> As for not redrawing the frame during these synchronous operations, I
> will try to see why it happens (strangely, I only see it on XP, but
> not on Windows 7).

This would be fine.

Thanks for the fixes, martin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]