From 6f64bfa654fb7e20bb75ec3b0544b81482babb44 Mon Sep 17 00:00:00 2001 From: Shawn Rutledge Date: Fri, 10 Feb 2017 13:56:58 +0100 Subject: fix VNC platform plugin build on big-endian machines Task-number: QTBUG-58734 Change-Id: I3e44ee4be5003acaba2f1b8ed2658a3ff1bd700e Reviewed-by: Lars Knoll Reviewed-by: Dmitry Shachnev --- src/plugins/platforms/vnc/qvncclient.cpp | 6 +++--- src/plugins/platforms/vnc/qvncscreen.cpp | 7 ++++++- src/plugins/platforms/vnc/qvncscreen.h | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/plugins/platforms/vnc/qvncclient.cpp b/src/plugins/platforms/vnc/qvncclient.cpp index dae3e83..58dcfc9 100644 --- a/src/plugins/platforms/vnc/qvncclient.cpp +++ b/src/plugins/platforms/vnc/qvncclient.cpp @@ -142,7 +142,7 @@ void QVncClient::convertPixels(char *dst, const char *src, int count) const case 16: { quint16 p = *reinterpret_cast(src); #if Q_BYTE_ORDER == Q_BIG_ENDIAN - if (swapBytes) + if (m_swapBytes) p = ((p & 0xff) << 8) | ((p & 0xff00) >> 8); #endif r = (p >> 11) & 0x1f; @@ -484,7 +484,7 @@ void QVncClient::setPixelFormat() m_sameEndian = (QSysInfo::ByteOrder == QSysInfo::BigEndian) == !!m_pixelFormat.bigEndian; m_needConversion = pixelConversionNeeded(); #if Q_BYTE_ORDER == Q_BIG_ENDIAN - m_swapBytes = qvnc_screen->swapBytes(); + m_swapBytes = server()->screen()->swapBytes(); #endif } } @@ -639,7 +639,7 @@ bool QVncClient::pixelConversionNeeded() const return true; #if Q_BYTE_ORDER == Q_BIG_ENDIAN - if (qvnc_screen->swapBytes()) + if (server()->screen()->swapBytes()) return true; #endif diff --git a/src/plugins/platforms/vnc/qvncscreen.cpp b/src/plugins/platforms/vnc/qvncscreen.cpp index 34def45..64f1bc0 100644 --- a/src/plugins/platforms/vnc/qvncscreen.cpp +++ b/src/plugins/platforms/vnc/qvncscreen.cpp @@ -43,6 +43,7 @@ #include #include +#include #include @@ -172,14 +173,18 @@ QPixmap QVncScreen::grabWindow(WId wid, int x, int y, int width, int height) con } #if Q_BYTE_ORDER == Q_BIG_ENDIAN -bool QVNCScreen::swapBytes() const +bool QVncScreen::swapBytes() const { + return false; + + /* TODO if (depth() != 16) return false; if (screen()) return screen()->frameBufferLittleEndian(); return frameBufferLittleEndian(); + */ } #endif diff --git a/src/plugins/platforms/vnc/qvncscreen.h b/src/plugins/platforms/vnc/qvncscreen.h index 785abd6..0b42c3c 100644 --- a/src/plugins/platforms/vnc/qvncscreen.h +++ b/src/plugins/platforms/vnc/qvncscreen.h @@ -73,7 +73,7 @@ public: void clearDirty() { dirtyRegion = QRegion(); } #if Q_BYTE_ORDER == Q_BIG_ENDIAN - bool swapBytes() const + bool swapBytes() const; #endif QStringList mArgs; -- cgit v1.0-4-g1e03