summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-earth-staging into ↵Qt Continuous Integration System2011-07-221-2/+2
|\ | | | | | | | | | | | | master-integration * 'master' of scm.dev.nokia.troll.no:qt/qt-earth-staging: Fix the timeout calculation again.
| * Fix the timeout calculation again.Thiago Macieira2011-07-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | The commit 412ef92162f8874a1585221125c31ef5f8ccc9cb introduced a fix, but the fix was incomplete. Fix it for good. Change-Id: I3e7fbdb294f8e960fbbf2e830790750240ed813a Merge-request: 30 Reviewed-by: Olivier Goffart <olivier.goffart@nokia.com> Reviewed-on: http://codereview.qt.nokia.com/1991 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> (cherry picked from commit 038d7c6c3b9815068e1f5b6df12625181f0313e1)
* | Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-earth-staging into ↵Qt Continuous Integration System2011-07-216-11/+97
|\ \ | |/ | | | | | | | | | | | | | | | | master-integration * 'master' of scm.dev.nokia.troll.no:qt/qt-earth-staging: QNetworkAccessFileBackend: Add warning for file url without scheme. Native memory mapped file support Fix compiler warning Create QScopedResource class
| * Merge remote-tracking branch 'earth-team/master'Olivier Goffart2011-07-206-11/+97
| |\
| | * QNetworkAccessFileBackend: Add warning for file url without scheme.Martin Petersson2011-07-192-7/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | When the scheme is not set for a file we should accept the url but add a warning. The behaviour will change for Qt5 in which we should no longer accept the url if the scheme is not set. Task-number: QTBUG-17731 Reviewed-by: Markus Goetz
| | * Native memory mapped file supportShane Kearns2011-06-283-4/+67
| | | | | | | | | | | | | | | Task-number: QT-5026 Reviewed-by: mread
| | * Fix compiler warningShane Kearns2011-06-271-0/+1
| | | | | | | | | | | | Reviewed-by: Trust Me
| | * Create QScopedResource classShane Kearns2011-06-271-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has similar purpose to QScopedPointer, and is implemented using it. Symbian has many resource classes, e.g. RFile, RSocket, which behave as value types, but require the Close() member function to be called to release the server side resource owned by the handle. This class can be used to give exception safety, for example when trying to add a resource class to a container std::bad_alloc could be thrown. By assigning the resource to QScopedResource when it is opened, and calling take() after it is added to the container, it is ensured that the resource will be closed if an exception is thrown. Equivalent to the symbian pattern: CleanupClosePushL(file); container.AppendL(file); //transfers ownership, may leave CleanupStack::Pop(file); With STL exceptions we can do: QScopedResource ptr(file); container.append(file); //transfers ownership, may throw ptr.take; Reviewed-By: mread
* | | Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-doc-staging into ↵Qt Continuous Integration System2011-07-21180-9904/+19
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | master-integration * 'master' of scm.dev.nokia.troll.no:qt/qt-doc-staging: Removed demo files accidentally introduced by commit 3abaecc3. Doc: Added a link to the How to Learn Qt document. Doc: Fixed shader program snippet. Doc: Fixed page step sizes in a snippet for QAbstractScrollArea. Doc: Moved general notes about character conversion.
| * \ \ Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-doc-reviewDavid Boddie2011-07-20248-10753/+1890
| |\ \ \
| | * \ \ Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-doc-teamQt Continuous Integration System2011-07-19176-9889/+0
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://scm.dev.nokia.troll.no/qt/qt-doc-team: Removed demo files accidentally introduced by commit 3abaecc3.
| | | * | | Removed demo files accidentally introduced by commit 3abaecc3.David Boddie2011-07-19176-9889/+0
| | | | | | | | | | | | | | | | | | | | | | | | Reviewed-by: Donald Carr
| | * | | | Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-doc-teamQt Continuous Integration System2011-07-1972-864/+1890
| | |\ \ \ \ | | | |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://scm.dev.nokia.troll.no/qt/qt-doc-team: (68 commits) Doc: Added a link to the How to Learn Qt document. Doc: Fixed shader program snippet. Doc: Fixed page step sizes in a snippet for QAbstractScrollArea. Doc: Moved general notes about character conversion. Fix the timeout calculation for futexes in QMutex. namespace fix fix build get rid of unwanted dependencies and unused header includes sync qws_dataDir() with coreapp's internal qws_dataDir() Added Solaris build fix to the changes file. Documentation fix. make argument quoting code on windows less arcane fix argument quoting on windows Fix potential crash when clicking in a text edit Compensate for different rounding rule in CG engine Remove broken link to Symbian.org documentation. Check engine existence before increasing reference count Keep reference count for cached font engines in QTextEngine Optimize text layout. Fix compiler warning in qtextdocument.cpp ...
| | | * | | Doc: Added a link to the How to Learn Qt document.David Boddie2011-07-191-1/+2
| | | | | |
| | | * | | Doc: Fixed shader program snippet.David Boddie2011-07-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-18982 Reviewed-by: Kim Motoyoshi Kalland
| | | * | | Doc: Fixed page step sizes in a snippet for QAbstractScrollArea.David Boddie2011-07-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-20350
| | | * | | Doc: Moved general notes about character conversion.David Boddie2011-07-181-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-20411
| | | * | | Merge branch '4.8' of scm.dev.nokia.troll.no:qt/qtDavid Boddie2011-07-1868-849/+1871
| | | |\ \ \
* | | | \ \ \ Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-fire-staging into ↵Qt Continuous Integration System2011-07-2118-62/+256
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | master-integration * 'master' of scm.dev.nokia.troll.no:qt/qt-fire-staging: Move separator skipping to proper place Skip shaping for hidden line/paragraph separators Support interface orientation for uikit. Add support for opening LinuxInput devices exclusively ('grabbing'). Fixed regression in compilerwarnings. Properly quit the input event thread in the directfb platform plugin. Apply 57993ba7 properly to 4.8 Deprecate some QPixmap functions (marked as obsolete already). Deprecate some functions in QImage (that have been obsolete since 4.1). Add QLocale::toUpper/Lower Fix warning for uninitialized variable
| * \ \ \ \ \ \ Merge remote branch 'review/master' into stagingJiang Jiang2011-07-2018-62/+256
| |\ \ \ \ \ \ \
| | * \ \ \ \ \ \ Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-fire-teamQt Continuous Integration System2011-07-1914-31/+194
| | |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://scm.dev.nokia.troll.no/qt/qt-fire-team: Move separator skipping to proper place Skip shaping for hidden line/paragraph separators Support interface orientation for uikit. Add support for opening LinuxInput devices exclusively ('grabbing'). Fixed regression in compilerwarnings. Properly quit the input event thread in the directfb platform plugin. Apply 57993ba7 properly to 4.8 Deprecate some QPixmap functions (marked as obsolete already). Deprecate some functions in QImage (that have been obsolete since 4.1).
| | | * | | | | | | Move separator skipping to proper placeJiang Jiang2011-07-192-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So that it won't crash some places that requires shaping results. Reviewed-by: TrustMe
| | | * | | | | | | Skip shaping for hidden line/paragraph separatorsJiang Jiang2011-07-191-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since we are not going to draw them in QTextLine::draw either, and shaping them here will cause performance issue on certain systems like Mac OS X 10.7 (most fonts don't have glyph for U+2028, while font fallback handling in Core Text slowed down a bit). Task-number: QTBUG-20252 Reviewed-by: Eskil
| | | * | | | | | | Support interface orientation for uikit.Eike Ziller2011-07-187-19/+155
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rotates app status bar. Adheres to UISupportedInterfaceOrientations and UIInterfaceOrientation.
| | | * | | | | | | Add support for opening LinuxInput devices exclusively ('grabbing').Mirko Vogt2011-07-182-2/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The LinuxInput stack exposes the ioctl EVIOCGRAB which allows LinuxInput devices being opened exclusively ('grabbed'). This patch adds support for configuring how Qt should treat LinuxInput devices (via the 'grab'-argument). By default devices are not grabbed, so not opened exclusively (matches prior behaviour). This however means all input (keystrokes, etc.) is passed to other applications (shells/ttys included) accessing respective device(s) as well. Merge-request: 2637 Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
| | | * | | | | | | Fixed regression in compilerwarnings.Samuel Rødal2011-07-151-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't mark QImageTextKeyLang as deprecated.
| | | * | | | | | | Properly quit the input event thread in the directfb platform plugin.Samuel Rødal2011-07-141-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reviewed-by: Girish Ramakrishnan
| | | * | | | | | | Apply 57993ba7 properly to 4.8Jiang Jiang2011-07-141-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because we have moved alignLine from qtextlayout.cpp to QTextEngine, this patch has to be applied manually. Reviewed-by: TrustMe
| | | * | | | | | | Deprecate some QPixmap functions (marked as obsolete already).Samuel Rødal2011-07-121-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reviewed-by: Olivier Goffart
| | | * | | | | | | Deprecate some functions in QImage (that have been obsolete since 4.1).Samuel Rødal2011-07-121-7/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reviewed-by: Olivier Goffart
| | * | | | | | | | Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-fire-teamQt Continuous Integration System2011-07-124-30/+61
| | |\ \ \ \ \ \ \ \ | | | |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://scm.dev.nokia.troll.no/qt/qt-fire-team: Add QLocale::toUpper/Lower
| | | * | | | | | | Add QLocale::toUpper/LowerLars Knoll2011-07-124-30/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The toUpper/Lower() methods in QString should not be locale dependent, as this can lead to rather hard to find bugs in at least a turkish locale. Rather have explicit, locale dependend case conversions available in QLocale. Reviewed-by: Denis Dzyubenko
| | * | | | | | | | Merge branch 'master' of git://scm.dev.nokia.troll.no/qt/qt-fire-teamQt Continuous Integration System2011-07-121-1/+1
| | |\ \ \ \ \ \ \ \ | | | |/ / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 'master' of git://scm.dev.nokia.troll.no/qt/qt-fire-team: Fix warning for uninitialized variable
| | | * | | | | | | Fix warning for uninitialized variableJiang Jiang2011-07-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reviewed-by: Eskil
* | | | | | | | | | Merge branch 'master' of scm.dev.nokia.troll.no:qt/qt-tools-staging into ↵Qt Continuous Integration System2011-07-200-0/+0
|\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | master-integration * 'master' of scm.dev.nokia.troll.no:qt/qt-tools-staging:
| * \ \ \ \ \ \ \ \ \ Merge remote-tracking branch 'origin/4.8' into 4.8-tools-stagingJoerg Bornemann2011-07-207-20289/+40195
| |\ \ \ \ \ \ \ \ \ \
* | \ \ \ \ \ \ \ \ \ \ Merge branch 'qt-4.8-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration ↵Qt Continuous Integration System2011-07-2054-20/+1905
|\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | into master-integration * 'qt-4.8-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration: Check for buffer overflow in Lookup_MarkMarkPos Delay masking the last character in Password echo mode. Updated license headers. Prevent failed rendering for NPOT textures in GLES2. Don't use GL_REPEAT for NPOT textures in GLES2. Avoid crash when surface creation fails. Add system tests from research:systemtests repository.
| * \ \ \ \ \ \ \ \ \ \ \ Merge remote-tracking branch 'origin/4.7' into qt-4.8-from-4.7Liang Qi2011-07-2054-20/+1905
| |\ \ \ \ \ \ \ \ \ \ \ \ | | |_|/ / / / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
| | * | | | | | | | | | | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2011-07-191-0/+3
| | |\ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: Check for buffer overflow in Lookup_MarkMarkPos
| | | * | | | | | | | | | | Check for buffer overflow in Lookup_MarkMarkPosJiang Jiang2011-07-191-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That may cause crash in this function with certain fonts. Task-number: QTBUG-17238 Done-by: Alberto Garcia <agarcia@igalia.com> Reviewed-by: Jiang Jiang
| | * | | | | | | | | | | | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-qml into 4.7-integrationQt Continuous Integration System2011-07-195-4/+190
| | |\ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * '4.7' of scm.dev.nokia.troll.no:qt/qt-qml: Delay masking the last character in Password echo mode.
| | | * | | | | | | | | | | | Delay masking the last character in Password echo mode.Andrew den Exter2011-07-195-4/+190
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If QT_GUI_PASSWORD_ECHO_DELAY is defined in qplatformdefs.h with an integer value in milliseconds, QLineEdit and TextInput will display the last character entered unmasked for that delay period and then mask the character as normal. If QT_GUI_PASSWORD_ECHO_DELAY is not defined then the behaviour is unchanged. Change-Id: I55f527932d34453828caba88e93ad57e012e79be Task-number: QTBUG-17003 Reviewed-by: Martin Jones
| | * | | | | | | | | | | | | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-multimedia-staging into ↵Qt Continuous Integration System2011-07-1944-0/+1698
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/qt-multimedia-staging: Updated license headers. Add system tests from research:systemtests repository.
| | | * | | | | | | | | | | | | Updated license headers.Toby Tomkins2011-07-1922-425/+425
| | | | | | | | | | | | | | | |
| | | * | | | | | | | | | | | | Add system tests from research:systemtests repository.Toby Tomkins2011-07-1244-0/+1698
| | | | | | | | | | | | | | | |
| | * | | | | | | | | | | | | | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into ↵Qt Continuous Integration System2011-07-182-2/+15
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | |_|/ / / / / / / / / / / | | | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: Prevent failed rendering for NPOT textures in GLES2. Don't use GL_REPEAT for NPOT textures in GLES2.
| | | * | | | | | | | | | | | | Prevent failed rendering for NPOT textures in GLES2.Samuel Rødal2011-07-181-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Shouldn't use the (default) GL_REPEAT wrap mode on GLES2 unless GL_OES_texture_npot is present. Reviewed-by: Kim
| | | * | | | | | | | | | | | | Don't use GL_REPEAT for NPOT textures in GLES2.Samuel Rødal2011-07-181-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We already handle NPOT textures correctly by calling fract() on the texture coordinates in the fragment shader, but we also need to make sure not to set GL_REPEAT as the wrap mode, because the GLES2 spec says that the driver should return (0, 0, 0, 1) if an NPOT texture has wrap mode different from GL_CLAMP_TO_EDGE. Previous GLES2-implementations we've tested on have thus not been GLES2-compliant (or supported GL_OES_texture_npot). Partial back-port / modification of c5a377e944f9a87c372ff8371c66b03d861803a6 in 4.8. Reviewed-by: Kim
| | * | | | | | | | | | | | | | Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public into ↵Qt Continuous Integration System2011-07-182-3/+3
| | |\ \ \ \ \ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 4.7-integration * '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public: Avoid crash when surface creation fails.
| | | * | | | | | | | | | | | | | Avoid crash when surface creation fails.Laszlo Agocs2011-07-182-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the creation of the EGL window surface failed, the paint engine was not destroyed in the openvg module's window surface implementation. This led to accessing an obsolete engine instance later on in QSymbianControl::Draw, leading to a crash. Now a new, proper engine will be created, naturally the painting will still fail, but the application will not crash. Task-number: QTBUG-20339 Reviewed-by: Jani Hautakangas