Moved from bug 3065, comment #6: Mouse cursors do not work properly against a Windows 7 system. Probably broken for 2008r2 as well, but that machine doesn't have the fancy cursor theme.
Seeing this on Windows 2012 as well. You randomly get the hand or I cursor when you should be getting the arrow. Also, the cursors are graphically wrong.
Verified that there are no problems with mouse cursor using 2012 R2
I retested against a Windows 2012 server and the mouse pointer worked out of the box with upstream compiled rdesktop and a build from ThinLinc. Testing with fedora shipped 1.8.1 it shows teh problem agaon. Something in rdesktop upstream has fixed this problem.
After a svn bisect commit r1766 is the change that fixes the broken mouse pointer. However its far from related to the mouse pointer handling and havent identified why this commit fixes the problem.
Upstream commit r1786 introduced the problem with mouse cursors. The changes to logon packet (size) affects the mouse cursors so there is definitely something wrong with later packets going over the protocol. We need to verify the size of logon packet and check subsequent packets to the logon packet for errors.
The main problem are in rdp_out_unistr, which writes unicode string and null terminate into STREAM. MS rdp specs says that TS_INFO_PACKET string excludes null terminator and string in the TS_EXTENDED_INFO_PACKET should include the null terminator. Both uses the same encoding function rdp_out_unistr() which should take an argument and handle the two cases.
(In reply to comment #6) > The main problem are in rdp_out_unistr, which writes unicode string and null > terminate into STREAM. > > MS rdp specs says that TS_INFO_PACKET string excludes null terminator and > string in the TS_EXTENDED_INFO_PACKET should include the null terminator. Both > uses the same encoding function rdp_out_unistr() which should take an argument > and handle the two cases. This is not correct. After further investigation, the logon packet is correctly constructed. This issue is related to perf flags. Windows 2012 seeems to have cursor shadow enabled by default, were Windows 2012r2 does not. This is the actual problem and adding no_cursor_shadow flag solves this issue.
(In reply to comment #7) > (In reply to comment #6) > > The main problem are in rdp_out_unistr, which writes unicode string and null > > terminate into STREAM. > > > > MS rdp specs says that TS_INFO_PACKET string excludes null terminator and > > string in the TS_EXTENDED_INFO_PACKET should include the null terminator. Both > > uses the same encoding function rdp_out_unistr() which should take an argument > > and handle the two cases. > > This is not correct. After further investigation, the logon packet is correctly > constructed. This issue is related to perf flags. > > Windows 2012 seeems to have cursor shadow enabled by default, were Windows > 2012r2 does not. This is the actual problem and adding no_cursor_shadow flag > solves this issue. Upstream commit r1792 adds no_cursor_shadow flag to default perf flags.
However the real issue is that fancy cursor themes using (alpha) are not supported by rdesktop. rdesktop hardwires all colour pointer PDU's to 24 data.
(In reply to comment #9) > However the real issue is that fancy cursor themes using (alpha) are not > supported by rdesktop. rdesktop hardwires all colour pointer PDU's to 24 data. Created bug #5020 for adding support for mouse cursor themes using alpha.
Works fine using build 4344.