-
Notifications
You must be signed in to change notification settings - Fork 386
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
viogpudo: fix HWCursor display issues #990
base: master
Are you sure you want to change the base?
Conversation
Please use a full real name in sign off. |
`SetPointerShape` calls `CreateCursor` which copies the shape data to the host via `TransferToHost2D`. Then it calls `QueueCursor` which sets the cursor on the host. There is a race condition between these two functions because `TransferToHost2D` uses the `m_CtrlQueue` and `QueueCursor` uses the `m_CursorQueue`. Whenever the cursor queue is handled first by QEMU, the host attempts to set the cursor image by reading the buffer that is still empty because `TransferToHost2D` had not yet executed. The fix here is to wait on `TransferToHost2D` to complete before calling `QueueCursor`. We achieve this by waiting on an KEVENT and moving some code around in the IRQ handler to set this event after recieving the response for the transfer command. Signed-off-by: Joelle van Dyne <[email protected]>
QEMU checks `cursor->resource_id` and if it is 0, then the cursor will be hidden. Signed-off-by: Joelle van Dyne <[email protected]>
Signed-off-by: Joelle van Dyne <[email protected]>
b65e494
to
51ed2b3
Compare
@YanVugenfirer Done |
@vrozenfe Can you please take a look? |
@osy
All the best, |
@vrozenfe can I merge? |
Wait a second, @kostyanf14 , is "WDDM RotateBlt Window GDI (WoW64)" a new failure? |
@YanVugenfirer, it fail sometimes not always |
So complex? Can you try this? |
@osy Do you want to try and fix the PR? |
Sorry I've been very busy with other things. |
This addresses two issues with HWCursor support:
After fixing these issues, it should be good to enable HWCursor by default.