summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* get rid of "uninitialized member" gcc warningKonstantin Ritt2012-06-071-2/+1
| | | | | Change-Id: I486212829ec9309239645222e7f03f36ae4847f0 Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
* Mark the testSslOption method as introduced in Qt 4.8Laszlo Papp2012-06-071-0/+2
| | | | | | Change-Id: Ibe7cb1ca9cdcedd3f09dd4f865907e3f0fa6aef3 Reviewed-by: Richard J. Moore <rich@kde.org> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* QNX: Take nativeOrientation into account for QNX device orientationsSean Harmer2012-06-061-10/+25
| | | | | | | Change-Id: Idfe4a5bd9c9638a1f9ae52a7b1def3f869286587 Reviewed-by: Kevin Ottens <kevin.ottens.qnx@kdab.com> Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* QtNetwork: disconnect other channels when network layer detectedMartin Petersson2012-06-063-0/+11
| | | | | | | | | | | | | With Happy Eyeballs we will connect one IPv4 and one IPv6 channel and pick the network layer depending on which connects first. When the first channel is connected we can close the other one. Before this we let the other connection finish connecting and then closed it. This will close the other one as soon as the first one is connected. Change-Id: Ib2ab3f949704fd39dc0584bd31b9bcaf75ce35f7 Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Add Blackberry path for SSL certificatesNicolas Arnaud-Cormos2012-06-061-0/+1
| | | | | | Change-Id: Ic01e4bddaa6f1fd94f16952e0818f4369c2ec8ab Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Richard J. Moore <rich@kde.org>
* Use the correct ifdef (QT_WIDGETS_LIB) in qsqlrelationaldelegate.hKent Hansen2012-06-061-2/+2
| | | | | Change-Id: I4cdb1eef7dab55c7d295463fe8ad29b5480b0788 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Rename QSystemLocale::fallbackLocale() to QSystemLocale::fallbackUiLocale()Mike FABIAN2012-06-066-8/+8
| | | | | | | | | | Suggested by Oswald Buddenhagen. This function is about the (main) UI language, not about other locale features like number formatting etc. It not in the public API anymore in Qt 5.0 so it can be renamed. Change-Id: I2a23892c67e5813de4c0e57330749568777e9ee6 Reviewed-by: Oswald Buddenhagen Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Check LANGUAGE as well in QSystemLocale::fallbackLocaleMike FABIAN2012-06-061-0/+13
| | | | | | | | | | | | Because QSystemLocale::fallbackLocale() is about UI languages, it makes sense to check LANGUAGE as well if appropriate. Adapt tst_qlocale.cpp accordingly. Suggested by Oswald Buddenhagen. Change-Id: Ib2c9674081809e3251be4e34456b05210eebc010 Reviewed-by: Oswald Buddenhagen Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Use LC_MESSAGES instead of LC_NUMERIC in QSystemLocale::fallbackLocale()Mike FABIAN2012-06-061-3/+1
| | | | | | | | | | | | | | | | | commit b9790a04eeba664ecdf9ace24911094a71b5f0bd (https://codereview.qt-project.org/24304) introduced the problem that the country gets initialized from LC_NUMERIC and the language from LC_MESSAGES. For example, if LC_NUMERIC=ru_RU and LC_MESSAGE=fr_FR, then QLocale::system().name() returns "fr_RU". It is not nice to mix the values of two LC_ variables there. Therefore, revert this change and use LC_MESSAGES instead of LC_NUMERIC in QSystemLocale::fallbackLocale(). This was also suggested in the changelog of b9790a04 and it looks like a better way to fix the problem. Change-Id: I8fa6fec2b33e9f1f5a31c4b288503a658dad6d30 Reviewed-by: Denis Dzyubenko Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Fixed compile error in eglfs plugin due to narrowing conversion.Samuel Rødal2012-06-061-4/+8
| | | | | | | | | qeglfscursor.cpp:300: error: narrowing conversion of ‘((const QRectF*)r)->QRectF::left()’ from ‘qreal’ to ‘const GLfloat’ inside { } Change-Id: Ic4273828ad361ffac5a68068372bf400d468fb38 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Test if the device is grabbed in some of the evdev pluginsLaszlo Agocs2012-06-062-4/+25
| | | | | | | | | | | | Even though they target embedded devices, the touch and tablet plugins are very often used on desktop, under X, for development and experimenting. However the X.org drivers like to grab the input devices, resulting in getting no events when reading directly. Inspired by evtest, we show a warning from now on in this case so the user has a clue what's going on. Change-Id: I19474f1fcc5163f2601e7000aaee0cce54f99367 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* statemachine: Make delayed event posting work from secondary threadKent Hansen2012-06-063-17/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | postDelayedEvent() and cancelDelayedEvent() are marked as thread-safe in the documentation. Unfortunately, they didn't actually work when called from another thread; they just produced some warnings: QObject::startTimer: timers cannot be started from another thread QObject::killTimer: timers cannot be stopped from another thread As the warnings indicate, the issue was that postDelayedEvent() (cancelDelayedEvent()) unconditionally called QObject::startTimer() (stopTimer()), i.e. without considering which thread the function was called from. If the function is called from a different thread, the actual starting/stopping of the associated timer is now done from the correct thread, by asynchronously calling a private slot on the state machine. This also means that the raw timer id can no longer be used as the id of the delayed event, since a valid event id must be returned before the timer has started. The state machine now manages those ids itself (using a QFreeList, just like startTimer() and killTimer() do), and also keeps a mapping from timer id to event id once the timer has been started. This is inherently more complex than before, but at least the API should work as advertised/intended now. Task-number: QTBUG-17975 Change-Id: I3a866d01dca23174c8841112af50b87141df0943 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* QSqlResult: replace virtual hooks with virtual functionsMark Brand2012-06-0615-63/+63
| | | | | | | | | | | | | | | | | | Instead of virtual functions which would have broken binary compatibility, virtual_hook() was used to implement the virtual functionality. Now, since the step to Qt 5.0 allows breaking binary compatibility, we take the opporunity to simplify the code using real virtual functions. SetNumericalPrecision --> setNumericalPrecisionPolicy() NextResult --> nextResult() DetachFromResultSet --> detachFromResultSet() BatchOperation --> execBatch() Task-number: QTBUG-25252 Change-Id: Idd3a870f876d8b8a7457559d5f31ec2073786a75 Reviewed-by: Bill King <bill.king@nokia.com> Reviewed-by: Harald Fernengel <harald.fernengel@nokia.com>
* Cocoa: do not send multiple window activation eventsBradley T. Hughes2012-06-061-2/+9
| | | | | | | | | | | | | | When switching the active window within the same application, Cocoa sends us an NSWindowDidResignKeyNotification for the old activated window, then an NSWindowDidBecomeKeyNotificationfor the newly activated window. Our handling of this would first set Qt's active window to zero, then immediately reset it afterwards. Avoid this by checking the key window when handling the deactivation event, and don't set the active window to zero if a new window has become active. Task-number: QTBUG-24322 Change-Id: I8719fc501049eeaaebb75e9ea03261b2209458b6 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Added QScreen::setOrientationUpdateMask().Samuel Rødal2012-06-067-6/+88
| | | | | | | | | | | | It might be too expensive to always have an accelerometer sensor running, so introduce API so that the application has to explictly ask to get the orientation updates it's interested in. Change-Id: Ib7dc5ad8807718409f744ebef53f4476aa05175d Reviewed-by: Ian Monroe <ian.monroe@nokia.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com> Reviewed-by: Kevin Ottens <kevin.ottens.qnx@kdab.com>
* Cocoa: Fix QCocoaBackingStore::flush on 10.8Morten Sorvig2012-06-061-1/+11
| | | | | | | | | | | | | | | | The call to displayRect works on 10.7 but does not update the pixels on screen on 10.8. Many Qt windows do not update properly. This is a workaround found by trail and error without fully understanding the underlying issue. I would like to have this in place until we can determine the cause of the bug. Change-Id: I1ecee745f42a93ded4f651cc8ad51963f250e78d Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Fix compilation when configured with -no-widgetsKent Hansen2012-06-061-1/+1
| | | | | | | printsupport plugins need QtPrintSupport (which needs QtWidgets). Change-Id: I8cc9cc15abd19c95b8d4bac26dfd17d027bbfa96 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Export QPlatformIntegrationFactory to make it usable outside of QtGui.Balazs Kelemen2012-06-061-1/+1
| | | | | | | | | | | | QPlatformIntegrationFactory can be used to load a platform plugin dynamically. It can be useful for an external platform plugin that want to define some behaviour on it's own and use the default plugin for the rest. We are going to implement such a plugin in WebKit for the test infrastructure to tweak the platform backends in order to provide more platform independent layout test results. Change-Id: Iaaabe1cbc173a03132d83474faa7858aead4cae0 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Fixed QJsonObject::find()Denis Dzyubenko2012-06-061-0/+1
| | | | | | | | | | The function returns mutable iterator on the object that can later be passed to e.g. erase(), hence it should detach() to be consistent with QJsonObject::begin() which also detaches. Change-Id: Id79e8e012fd5469e06b68fbc9eecb7c6848ce9c1 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
* normalize the process arguments to Normalization Form D on macKonstantin Ritt2012-06-061-18/+6
| | | | | | | | | | QFile::encodeName() does this for us + simplifies the code a bit Change-Id: Id2ca2615e20408229dd021c26587fefd60365352 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com> Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Do not set an action on native submenu items on MacPasi Matilainen2012-06-061-1/+2
| | | | | | | | | | | | | On Mac, clicking on a submenu entry triggers QMenu::triggered(QAction*) signal, which is unexpected, and also closes the submenu, which does not match platform behavior. This happens because native submenu items have an action set, so fix it by not setting the action. Task-number: QTBUG-16738 Task-number: QTBUG-10706 Change-Id: I6819999e5af35e6acab1aec035d5d85445189f11 Reviewed-by: James Turner <james.turner@kdab.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Remove support for Qt 4 style pluginsLars Knoll2012-06-067-374/+26
| | | | | | | | | | The new plugin format allows us to avoid loading the plugins in all cases. Remove the old format, as we could get bad behavior with the old format if Qt would try to dlopen a Qt 4.x plugin. Change-Id: I2193e6874d6cca3c0b12298c2b9beb4105a42fd5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Update of the plugin documentationLars Knoll2012-06-062-27/+15
| | | | | | | | Moved the plugin overview from qtdoc to qtbase. Updated the docs to describe the new plugin mechanism. Change-Id: I1b92d5099aeaa3a166c1f7698176d811d47c3392 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove references to QtSharedPointer::InternalRefCountThiago Macieira2012-06-061-4/+0
| | | | | | | | | | | | | This class does not exist, is not needed and has never been published in a released version of Qt. It existed during the development of QSharedPointer, when internal reference counting (also known as intrusive counting) was a goal. That goal was abandoned when use with forward-declared classes was preferred. Change-Id: If3a5a29c07fc71e2001d6ba64b90ddd241ab8ae3 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* eglfs refactor: Query screen and format info from hooksGirish Ramakrishnan2012-06-054-42/+42
| | | | | | | | This allows boards to customize what they really work best for without having to set environment variables. Change-Id: Ib40c3a870ade568f66e37e621a8abc6b17e39411 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* eglfs refactor: Move egl initialization to the integrationGirish Ramakrishnan2012-06-054-42/+44
| | | | | Change-Id: If2c870538c742fd034fb9e5c115e4ac0bd8e2e03 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Verify the surfaceType before activating the GL contextHolger Hans Peter Freyther2012-06-0510-18/+25
| | | | | | | | | | | | Verify that the surfaceType() of the QPlatformContext is of type OpenGLSurface before making the context active. Make it possible to get the QSurface from a QPlatformSurface, make QPlatformWindow use that to access the QWindow. Remove the setSurfaceType call from the eglfs plugin as this hiding a problem. Change-Id: I08906da052e066bb1f1f042030643c6389ab17d7 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Use QPointer instead of QWeakPointer.Stephen Kelly2012-06-0521-42/+45
| | | | | | | | The use of QWeakPointer for tracking QObject pointers is to be deprecated. Change-Id: If460ca7f515db77af24030152f4bd56e1a5fae7c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Avoid string-based lookup of signalsKent Hansen2012-06-051-2/+3
| | | | | | | Resolving signals by member function is preferable. Change-Id: I2a47a27bc780c4c3c29cf472f9f063c910e20c18 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QNX: Implement QQnxScreen::nativeOrientation()Kevin Ottens2012-06-052-0/+11
| | | | | | | | | | Provide a proper version of nativeOrientation(). We use the screen physical size as reported by the device to determine its native orientation. Change-Id: I45b593b0d62436529f89050e98e10b8c9463b6b9 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Introduce nativeOrientation() to QPlatformScreenKevin Ottens2012-06-052-0/+13
| | | | | | | | | | | | | | Now QPlatformScreen has a nativeOrientation() method which default implementation return Qt::PrimaryOrientation. Its purpose is to return the native orientation of the device (e.g. when the device logo is right up). Only the QPA backend can know for sure what this native orientation is, so allow QPA backends to override it with a finer result. Change-Id: I3bef14acb6b8568e64398ff919d9cb4461a2c9cc Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* QDoc: Look for template and include() under installdir.Casper van Donderen2012-06-053-2/+10
| | | | | | | | The installdir will now also be used to search for include() qdocconf variables and the stylesheet. Change-Id: I388392114fd5a8d57bab0b71699b30e4a6ddd46e Reviewed-by: Martin Smith <martin.smith@nokia.com>
* Correctly locate files with relative pathsLars Knoll2012-06-051-0/+2
| | | | | | | | | | | | QUrl("relativefilename").toLocalFile() changed behavior and now returns an empty string if the scheme is not set. Setting the scheme to "file:" in setSource would however break some other assumptions in the code about relative url's. Task-number: QTBUG-22416 Change-Id: I1b3fcbef81f6e356935ec426903989e783ce9a78 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix Mac support for glyph scalingJiang Jiang2012-06-052-7/+19
| | | | | | Change-Id: I9ac9da86c38e9313c6219b8049e46b6b58fa6731 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Make QIODevice::seek() return false for sequential files.Mitch Curtis2012-06-051-7/+9
| | | | | | | Task-number: QTBUG-18173 Change-Id: Ie3a96d3a6f60995b8ba7823153778869d0c2dc58 Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* directfb: Compile with C++11 support enabledBradley T. Hughes2012-06-051-2/+2
| | | | | | | | | | | | | qdirectfbblitter.cpp:146: error: narrowing conversion of 'srcRect.x()' from 'qreal' to 'int' inside { } qdirectfbblitter.cpp:152: error: narrowing conversion of 'rect.x()' from 'qreal' to 'int' inside { } The same error exists for calls to y(), width(), and height() at both locations. Change-Id: I14f165a6a1cab9502e157e798157b835faf2300f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDoc: search for example projectPath for manifest.Casper van Donderen2012-06-051-2/+22
| | | | | | | | | Previously qdoc would automatically use the first .pro/.qmlproject file found, now it explicitly searches for a .pro/.qmlproject file with the name of the example. Change-Id: I2552e529bd3d1b724d3b4286d98d664edbbabcf2 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* Add StartDragVelocity to style hintsLaszlo Agocs2012-06-054-1/+10
| | | | | | | | This will be used by Flickable in combination with the drag distance to improve the drag start detection logic. Change-Id: Ica30042ef3d15041d857b07fa4173dde3d3f900f Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Expose the plugins meta data in the plugin loaderLars Knoll2012-06-052-0/+19
| | | | | | | | | add a metaData() method to QPluginLoader so that applications can query the plugins meta data without having to load the plugin. Change-Id: Ic3ebb35fd3c403926326e8dd1de4176b0c48dbef Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make touch operating better on some touchpadsLaszlo Agocs2012-06-051-2/+5
| | | | | | | | | | Some MT protocol capable touchpads do not provide ABS_MT_TOUCH_MAJOR. The calculation for touch area was meaningless in this case and resulted in a very small area not playing nice with apps like fingerpaint. Change-Id: Ibe472e22e5e792059fd594f54be9be8b75287730 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Fix QTemporaryFile::open() failing after remove().Mitch Curtis2012-06-051-1/+9
| | | | | | | | | | | | | If a QTemporaryFile is constructed using a template file path, the path is generated in QTemporaryFileEngine::open() and then filePathIsTemplate is set to false. If remove() and then open() are called on the same QTemporaryFile, the path is not regenerated. This change ensures that if the file path was generated, it will be generated again in the scenario above. Task-number: QTBUG-2557 Change-Id: I718ceb89daa9a9d46fdbe811fecc3d57d6dc08c2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make QString("inf").toFloat() return inf instead of zero.Mitch Curtis2012-06-051-2/+10
| | | | | | | | | | | Currently, QString::toFloat() returns 0 (and sets ok to false) if you try to convert "inf". This is because inf is greater than QT_MAX_FLOAT and there is currently no check to handle inf. Task-number: QTBUG-8629 Change-Id: I498daf4a7a6f880f928461fca628fcaf7d1d6d08 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
* Rename QVector::realloc and QVector::free.Jędrzej Nowacki2012-06-051-13/+13
| | | | | | | | These names were confusing and conflicting with standard C memory management functions. Change-Id: I6efe20665d2ec7ad3e00f3a806cc1843a57374d4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QProcess: Add accessors for program and arguments.Christian Kandeler2012-06-052-6/+30
| | | | | | | | Task-number: QTBUG-24550 Change-Id: I1ce26e584e39b0b58b1c9f78d8027b2479f2d92c Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDoc: Use the correct DITAiXML for table col/rowspan.Casper van Donderen2012-06-052-6/+48
| | | | | Change-Id: Id5443b4428a5f0b6b9fee92efcf2fd1ae19c0d19 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* The QFontEngineFT files are not built into QtGui anymore.Thiago Macieira2012-06-053-16/+2
| | | | | | | | | | | | | These files are only built into QtPlatformSupport, so the Q_GUI_EXPORT macro is now wrong. Remove it. Additionally, since these files are built into QtPlatformSupport, the windows platform plugin does not need to build them again. To-Do: move the files to src/platformsupport/fontdatabases Change-Id: I9d69b97ca25ee52ab627cfa633f43b277acc5e05 Reviewed-by: Jiang Jiang <jiang.jiang@nokia.com>
* Add QDeferredDeleteEventBradley T. Hughes2012-06-054-12/+38
| | | | | | | | | | | Use this to store the loop-level counter needed by QCoreApplication when determining when it is safe to delete an object. This removes the hack to hijack the QEvent::d pointer (even though the pointer is unused). Change-Id: I91c0b1aa00235ec6e13feb30bf928e56d2f80026 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Allow 24:00:00 for ISO dates in QDateTime::fromString().Mitch Curtis2012-06-051-2/+10
| | | | | | | | | | | ISO 8601 section 4.2.3 states that "The end of one calendar day [24:00] coincides with [00:00] at the start of the next calendar day", so fromString() was updated to account for this. Task-number: QTBUG-25387 Change-Id: I391db0da755dbc822ba0820c302a2c10391e1f3b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* evdevtablet pluginLaszlo Agocs2012-06-0412-3/+555
| | | | | | Change-Id: Ie8fbaac929180e6d4c626253c4c20d1b3a9083f5 Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Fix parent-children relationship of QWidgetWindowsDebao Zhang2012-06-041-4/+5
| | | | | | | | | | | | For a native child widget, widget->nativeParentWidget()->windowHandle() should always equal to widget->windowHandle()->parent() Change-Id: I2560689d32b0cb2834ed33f96c1c70ef3c14342d Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>