summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms/vnc/qvncscreen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/platforms/vnc/qvncscreen.cpp')
-rw-r--r--src/plugins/platforms/vnc/qvncscreen.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/plugins/platforms/vnc/qvncscreen.cpp b/src/plugins/platforms/vnc/qvncscreen.cpp
index 29b5dda77d..b2ed898dcc 100644
--- a/src/plugins/platforms/vnc/qvncscreen.cpp
+++ b/src/plugins/platforms/vnc/qvncscreen.cpp
@@ -40,6 +40,7 @@
#include "qvncscreen.h"
#include "qvnc_p.h"
#include <QtPlatformSupport/private/qfbwindow_p.h>
+#include <QtPlatformSupport/private/qfbcursor_p.h>
#include <QtGui/QPainter>
@@ -55,6 +56,8 @@ QVncScreen::QVncScreen(const QStringList &args)
QVncScreen::~QVncScreen()
{
+ if (clientCursor)
+ delete clientCursor;
}
bool QVncScreen::initialize()
@@ -67,7 +70,7 @@ bool QVncScreen::initialize()
QFbScreen::initializeCompositor();
QT_VNC_DEBUG() << "QVncScreen::init" << geometry();
- mCursor = new QFbCursor(this);
+ disableClientCursor();
switch (depth()) {
case 32:
@@ -104,6 +107,27 @@ QRegion QVncScreen::doRedraw()
return touched;
}
+void QVncScreen::enableClientCursor()
+{
+ delete mCursor;
+ mCursor = 0;
+ clientCursor = new QVncClientCursor(vncServer);
+}
+
+void QVncScreen::disableClientCursor()
+{
+ if (vncServer && clientCursor) {
+ delete clientCursor;
+ clientCursor = 0;
+ }
+ mCursor = new QFbCursor(this);
+}
+
+QPlatformCursor *QVncScreen::cursor() const
+{
+ return mCursor ? static_cast<QPlatformCursor *>(mCursor) : static_cast<QPlatformCursor *>(clientCursor);
+}
+
// grabWindow() grabs "from the screen" not from the backingstores.
// In linuxfb's case it will also include the mouse cursor.
QPixmap QVncScreen::grabWindow(WId wid, int x, int y, int width, int height) const