There has been one thing I have been reminded of this last week about mouse cursors. They can be incredibly sluggish when dealing with remote sessions. During PortICA development we saw this nature and initially were a bit confused about what could be causing this. It’s more noticeable on slower connections. If you move the mouse around, it becomes jerky and very difficult to control. The cursor only flashes on the screen at fixed intervals and it is hard to guess where it is going to end up.
The culprit was something called cursor shadowing. If cursor shadowing is turned on (which is the default) then the cursor forms a shadow over whatever it is currently on top of. In theory this is done to make it easier for the user to locate the mouse cursor since it has a built in shadow around it that would help match it against any background. However, in practice, the shadow is so subtle that it would be difficult to recognize as even being there. I bet if you stare at your mouse cursor right now you might just notice that it has a shadow for the very first time.
Personally I don’t find the shadow to be a huge advantage. In the case of remote access, it is a huge hindrance. The reason is fairly simple. The cursor shadowing is achieved using what is known as alpha blending. The technique calls for mixing the image with the background in a way that blends more than overlaps. It is a technology that has been around since the 70’s and has finally hit widespread acceptance in Windows with Vista. This kind of transparency can be very useful but with the cursor shadow (pointer shadow from the mouse control panel) the cost is too high compared to the benefit.
In remote sessions, it was decided long ago by Citrix that the local mouse pointer should be used instead of showing the mouse pointer being drawn from the server. This was a very wise decision and it gave the user the responsiveness he or she wanted. It was still possible to have a delay with response time but at least the mouse acted as it always had. Cursor shadowing changes the rules. Because the local pointer cannot be blended with the remote desktop, the code has to revert to using the server’s mouse pointer. This brings back all the ugliness of having to draw the mouse pointer on the server. Essentially it is impossible to use a slow or high latency connection with cursor shadowing turned on. Well, not impossible but very frustrating.
Citrix software automatically turns off cursor shadowing for Citrix Presentation Server. The same is not true for Microsoft Remote Desktop. The same was also true for the early versions of PortICA. It makes such a bigger difference to turn it off. Just this last week I was using RDP to some XP systems that still had it turned on. I couldn’t understand why the mouse pointer was so bad until I recognized the symptoms and went hunting for turning off the cursor shadowing.
Go into the Control Panel and select the mouse applet. You should see this after selecting the Pointers tab:
At the bottom, you will notice the “Enable pointer shadow”.
It should look like this:
Click OK and you are done. I bet you probably won’t even notice a difference with how it looks. If you are using XP remotely with “Remote Desktop” I would bet you’ll notice a performance difference.
As an added tip, if you are using something like VMware Workstation inside an RDP session, be sure to switch it off there as well. Basically I think you should turn it off everywhere regardless of how it is being used. It is one of those kind of features that doesn’t give much bang for the buck and yet you get so much back when you turn it off.
I tried searching for some kind of support decision on this from Microsoft but could not Google a decent enough answer. Good luck to you. I hope that your mouse cursors will now perhaps be a bit more well behaved.