-
-
Notifications
You must be signed in to change notification settings - Fork 51
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
cursor repeat #81
Comments
This has been a reported problem on the c++ driver implementations as well (also the example driver project). Unfortunately, it's currently unknown how to solve it. If anyone knows the cause, feel free to add them here. OP: Can you add reproducible steps? |
You will get double cursor on Parsec or similar remote desktop apps when the hardware cursor is not supported in your virtual display. One cursor on local screen and another one on remote client. To solve it, just call IddCxMonitorSetupHardwareCursor in your
Here's the C++ example: void IndirectMonitorContext::AssignSwapChain(IDDCX_SWAPCHAIN SwapChain, LUID RenderAdapter, HANDLE NewFrameEvent)
{
// after successfully assigning swapchain processor
// create an event to get notified new cursor data
HANDLE mouseEvent = CreateEventA(
nullptr, //TODO set proper SECURITY_ATTRIBUTES
false,
false,
"arbitraryMouseEventName");;
// set up cursor capabilities
IDDCX_CURSOR_CAPS cursorInfo = {};
cursorInfo.Size = sizeof(cursorInfo);
cursorInfo.AlphaCursorSupport = true;
cursorInfo.MaxX = 64; //TODO figure out correct maximum value
cursorInfo.MaxY = 64; //TODO figure out correct maximum value
cursorInfo.ColorXorCursorSupport = IDDCX_XOR_CURSOR_SUPPORT_NONE; //TODO play around with XOR cursors
// prepare IddCxMonitorSetupHardwareCursor arguments
IDARG_IN_SETUP_HWCURSOR hwCursor = {};
hwCursor.CursorInfo = cursorInfo;
hwCursor.hNewCursorDataAvailable = mouseEvent; // this event will be called when new cursor data is available
NTSTATUS Status = IddCxMonitorSetupHardwareCursor(
m_Monitor, // handle to the monitor we want to enable hardware mouse on
&hwCursor
);
// handle [Status] error
} |
@nomi-san Thank you very much! I'll try to reproduce this later (along with the fix)! |
Anybody reading this, would you mind testing out this hardware cursor implementation? (note: this release only has a cli. make sure you completely uninstall and remove old driver before installation) (there's a download link for the files under "artifacts") |
I've tested and it works properly.
I've opened a PR to add it to the README #107. |
Perfect! Thanks for testing it |
- add vdd 0.45 download - add nefconw, remove devcon - ref: MolotovCherry/virtual-display-rs#81
Does the program support capturing the mouse / is your mouse captured? |
Not only this program, parsec also does this |
What's the driver's version? |
I tried it on another machine and it worked.I don’t know why this machine still has two cursor.so strange |
Thank you. At this moment I don't know what the problem could be as I can't reproduce it on my end. |
It's strange, the steps are the same, but one works successfully and the other fails.maybe I can reinstall the system on the failed machine and try again. |
I found that if I use the IddSampleDriver virtual monitor, there are two cursors, whether on the desktop or in the game. If I use your virtual monitor, there will be two situations. One is that there will be two cursors on the desktop and the browser (cursor is Native), but there is only one cursor when entering the game (the cursor changes after entering the game) |
When I create and open a virtual screen and use remote software streaming connection, two cursors appear on my screen, one on the controlled side and one on the master side, and there is a slight ghost as I move. How to solve this problem? Thank you very much!
The text was updated successfully, but these errors were encountered: