View Single Post
Old 03-30-2021, 12:35 PM   #5
gavine99
Junior Member
 
Join Date: Nov 2020
Posts: 4
Default I've found a kind-of fix for this

After a brief look at the code today I found a way to work-around this issue but be warned it means more CPU usage by the displayLinkManager process when moving the mouse around (not at rest). This is because the fix causes marking of the full screen as dirty when the mouse moves instead of just drawing over the old cursor and drawing the new cursor. It didn't make much difference on my machine in normal circumstances but if you're short on cpu you might notice the difference. YMMV.

Here's the relevant code in 1.7.0 evdi driver for interest sake;
if (evdi->cursor_events_enabled)
evdi_painter_send_cursor_move(evdi->painter, evdi->cursor); <---- the more efficient, but broken, cursor move method
else
evdi_mark_full_screen_dirty(evdi); <---- the less efficient way but it isn't broken

To fix...
In a shell;
* cat /sys/devices/platform/evdi.0/cursor_events
* If a 1 is returned then;
* sudo echo 0 > /sys/devices/platform/evdi.0/cursor_events
* Test your cursor near the edge of the screen where it was having issues. Not fixed? Undo the change by;
* sudo echo 1 > /sys/devices/platform/evdi.0/cursor_events
Do the same procedure for /sys/devices/platform/evdi.2/cursor_events, /sys/devices/platform/evdi.3/cursor_events... and so on and so forth. I had evdi.[0-3] devices - you may have more less.

For me it was setting my /sys/devices/platform/evdi.1/cursor_events to 0 which stopped the mouse flashing etc on both my external screens (my laptop screen never experienced the issue).

Hope this helps.

Last edited by gavine99; 03-30-2021 at 12:38 PM.
gavine99 is offline   Reply With Quote