Only update rendered cursor when requested
diff --git a/common/rfb/VNCSConnectionST.cxx b/common/rfb/VNCSConnectionST.cxx
index 64adda1..ea50f83 100644
--- a/common/rfb/VNCSConnectionST.cxx
+++ b/common/rfb/VNCSConnectionST.cxx
@@ -997,8 +997,7 @@
   Region req;
   UpdateInfo ui;
   bool needNewUpdateInfo;
-  bool drawRenderedCursor;
-  RenderedCursor *cursor;
+  const RenderedCursor *cursor;
 
   updates.enable_copyrect(cp.useCopyRect);
 
@@ -1064,21 +1063,21 @@
   // with the update region, we need to draw the rendered cursor regardless of
   // whether it has changed.
 
-  drawRenderedCursor = false;
+  cursor = NULL;
   if (needRenderedCursor()) {
     Rect renderedCursorRect;
 
+    cursor = server->getRenderedCursor();
+
     renderedCursorRect
-      = server->renderedCursor.getEffectiveRect()
-         .intersect(req.get_bounding_rect());
+      = cursor->getEffectiveRect().intersect(req.get_bounding_rect());
 
     if (renderedCursorRect.is_empty()) {
-      drawRenderedCursor = false;
-    } else if (updateRenderedCursor) {
-      drawRenderedCursor = true;
-    } else if (!ui.changed.union_(ui.copied)
+      cursor = NULL;
+    } else if (!updateRenderedCursor &&
+               ui.changed.union_(ui.copied)
                .intersect(renderedCursorRect).is_empty()) {
-      drawRenderedCursor = true;
+      cursor = NULL;
     }
 
     // We could remove the new cursor rect from updates here.  It's not clear
@@ -1086,7 +1085,7 @@
     // the same bit of screen twice, but we have the overhead of a more complex
     // region.
 
-    //if (drawRenderedCursor) {
+    //if (cursor) {
     //  updates.subtract(renderedCursorRect);
     //  updates.getUpdateInfo(&ui, req);
     //}
@@ -1095,13 +1094,9 @@
     updateRenderedCursor = false;
   }
 
-  if (ui.is_empty() && !writer()->needFakeUpdate() && !drawRenderedCursor)
+  if (ui.is_empty() && !writer()->needFakeUpdate() && !cursor)
     return;
 
-  cursor = NULL;
-  if (drawRenderedCursor)
-    cursor = &server->renderedCursor;
-
   writeRTTPing();
 
   encodeManager.writeUpdate(ui, server->getPixelBuffer(), cursor);