Cygwin X server accepts xfixes version 5.0 but doesn't handle xcb_xfixes_hide_cursor

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Cygwin X server accepts xfixes version 5.0 but doesn't handle xcb_xfixes_hide_cursor

Cygwin list mailing list
I'm building an XCB-based application that uses xcb_xfixes_hide_cursor. The
X server reports back version 5.0 in xcb_fixes_query_version_reply and
accepts xcb_xfixes_hide_cursor requests, but does not hide the cursor. When
omitting the xcb_fixes_query_version operation, the xcb_xfixes_hide_cursor
is (properly) rejected. Compiling and running the same program under
Fedora, the cursor is hidden when running natively. When running an ssh
remote xterm to Fedora, the hide_cursor again does nothing.

The associated X11/extensions/Xfixes.h XFixesHideCursor() works
identically. It fails to do anything but does not report any error
indication.

When testing this on Fedora, I also noticed that xterm hides the cursor in
exactly the same manner I want for my application, and doesn't on Cygwin
(where it always remains visible.) That is, typing hides the cursor and
cursor movement shows it again. This should eliminate the need for a test
case which, because of all the ancillary setup needed, would be quite large.

Possibly the simplest fix would be to properly report back the version of
Xfixes you actually support, document that restriction at least in the
include file, and reject the Xfixes extension requests you don't handle. As
an aside, almost every other X feature I've tried to use has worked
identically on Cygwin and Fedora, usage bugs included.

Note that there is probably a work-around for this missing function by
creating a blank cursor and using that instead of hide_cursor.
--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple
Reply | Threaded
Open this post in threaded view
|

Re: Cygwin X server accepts xfixes version 5.0 but doesn't handle xcb_xfixes_hide_cursor

Jon TURNEY
On 15/10/2020 20:31, Frank Eske via Cygwin wrote:

> I'm building an XCB-based application that uses xcb_xfixes_hide_cursor. The
> X server reports back version 5.0 in xcb_fixes_query_version_reply and
> accepts xcb_xfixes_hide_cursor requests, but does not hide the cursor. When
> omitting the xcb_fixes_query_version operation, the xcb_xfixes_hide_cursor
> is (properly) rejected. Compiling and running the same program under
> Fedora, the cursor is hidden when running natively. When running an ssh
> remote xterm to Fedora, the hide_cursor again does nothing.
>
> The associated X11/extensions/Xfixes.h XFixesHideCursor() works
> identically. It fails to do anything but does not report any error
> indication.
>
> When testing this on Fedora, I also noticed that xterm hides the cursor in
> exactly the same manner I want for my application, and doesn't on Cygwin
> (where it always remains visible.) That is, typing hides the cursor and
> cursor movement shows it again. This should eliminate the need for a test
> case which, because of all the ancillary setup needed, would be quite large.
>
> Possibly the simplest fix would be to properly report back the version of
> Xfixes you actually support, document that restriction at least in the
> include file, and reject the Xfixes extension requests you don't handle. As
> an aside, almost every other X feature I've tried to use has worked
> identically on Cygwin and Fedora, usage bugs included.

There is Windows-specific code in the X server which is supposed to
handle cursor hiding, and it's a bug that it doesn't work.

Thanks for reporting this problem.

> Note that there is probably a work-around for this missing function by
> creating a blank cursor and using that instead of hide_cursor.

You can probably also work around this by using the XWin option
'-swcursor' (requires '-nocompositewm').

--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple