From 0d0a39583946e83e8b9498736960ac2525cff209 Mon Sep 17 00:00:00 2001 From: Frans Englich Date: Thu, 24 Sep 2009 17:08:37 +0200 Subject: Optimization: only bitblt if blitting is enabled. Addresses review comment. --- src/gui/kernel/qapplication_s60.cpp | 55 +++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 9d21c6c..1a8017b 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -738,38 +738,41 @@ void QSymbianControl::Draw(const TRect& r) const return; if (engine->type() == QPaintEngine::Raster) { - QS60WindowSurface *s60Surface = static_cast(qwidget->windowSurface()); - CFbsBitmap *bitmap = s60Surface->symbianBitmap(); + if(qwidget->d_func()->extraData()->disableBlit) { + + QS60WindowSurface *s60Surface = static_cast(qwidget->windowSurface()); + CFbsBitmap *bitmap = s60Surface->symbianBitmap(); #ifdef DEBUG_QSYMBIANCONTROL - const TDisplayMode displayMode = bitmap->DisplayMode(); - qDebug() << "QSymbianControl::Draw [" << this << "]" - << "mode " << displayMode; - - const TUint32 *address = bitmap->DataAddress(); - const int bitmapWidth = bitmap->SizeInPixels().iWidth; - const int bitmapHeight = bitmap->SizeInPixels().iHeight; - - for(int i=0; i<10 and i*10DisplayMode(); + qDebug() << "QSymbianControl::Draw [" << this << "]" + << "mode " << displayMode; + + const TUint32 *address = bitmap->DataAddress(); + const int bitmapWidth = bitmap->SizeInPixels().iWidth; + const int bitmapHeight = bitmap->SizeInPixels().iHeight; + + for(int i=0; i<10 and i*10GetPixel(color, TPoint(i*10, i*10)); - qDebug() << " " << i*10 << " : " << color.Red() << color.Green() << color.Blue() << color.Alpha(); - } + for(int i=0; i<10 and i*10GetPixel(color, TPoint(i*10, i*10)); + qDebug() << " " << i*10 << " : " << color.Red() << color.Green() << color.Blue() << color.Alpha(); + } #endif - CWindowGc &gc = SystemGc(); - if (qwidget->d_func()->isOpaque) - gc.SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); - - if(!qwidget->d_func()->extraData()->disableBlit) + CWindowGc &gc = SystemGc(); + if (qwidget->d_func()->isOpaque) + gc.SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha); + } + else gc.BitBlt(r.iTl, bitmap, r); + } else { surface->flush(qwidget, QRegion(qt_TRect2QRect(r)), QPoint()); } -- cgit v0.12