diff options
author | Sami Lempinen <sami.lempinen@nokia.com> | 2011-10-14 06:18:15 (GMT) |
---|---|---|
committer | Sami Lempinen <sami.lempinen@nokia.com> | 2011-10-14 06:18:15 (GMT) |
commit | 01057867c3e5e97fc8b58601e3cee6dfef0df205 (patch) | |
tree | 96125e444f32691c73bc87f0bc938993b7737899 /src/gui/image | |
parent | 138b9d7349d5daa1808d8bd891c5ecf817f98c52 (diff) | |
parent | 77563a2e63562e4e010e53dd79a707d9d7ed3f3d (diff) | |
download | Qt-01057867c3e5e97fc8b58601e3cee6dfef0df205.zip Qt-01057867c3e5e97fc8b58601e3cee6dfef0df205.tar.gz Qt-01057867c3e5e97fc8b58601e3cee6dfef0df205.tar.bz2 |
Merge remote-tracking branch 'qt/4.8'
Diffstat (limited to 'src/gui/image')
-rw-r--r-- | src/gui/image/qnativeimage.cpp | 12 | ||||
-rw-r--r-- | src/gui/image/qpixmap_x11.cpp | 18 |
2 files changed, 19 insertions, 11 deletions
diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp index aebcbaf..e1382dd 100644 --- a/src/gui/image/qnativeimage.cpp +++ b/src/gui/image/qnativeimage.cpp @@ -153,7 +153,12 @@ QImage::Format QNativeImage::systemFormat() QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /* isTextBuffer */, QWidget *widget) : xshmimg(0), xshmpm(0) { - if (!X11->use_mitshm) { + QX11Info info = widget->x11Info(); + + int dd = info.depth(); + Visual *vis = (Visual*) info.visual(); + + if (!X11->use_mitshm || format != QImage::Format_RGB16 && X11->bppForDepth.value(dd) != 32) { image = QImage(width, height, format); // follow good coding practice and set xshminfo attributes, though values not used in this case xshminfo.readOnly = true; @@ -163,11 +168,6 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format,bool /* return; } - QX11Info info = widget->x11Info(); - - int dd = info.depth(); - Visual *vis = (Visual*) info.visual(); - xshmimg = XShmCreateImage(X11->display, vis, dd, ZPixmap, 0, &xshminfo, width, height); if (!xshmimg) { qWarning("QNativeImage: Unable to create shared XImage."); diff --git a/src/gui/image/qpixmap_x11.cpp b/src/gui/image/qpixmap_x11.cpp index 77c2a2a..0e1401c 100644 --- a/src/gui/image/qpixmap_x11.cpp +++ b/src/gui/image/qpixmap_x11.cpp @@ -897,12 +897,20 @@ void QX11PixmapData::fromImage(const QImage &img, } ) break; - case BPP24_888: // 24 bit MSB + case BPP24_888: CYCLE( - for (int x=0; x<w; x++) { - *dst++ = qRed (*p); - *dst++ = qGreen(*p); - *dst++ = qBlue (*p++); + if (QSysInfo::ByteOrder == QSysInfo::BigEndian) { + for (int x=0; x<w; x++) { + *dst++ = qRed (*p); + *dst++ = qGreen(*p); + *dst++ = qBlue (*p++); + } + } else { + for (int x=0; x<w; x++) { + *dst++ = qBlue (*p); + *dst++ = qGreen(*p); + *dst++ = qRed (*p++); + } } ) break; |