From 53b3a0572242d0a425e74848afba1293f195d29b Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Fri, 2 Oct 2009 10:31:39 +1000 Subject: Fix support for 32-bit PowerVR screens with QGraphicsView When QGLWidget was used as a viewport for QGraphicsView, it was still treating the window surface as RGB16. Use the screen's actual pixel format. Also ensure that PvrEglWindowSurface::image() returns a non-null QImage if the drawable hasn't been created yet. Reviewed-by: trustme --- .../gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.cpp b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.cpp index 3698afd..afee77e 100644 --- a/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.cpp +++ b/src/plugins/gfxdrivers/powervr/pvreglscreen/pvreglwindowsurface.cpp @@ -157,18 +157,21 @@ QImage PvrEglWindowSurface::image() const void *data = pvrQwsGetRenderBuffer(drawable); if (data) { return QImage((uchar *)data, pvrRect.width, pvrRect.height, - pvrQwsGetStride(drawable), QImage::Format_RGB16); + pvrQwsGetStride(drawable), screen->pixelFormat()); } } - return QImage(); + return QImage(16, 16, screen->pixelFormat()); } QPaintDevice *PvrEglWindowSurface::paintDevice() { - // Return a dummy paint device because the widget itself - // cannot be painted to this way. + QGLWidget *glWidget = qobject_cast(window()); + if (glWidget) + return glWidget; + + // Should be a QGLWidget, but if not return a dummy paint device. if (!pdevice) - pdevice = new QImage(50, 50, QImage::Format_RGB16); + pdevice = new QImage(50, 50, screen->pixelFormat()); return pdevice; } -- cgit v0.12