summaryrefslogtreecommitdiffstats
path: root/src/gui
Commit message (Collapse)AuthorAgeFilesLines
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-22497-10813/+10813
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* A step out from Harfbuzz (reduce dependency)Konstantin Ritt2012-09-224-64/+45
| | | | | | | | | | | | | | | | | Introduce QCharAttributes and use it instead of HB_CharAttributes everywhere in Qt (in Harfbuzz, the HB_CharAttributes is only used in the text segmentation algorithm which has been moved from HB to Qt (well, most of it)). Rename some members to better reflect their meaning, remember to keep HB_CharAttributes in sync with QCharAttributes. Also replace HB_ScriptItem with a (temporary) QUnicodeTools::ScriptItem struct that will be replaced with a more efficient/friendly solution a bit later. The soft hyphen and the mandatory break detection has been factored out of the default text breaking algorithm to a higher level in order to refactor the QCharAttributes bitfields and to optimize the implementation for the common case. Change-Id: Ieb365623ae954430f1c8b2dfcd65c82973143eec Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fixed multiple modal windows from all blocking each other.Samuel Rødal2012-09-211-0/+2
| | | | | | | | | | | | A modal window in front in the modal window list should never be blocked by a modal window further back in the list. This was taken care of in QGuiApplicationPrivate::isWindowBlocked(), we just need to make sure it gets called when a new modal window gets shown so that its blocked status is up to date. Task-number: QTBUG-27206 Change-Id: I590f1715e66067edb178081352636f34fe54a885 Reviewed-by: Tim Jenssen <tim.jenssen@digia.com>
* Fixed outline / fill inconsistencies in raster paint engine.Samuel Rødal2012-09-203-20/+2
| | | | | | | | | | We did coordinate rounding of the fill in the raster paint engine to match how drawLine_midpoint_i rendered lines. With the new cosmetic stroker in 4.8 this rounding is not needed anymore. Task-number: QTBUG-26013 Change-Id: Ibe86fa809276c8e7988d393a67e772d57b9a4799 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Fixed inconsistent rounding of square cap pens.Samuel Rødal2012-09-201-10/+10
| | | | | | | | | | | A horizontal line should round up at the same time as a vertical line with square cap, when rendering at subpixel coordinates. Thus, the special casing in the cosmetic stroker of offsetting by half a pixel should be for flat caps instead of for square caps. Task-number: QTBUG-26013 Change-Id: Ic09249337f814c7de95a17976ec9e651561a744b Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* Do not refer to non-existant member in QSurfaceFormat docsLaszlo Agocs2012-09-201-2/+2
| | | | | | | | | | Sample buffers should be enabled automatically under the hood when samples is > 0 and therefore the getter and setter are gone. Change-Id: I9cd6438e89060f901598a6aacacb99362fac4718 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Remove qUpperBound usages from qtbaseGiuseppe D'Angelo2012-09-194-6/+7
| | | | | | | | | Replace them with std::upper_bound; this allows for deprecation of qUpperBound. Change-Id: Idef01d2228b9a70eee3d52931d7aedb5bb6ba902 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Remove qLowerBound usages from qtbaseGiuseppe D'Angelo2012-09-194-11/+18
| | | | | | | | | Replace them with std::lower_bound; this allows for deprecation of qLowerBound. Change-Id: I536e7338eb85ea6c7c1a5bf23121292767927e0b Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Fix mapping to/from global coordinates for child/embedded windows.Miikka Heikkinen2012-09-183-2/+36
| | | | | | | | | | | | | | | | | | | | | QWidget's mapToGlobal() and mapFromGlobal() functions assumed that if the widget reports it's a window or if it has no parent widget, it must be a top level window whose coordinates are in global coordinates. This is not true for child QWindows or embedded native windows (QAxWidgets). Changed the logic for mapping coordinates to use equivalent methods from QWindow if widget has a window handle, and changed QWindow's methods to map coordinates using native methods if window is embedded. Also fixed newly failing accessibility autotest. The geometry related failures there popped up because now the position of the rect returned by accessible interface is actually correct while widget geometry still reports position 0,0 before widget has shown up. Task-number: QTBUG-26436 Change-Id: I658fafd0ce01eb1604ba255efeeba3073ca0189f Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* X11 (xcb) support for QScreen-per-output and runtime changesShawn Rutledge2012-09-182-3/+19
| | | | | | | | | | | | | QScreen has notifiers for its properties, but they were not being emitted when one changes the resolution or arrangement of individual outputs, e.g. via xrandr. Also there should be one QScreen per "output", e.g. laptop LCD + external monitor means 2 QScreens which will be siblings, rather than just 1 QScreen to represent the whole desktop. Change-Id: Ia61bbc5e6a3506f813ab11f87c03d14cf7f4ce85 Reviewed-by: Uli Schlachter <psychon@znc.in> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* gui/opengl: Fix missing or improper include guard in headersSergio Ahumada2012-09-1513-38/+42
| | | | | | | | Use an include guard in headers to ensure the header is not included more than once. Make the header guard match its file name. Change-Id: I29b41e9d33e4ea17165f44c49de0a963574dd809 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Mark (non-public API's) ctor's as explicitSergio Ahumada2012-09-145-5/+5
| | | | | | | | | Make C++ class constructors that can be used with only one required argument 'explicit' to minimize wrong use of the class. Change-Id: I12ad5b6eb1794108c6b7464a2573e84068733b03 Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* remove usage of QT_MAKEDLL in favor of the new QT_STATIC macroJoerg Bornemann2012-09-141-5/+5
| | | | | | Change-Id: I411cab0d92a8cad6b4f3676afe5cee050c4b789b Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Remove deprecated QInputMethod::visible()Pekka Vuorela2012-09-142-11/+0
| | | | | | | | Replaced with isVisible() Change-Id: Id47683954e89c53e73fc5171977609de7f1b4245 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix compilation on HarmattanSimon Hausmann2012-09-141-0/+9
| | | | | | | | | | | The GLES2 libraries on Harmattan do not provide a typedef for GLChar. Work around it here by adding it. The Kkronos headers specify GLChar as a typedef to char, so if an implementation already provides it, then this doesn't do any harm. Change-Id: I0848b72b81fcc602dc8d9eecefdacb5436163040 Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix regression in QTextDocument::toHtml() with font pixel sizeEskil Abrahamsen Blomfeldt2012-09-121-0/+1
| | | | | | | | | | | | Introduced by 2e0003eda4783f69a40fb4b31e7084c761d9640d. We were missing a attributesEmitted=true which caused the output from toHtml() to sometimes be invalid when using pixel sizes to specify the font size. Task-number: QTBUG-25778 Change-Id: Ied61fcaef425a590d71c0b52292ac676cb88ba52 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Jiang Jiang <gzjjgod@gmail.com>
* qpa: extend drawPixmap capabilitiesJulien Brianceau2012-09-122-9/+56
| | | | | | | | | Extend drawPixmap capabilities for qpa through new ExtendedPixmapCapability QBlittable flag and add related implementation in DirectFB platform. Change-Id: If5436e16bfb37bf081bf864cad73a5e97394df8c Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Doc: Fix misc. doc errors and document undocumented functionsaavit2012-09-124-72/+187
| | | | | | Change-Id: I0c1e0a36ee37d5a8f3741f0405f63f9b26967f32 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com>
* qpa: add non-opaque fill supportJulien Brianceau2012-09-113-13/+66
| | | | | | | | | | Add non-opaque fill support for qpa through new QBlittable flag "AlphaFillRectCapability" and add related implementation in DirectFB qpa platform. Change-Id: I863a270e24c96c432489099a34dc1f3a2be52280 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Added link to the OpenGL window example from the QOpenGLContext docs.Samuel Rødal2012-09-111-0/+3
| | | | | Change-Id: I650c61422485dfcb2fcc661a839294aa98b18e80 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Add links to raster and opengl window examples in the QWindow docs.Samuel Rødal2012-09-111-0/+8
| | | | | Change-Id: I4d4ddffd6b8aa682b516b55ed2c5e71585d83bcf Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Improved the QBackingStore documentation.Samuel Rødal2012-09-111-1/+14
| | | | | | | | Added links to the example and added some explanation of when QBackingStore might be useful. Change-Id: Iee19c4fdfc5c27ac9b559c9df428d83d302f3928 Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
* Move gui example doc example images.Frederik Gladhorn2012-09-112-0/+0
| | | | | Change-Id: I01e0c3d51bcb01c66a3f6c7b2ba95f0c9999f4cb Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Add TableModelChange event for accessibility.Frederik Gladhorn2012-09-111-0/+40
| | | | | | Change-Id: I4ff892c076b516cee0f6605705854ee8828d4363 Reviewed-by: José Millán Soto <fid@gpul.org> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Remove deprecated inputItem and inputWindow from QInputMethodPekka Vuorela2012-09-113-79/+3
| | | | | | | | Interfaces introduced and deprecated during Qt5 development. Change-Id: I804a02df8c4a03ed6558f4a86375f97d09513d5c Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Doc: Centralize more common settings in 1 global qdocconf.Casper van Donderen2012-09-111-36/+1
| | | | | | | | | | All qdocconf settings that should be used by all Qt modules are now in qt-module-defaults.qdocconf. Change-Id: I2a0315a55db3fcbb0160c4392d2da98611043d83 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com> Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Avoid duplicate setPen() in PDF when reusing QPrinterEskil Abrahamsen Blomfeldt2012-09-111-0/+1
| | | | | | | | | | | | The simplePen property was not reset when reusing the QPrinter, thus we would output two identical setPen() commands in the PDF making the autotest that compares the results fail. Task-number: QTBUG-27171 Change-Id: I601042ec59e45ef72a56f230f6112a91a259b4a5 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix QT_NO_SYSTEMTRAYICON build.Sérgio Martins2012-09-111-0/+4
| | | | | | | | | The ifndef was added to the header but was missing in the implementation file. Change-Id: I25111b34b9c087465306ef81c23d6667257b5e71 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Rename QPaintDevice::init() to initPainter()Richard Moore2012-09-103-3/+3
| | | | | | | | The old name was too generic and was likely to cause warnings in user code. Change-Id: I7126d8fe89a394cd8388af5a030961af7b69c741 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove temporary constructor used to make qreal->float changeSean Harmer2012-09-092-12/+0
| | | | | | | | | | | | The constructor being removed was needed to allow the CI to work until commit e88f56afc2c889eede8c719b9ce7b621f49a96f9 in qtdeclarative was merged. This completes the move from qreal->float in QtGui/math3d. Change-Id: I2afd108bd9398a1e6925b2885a90dbbad4d25669 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Removing duplicate includesSergio Ahumada2012-09-097-14/+0
| | | | | | | Do not include a header more than once Change-Id: Ia2e5d66e72988ad833cf5177a3f8aa988bf510e9 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* don't use QT_{BEGIN,END}_INCLUDE_NAMESPACE needlesslyOswald Buddenhagen2012-09-081-5/+1
| | | | | | | | these macros behave counter-intuitively, so don't use them unless the code structure really suggests their use. Change-Id: I58213b39f8a98e4368901217fac14ca49c28b8cf Reviewed-by: hjk <qthjk@ovi.com>
* Check for C++ operators that should be 'const'Sergio Ahumada2012-09-081-1/+1
| | | | | | | | Make sure all C++ class comparison operators are const. Change-Id: Ib4a66f2afe6c62f437dae1ecde94287d3db8442d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: David Faure <faure@kde.org>
* Use QStringList::join(QChar) overload where applicable [QtGui]Marc Mutz2012-09-071-1/+1
| | | | | | | | | | This is an automated change performing the following replacements: join\("(.)"\) -> join('\1') join\(QLatin1String\("(.)"\)\) -> join(QLatin1Char('\1')) join\(QStringLiteral\("(.)"\)\) -> join(QLatin1Char('\1')) Change-Id: Id8d43c1b1ca9cd3aa0b4eedca6709b6287a9bc98 Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Make gui/math3d classes use float rather than qrealSean Harmer2012-09-0713-626/+624
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This corrects the mismatch between using floats for internal storage and qreal in the API of QVector*D which leads to lots of implicit casts between double and float. This change also stops users from being surprised by the loss of precision when using these classes on desktop platforms and removes the need for the private constructors taking a dummy int as the final argument. The QMatrix4x4 and QQuaternion classes have been changed to use float for their internal storage since these are meant to be used in conjunction with the QVector*D classes. This is to prevent unexpected loss of precision and to improve performance. The on-disk format has also been changed from double to float thereby reducing the storage required when streaming vectors and matrices. This is potentially a large saving when working with complex 3D meshes etc. This also has a significant performance improvement when passing matrices to QOpenGLShaderProgram (and QGLShaderProgram) as we no longer have to iterate and convert the data to floats. This is an operation that could easily be needed many times per frame. This change also opens the door for further optimisations of these classes to be implemented by using SIMD intrinsics. This needs to be applied in conjunction with https://codereview.qt-project.org/#change,33548 Task-number: QTBUG-21035 Task-number: QTBUG-20661 Change-Id: I9321b06040ffb93ae1cbd72fd2013267ac901b2e Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fix compilation error of qcursor_qpa.cpp with QT_NO_CURSOR.Sergio Martins2012-09-071-0/+2
| | | | | | | | | | | ChangeId Ia69f37343f95772e934eab1cd806bd54cbdbbe51 added two new methods to QCursor but didn't update the fake cursor. Qt5's build still fails with QT_NO_CURSOR somewhere in QT_METATYPE_INTERFACE_INIT(Type), but that's another story. Change-Id: Ib0c706faf78e547d93a1128085e440fe5d1a5e9b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Fix crash when QTextLayout::setAdditionalFormats is called with ranges with ↵Olivier Goffart2012-09-071-2/+4
| | | | | | | | | | negative length That can be reproduced in Qt Creator when deleting code. Task-number: QTBUG-27140 Change-Id: Ida7177612653f10e5d866bf9a422c71c632f4eb3 Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
* Move enums that was part of the Qt namespace to qnamespace.hJan-Arve Saether2012-09-071-8/+0
| | | | | | | | | | | | | | | | | This caused some headache wrt documentation, since in order to generate the proper documentation for the qt namespace qdoc also needed to parse the headers of gui, which breaks cross-module linking. (This is because qdoc will actually generate two almost identical nodes in the code tree; one from the header files from gui and another from the index file of gui). The best fix would maybe be to make it part of QAbstractTextDocumentLayout, but that will break source compat. Change-Id: I34e94d05fa4bec3034778d1f1cc0e53d0625e1ab Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* Fix g++ compiler warnings.Friedemann Kleint2012-09-071-1/+3
| | | | | | | | Unused variables, unsigned comparison DWORD >= 0 is always true, format string. Change-Id: I9f0a20392e262b2542fb23ea4f513e4c4e354b68 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Doc: Missing documentation added and doc errors fixed.aavit2012-09-057-13/+132
| | | | | | Change-Id: I573bf9622e38b54f2cb8c32fd402d477a1deb5c2 Reviewed-by: Qt Doc Bot <qt_docbot@qt-project.org> Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com>
* Use true and false in preference to TRUE and FALSESergio Ahumada2012-09-051-1/+1
| | | | | | | | The TRUE and FALSE macros are obsolete and should be replaced with true and false (all lower case) respectively. Change-Id: Iee352e8173500683e6319be0abbf5bacf29016e0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Optimize QTextLayout/QTextEngine usage outside of QTextDocument.Milian Wolff2012-09-052-15/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When QTextLayout is used in a QTextDocument, many code paths use special caches and thus greatly outperform the raw QTextLayout version that operates directly on a QString. This patch brings some of these optimizations also to the raw version. We now also use a QFormatCollection in such cases and enable the functionality of QTextEngine::indexAdditionalFormats() and QTextEngine::resolveAdditionalFormats(). Thanks to that, we can greatly speed up QTextEngine::format(), which now uses an amort O(1) hash table lookup instead of a O(N) linear search. The added benchmark shows a gain in the order of one magnitude: ./tst_bench_QText formattedLayout:long-many before applying the patch: 378.19 msecs per iteration (total: 37,820, iterations: 100) after applying the patch: 25.80 msecs per iteration (total: 2,580, iterations: 100) Note: This change is source-incompatible for applications using the private QTextEngine API. Task-number: QTBUG-8389 Change-Id: Ifcf7a8902a394428979ea06a6d955f886ee739c7 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove custom sort implementation in QTriangulator in favour of std::sort.Robin Burchell2012-09-041-126/+3
| | | | | | | | | | | | | | qSort has terrible performance, especially on mostly-sorted input, which is presumably why a custom implementation was created. However, std::sort has much better performance than qSort in many cases. Benchmarking shows that std::sort beats out the custom sort by a very narrow margin (21-22ms for qSort, 14-15ms for sort, 14ms for std::sort) in a simple benchmark of sorting. Change-Id: If7e57fdfaf98e741d1621969461537c82f9169fe Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Doc: fix yet more errors reported by qdocaavit2012-09-045-17/+90
| | | | | Change-Id: I67ac081ce95235912784bbbc347dd8f80fdebbde Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com>
* Fix doc errors in QScreen.Jason Barron2012-09-031-15/+13
| | | | | | | | | - Ensure all args are documented - Remove signals from \sa tag - Ensure return values are documented Change-Id: I1db111d082ee47f046598695bc3fa53d67798333 Reviewed-by: aavit <qt_aavit@ovi.com>
* Private slots should be named starting with _q_Sergio Ahumada2012-09-036-15/+16
| | | | | | | | | | | | | This is to reduce the risk of collisions with signals/slots in user classes q_updateFocusObject(QObject *object) => _q_updateFocusObject(QObject *object) q_checkFocusObject(QObject *object) => _q_checkFocusObject(QObject *object) q_connectFocusObject() => _q_connectFocusObject() emitActivated(QPlatformSystemTrayIcon::ActivationReason) => _q_emitActivated(QPlatformSystemTrayIcon::ActivationReason) Change-Id: I148913f1e24a80fe5cacfd737d1b455b805cfced Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* qpa: incorrect rendering when stretching and clippingJulien2012-09-031-5/+17
| | | | | | | | | | | When using QBlittable with SourceOverScaledPixmapCapability, rendering through clipAndDrawPixmap is incorrect when stretching: source pixmap rectangle has to be corrected using scaling factor. Change-Id: I7026987f5c47094a4578c0da4ccb67a0241d64bd Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com> Reviewed-by: Julien BRIANCEAU <jbrianceau@nds.com> Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
* Doc: Fix docbuild when not using -developer-build.Casper van Donderen2012-09-011-2/+2
| | | | | | | | https://codereview.qt-project.org/#change,33974 only works in the case of a developer build. Not in a normal prefix build. Change-Id: I3a3e5029cefaa9f83c5deb71665f0efa9d812819 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Moved gui example documentation to the proper location.Samuel Rødal2012-09-013-303/+8
| | | | | | | Gui example documentation should be in examples/gui/doc/ Change-Id: I3cd196a2bb5d76b6e275f336b29a2ad1811159dd Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Doc: Fix some documentation issues.Kim Motoyoshi Kalland2012-08-314-14/+93
| | | | | Change-Id: I21bba7b8a1808cf214cae1b7d3b6b5e41e36e3ba Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>