diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-10 16:20:20 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-10 16:20:20 (GMT) |
commit | 3dc18b19ee2a02b93cc509a9162bf0a3900c6fd0 (patch) | |
tree | 7865bc34d720c17d68f84570be836cc52e8fb5aa /src/gui | |
parent | 72cc21e597f2d77ea1be3c1a3f7df36d8909d2fc (diff) | |
parent | e78274d5f8c0eb5c10b9b58e069b90b6475c6f71 (diff) | |
download | Qt-3dc18b19ee2a02b93cc509a9162bf0a3900c6fd0.zip Qt-3dc18b19ee2a02b93cc509a9162bf0a3900c6fd0.tar.gz Qt-3dc18b19ee2a02b93cc509a9162bf0a3900c6fd0.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2:
Prevented crash in GL window surface when deleting native child widgets.
Fix a regression where setPreferredSize(QSize(100, -1)) did not work.
Force MeeGo touch to use native graphics system for now.
Fixed compiler warnings in meego graphics system helper.
Added meego graphics system helper to features/qt.prf and syncqt.
Use QFactoryLoader to ensure we get the correct graphics system plugin.
Updated license headers for meego graphics system helper.
Fixed compilation and API of meego graphics system helper.
Renamed meego graphics system helper files.
Imported meego graphics system helper sources.
Updated license headers for meego graphics system.
Fixed compilation and API of meego graphics system.
Renamed meego graphics system files.
Imported meego graphics system sources.
Fix cache_cost initialization of QFontEngineMultiWin
Fix crash when using unprintable chars in QStaticText
Don't waste memory on the share widget in the GL window surface.
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/egl/qeglcontext_p.h | 3 | ||||
-rw-r--r-- | src/gui/graphicsview/qgraphicslayoutitem.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qapplication.cpp | 24 | ||||
-rw-r--r-- | src/gui/painting/qgraphicssystem_runtime_p.h | 1 | ||||
-rw-r--r-- | src/gui/text/qfontengine_win.cpp | 3 | ||||
-rw-r--r-- | src/gui/text/qstatictext.cpp | 3 |
6 files changed, 33 insertions, 3 deletions
diff --git a/src/gui/egl/qeglcontext_p.h b/src/gui/egl/qeglcontext_p.h index cae8164..5bc8f09 100644 --- a/src/gui/egl/qeglcontext_p.h +++ b/src/gui/egl/qeglcontext_p.h @@ -107,6 +107,9 @@ private: static QEglContext *currentContext(QEgl::API api); static void setCurrentContext(QEgl::API api, QEglContext *context); + + friend class QMeeGoGraphicsSystem; + friend class QMeeGoPixmapData; }; QT_END_NAMESPACE diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp index 3707591..634f68c 100644 --- a/src/gui/graphicsview/qgraphicslayoutitem.cpp +++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp @@ -234,7 +234,7 @@ void QGraphicsLayoutItemPrivate::setSize(Qt::SizeHint which, const QSizeF &size) if (userSizeHints) { if (size == userSizeHints[which]) return; - } else if (!size.isValid()) { + } else if (size.width() < 0 && size.height() < 0) { return; } diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index 82dd83a..e99f6ca 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -94,6 +94,10 @@ #include <stdlib.h> +#if defined(Q_WS_X11) && !defined(QT_NO_EGL) +#include <link.h> +#endif + #include "qapplication_p.h" #include "qevent_p.h" #include "qwidget_p.h" @@ -768,6 +772,13 @@ QApplication::QApplication(int &argc, char **argv, Type type , int _internal) : QCoreApplication(*new QApplicationPrivate(argc, argv, type)) { Q_D(QApplication); d->construct(); QApplicationPrivate::app_compile_version = _internal;} +#if defined(Q_WS_X11) && !defined(QT_NO_EGL) +static int qt_matchLibraryName(dl_phdr_info *info, size_t, void *data) +{ + const char *name = static_cast<const char *>(data); + return strstr(info->dlpi_name, name) != 0; +} +#endif /*! \internal @@ -785,6 +796,19 @@ void QApplicationPrivate::construct( // the environment variable has the lowest precedence of runtime graphicssystem switches if (graphics_system_name.isEmpty()) graphics_system_name = QString::fromLocal8Bit(qgetenv("QT_GRAPHICSSYSTEM")); + +#if defined(Q_WS_X11) && !defined(QT_NO_EGL) + if (graphics_system_name.isEmpty()) { + bool linksWithMeeGoTouch = dl_iterate_phdr(qt_matchLibraryName, const_cast<char *>("libmeegotouchcore")); + bool linksWithMeeGoGraphicsSystemHelper = dl_iterate_phdr(qt_matchLibraryName, const_cast<char *>("libQtMeeGoGraphicsSystemHelper")); + + if (linksWithMeeGoTouch && !linksWithMeeGoGraphicsSystemHelper) { + qWarning("Running non-meego graphics system enabled MeeGo touch, forcing native graphicssystem\n"); + graphics_system_name = QLatin1String("native"); + } + } +#endif + // Must be called before initialize() qt_init(this, qt_appType #ifdef Q_WS_X11 diff --git a/src/gui/painting/qgraphicssystem_runtime_p.h b/src/gui/painting/qgraphicssystem_runtime_p.h index 0232241..421fbeb 100644 --- a/src/gui/painting/qgraphicssystem_runtime_p.h +++ b/src/gui/painting/qgraphicssystem_runtime_p.h @@ -177,6 +177,7 @@ private: friend class QRuntimePixmapData; friend class QRuntimeWindowSurface; + friend class QMeeGoGraphicsSystem; }; QT_END_NAMESPACE diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp index 82de0d5..ef1b504 100644 --- a/src/gui/text/qfontengine_win.cpp +++ b/src/gui/text/qfontengine_win.cpp @@ -1296,6 +1296,7 @@ QFontEngineMultiWin::QFontEngineMultiWin(QFontEngineWin *first, const QStringLis engines[0] = first; first->ref.ref(); fontDef = engines[0]->fontDef; + cache_cost = first->cache_cost; } void QFontEngineMultiWin::loadEngine(int at) @@ -1317,6 +1318,8 @@ void QFontEngineMultiWin::loadEngine(int at) engines[at] = new QFontEngineWin(fam, hfont, stockFont, lf); engines[at]->ref.ref(); engines[at]->fontDef = fontDef; + + // TODO: increase cost in QFontCache for the font engine loaded here } QT_END_NAMESPACE diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp index b950b13..7a5dec4 100644 --- a/src/gui/text/qstatictext.cpp +++ b/src/gui/text/qstatictext.cpp @@ -448,7 +448,6 @@ namespace { currentItem.font = ti.font(); currentItem.charOffset = m_chars.size(); currentItem.numChars = ti.num_chars; - currentItem.numGlyphs = ti.glyphs.numGlyphs; currentItem.glyphOffset = m_glyphs.size(); // Store offset into glyph pool currentItem.positionOffset = m_glyphs.size(); // Offset into position pool currentItem.useBackendOptimizations = m_useBackendOptimizations; @@ -463,8 +462,8 @@ namespace { ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions); int size = glyphs.size(); - Q_ASSERT(size == ti.glyphs.numGlyphs); Q_ASSERT(size == positions.size()); + currentItem.numGlyphs = size; m_glyphs.resize(m_glyphs.size() + size); m_positions.resize(m_glyphs.size()); |