From a76f2897143e3c428ea5e106c023105270b7ed0c Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Thu, 26 Nov 2015 14:22:07 +0100 Subject: Initialize function tables without QGuiApplication QImage can be used without QGuiApplication, but wihout QGuiApplication the accelerated methods would not be used. This patch changes the initialization of the QtGui function tables to happen in static object constructors on QtGui load, instead of in the QGuiApplication init. Change-Id: Ib58982fbc50fd79122352d021d93a3c99aca5043 Reviewed-by: Erik Verbruggen Reviewed-by: Gunnar Sletta --- src/gui/painting/qdrawhelper.cpp | 17 ++++++++++++++++- src/gui/painting/qdrawhelper_p.h | 2 -- 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'src/gui/painting') diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 5854008ea3..8f5eb4d095 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -6328,7 +6328,7 @@ void qt_memfill32(quint32 *dest, quint32 color, int count) template const uint *QT_FASTCALL convertA2RGB30PMFromARGB32PM_sse4(uint *buffer, const uint *src, int count, const QPixelLayout *, const QRgb *); #endif -void qInitDrawhelperAsm() +static void qInitDrawhelperFunctions() { #ifdef __SSE2__ qDrawHelper[QImage::Format_RGB32].bitmapBlit = qt_bitmapblit32_sse2; @@ -6523,4 +6523,19 @@ void qInitDrawhelperAsm() #endif // QT_COMPILER_SUPPORTS_MIPS_DSP || QT_COMPILER_SUPPORTS_MIPS_DSPR2 } +extern void qInitBlendFunctions(); +class DrawHelperInitializer { +public: + DrawHelperInitializer() + { + // Set up basic blend function tables. + qInitBlendFunctions(); + // Set up architecture optimized methods for the current machine. + qInitDrawhelperFunctions(); + } +}; + +// Ensure initialization if this object file is linked. +static DrawHelperInitializer drawHelperInitializer; + QT_END_NAMESPACE diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h index 1d70477051..1ff19f4e04 100644 --- a/src/gui/painting/qdrawhelper_p.h +++ b/src/gui/painting/qdrawhelper_p.h @@ -213,8 +213,6 @@ struct Operator }; }; -void qInitDrawhelperAsm(); - class QRasterPaintEngine; struct QSolidData -- cgit v1.2.3