summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* avoid redundant testsOswald Buddenhagen2012-06-011-6/+2
| | | | | | | | tryRun() already implies tryLink() and tryCompile(), so there is no point in executing the stages separately ... Change-Id: Id7321efaca474e8c5db2bc246ac26323d8a99e58 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QDoc: Don't put ditamaps in index file.Casper van Donderen2012-06-011-1/+1
| | | | | Change-Id: Id3ceb05d3c9c4424b767222850237755080b9879 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* QDoc: Do not put indexNodes in qt.ditamap.Casper van Donderen2012-06-011-1/+1
| | | | | Change-Id: I659a3a91aaa6da26f4f739428d79cccfab8ce076 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* QDoc: Use \page title with prev/next links in DITAXML.Casper van Donderen2012-06-011-0/+12
| | | | | Change-Id: I260998986752f5c8cc48279c04557c925af1cb14 Reviewed-by: Martin Smith <martin.smith@nokia.com>
* make syncqt work with MSys Perl and MSVCJoerg Bornemann2012-06-011-14/+34
| | | | | | | | | | | | | | | | | | | | | | The common root dir detection was broken, because of an inconsistent root drive path style: <srcbase> = /c/dev/qt/5.0/qtbase <outbase> = C:/dev/qt/5.0/qtbase Now we don't need ActivePerl anymore. The Perl that comes with msysgit is enough. After every Perl function call that returns a file path we need to normalize it to bring it into a form that can be used by - Perl functions that take a path as parameter, - C++ sources as include file path, - qmake's .pro files as include file path. Task-number: QTBUG-25912 Change-Id: If1cf56cc7246a9d6535cd3867222f225d1617712 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* QtPrintSupport - Cleanup QPrintDialog headerJohn Layt2012-06-015-76/+156
| | | | | | | | | | | | | | Move QUnixPrintWidget from the header to the UNIX implementation as it is not used anywhere else and doesn't need to be exported. Make the private slots only compile under UNIX, remove the Mac and Win stubs for them as unneeded. Add some documentation to the UNIX dialog Change-Id: I8f30504285df877e17ac8eeace875f666f43d94d Reviewed-by: Teemu Katajisto <teemu.katajisto@digia.com> Reviewed-by: John Layt <jlayt@kde.org>
* configure: pass -D options through to configure testsRohan McGovern2012-06-011-82/+82
| | | | | | | | | | | | We already do this for -I and -L compiler flags, but not -D. This caused configure tests to give incorrect results in some cases. Task-number: QTBUG-25963 Task-number: QTQAINFRA-523 Change-Id: Ib270a1dc67759e36bc439e80ab8136a64c405d26 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com> Reviewed-by: Donald Carr <donald.carr@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Fix QApplicationPrivate::pickMouseReceiver() crashDebao Zhang2012-06-011-1/+1
| | | | | | | | | | | | | | When a widget associate with a QWidgetWindow received a mouse event, but another widget which is not a child of the widget has grabbed the mouse, the application will crash. As QWidget::mapFrom() only works when mapping from parent to child. This is the side effect of SHA: f6c107d799d14bbdb2cb71b8446483541bb0adb5 Task-number: QTBUG-25985 Change-Id: If2e6289e02d6d67c215694f2217221c9c7a0af46 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
* Dispatch tablet events to widgetsLaszlo Agocs2012-06-013-60/+38
| | | | | | | | Plus remove some platform-specific tablet leftovers from Qt4. Change-Id: I376abc38d1fe4c253d8803cf0ce007e2d6c298bf Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Marked expected failures in tst_qtextlayout on WindowsRohan McGovern2012-06-011-0/+14
| | | | | | Task-number: QTBUG-25924 Change-Id: I24a8ab6a695bf76f19e9082e1d8b11d8ec03fc4f Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com>
* Add private API for working with meta-methods in signal index rangeKent Hansen2012-06-015-18/+210
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Internally, QObject and QMetaObject already leave out non-signal methods when working with signals. This is possible because the signals always come before other types of meta-method in the meta-object data. Ignoring irrelevant methods is faster and can save memory. QMetaObject provides internal indexed-based connect() and disconnect() functions. However, these functions currently take an absolute method index as the signal specifier, instead of an absolute _signal_ index. Hence, QMetaObject and friends must convert from the method index range to the signal index range. By providing an API that only considers signal indices, clients of the index-based QMetaObject::connect()/disconnect() can provide the proper signal index directly. Similarly, for the qtdeclarative integration (QDeclarativeData hooks) the signal index can be passed directly. This will eliminate most of the conversions back and forth between signal index and method index, and some other redundant work done by qtdeclarative's custom connection implementation. There are some places where the behavior can't be changed; for example, QObject::senderSignalIndex() will still need to return an index in the method range, since that function is public API. Changing QMetaObject::connect()/disconnect() to take an index in the signal range will be done in a separate commit; this commit is only an enabler for porting existing usage of those functions to the new behavior. Change-Id: Icb475b6bbdccc74b4e7ee5bf72b944b47159cebd Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* QtNetwork: handle raw deflate compressed data in Http.Martin Petersson2012-06-011-1/+20
| | | | | | | | | | | | | | For raw deflate compressed data with no zlib or gzip header we need to call initInflate2 with -MAX_WBITS. The first call to inflate will asume that the data has a header, but if that call fails with a Z_DATA_ERROR we can try once more with changed windowBits incase the data was raw compressed data without a header. Task-number: QTBUG-25513 Change-Id: Ib37c286c6da6d5395581717d0e76a0dbd5df289c Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* QNetworkReply: Change abort() function into a slotJonathan Liu2012-06-011-1/+1
| | | | | | | | | It is useful for abort() to be a slot for connecting cancel and timeout signals. Change-Id: Ib0146d66fffe3f57b683dfbce0863e378b8c076d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Add QEvdev prefix in evdevtouch and update readmeLaszlo Agocs2012-06-014-42/+47
| | | | | | | | Now that the code is in platformsupport we need to avoid too generic names so rename the classes a bit. Change-Id: I7241aa1a3449be772de369ebd08df01e886dbfa3 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* eglfs: implement hardware cursor for the raspberry-piGirish Ramakrishnan2012-06-018-77/+263
| | | | | | | | | | | | | | | | The cursor is rendered on a dispmanx layer and moved around. This approach saves us from having to update the underlying window each time the cursor moves. Dispmanx layers cannot be moved to negative coords. As a result, currently it is not possible to move to a location less than the hostpot. A future commit will fix this problem. Change-Id: Ida5ee961d03a6929860c515e503482756a4913ed Reviewed-by: Johannes Zellner <johannes.zellner@nokia.com> Reviewed-by: Andy Nichols <andy.nichols@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* QNAM - maintain a weak reference to the QNetworkSessionShane Kearns2012-06-015-43/+61
| | | | | | | | | | | | | | | When handling signals from the session, a pointer is needed. Also the QNetworkReplyImpl needs to access the manager's session. So, the manager should have a strong and weak reference. The strong reference is held during connection establishment. The weak reference is held all the time, though it will become null when the session is destroyed in idle. The non static member function getNetworkSession() is used to create strong references from the weak reference where required. Task-number: ou1cimx#1004278 Change-Id: I4b5b36b1d996b98e659d993969006c61b4440c15 Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
* Track active network replies without qFindChildrenShane Kearns2012-06-012-1/+7
| | | | | | | | | | | | | | | For bearer management to work correctly, we need to know when there are no network replies active. Previously this was implemented using qFindChildren, but that doesn't work when the user reparents QNetworkReply. QtWebkit does this (actually sets parent to 0). Also the qFindChildren implementation was racy if multiple requests were finished in parallel. Again, likely to be triggered by webkit loading page elements. Task-number: QTBUG-15812 Change-Id: I181a9ba6611c7c4b6fffa2d84fe4029d89e8f596 Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
* Socket FD are now of type qintptr.Jonas M. Gastal2012-06-012-2/+2
| | | | | | | | | | This should've been done together with the bulk of other changes in: bdce61002255b5f8b3213e93175cefdfebfde2cc and bf7f17060773803f332e8c729a70f47b94243890 Task-number: QTBUG-19004 Change-Id: I6d95a29140c1de5e6800812add9d7882511b909a Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Put Windows NTLM stuff inside consistent preprocessor directives.Janne Anttila2012-06-012-9/+17
| | | | | | | | | | | | | | | | QNtlmWindowsHandles was placed inside Q_OS_WIN in some places and in other places inside Q_OS_WIN32. It seems that Q_OS_WIN is correct define everywhere. In addition placed "InitSecurityInterfaceW" inside L macro to convert argument to wide characters in WinCE. WinCE GetProcAddress takes LPCWSTR instead of LPCSTR. This fixes the QtNetwork build for WEC7, where Q_OS_WIN32 apparently is not defined. Should it be defined, is another story... Change-Id: Id309d20c46b66139e2cb2e62349067848d8ebb4e Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Fix a bug in the case conversion codeLars Knoll2012-06-012-8/+6
| | | | | | | | | | | Chars that have a case conversion that converts them into several characters can't be handled by QChar::toUpper() etc and should get ignored. The code didn't do that correctly. Change-Id: I281d122e90bf49187b6449088d2fccef2ef75e86 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove unused isGLWidget variable.Kim Motoyoshi Kalland2012-06-013-3/+0
| | | | | Change-Id: I9d1a0edfce3d13ed56916b7301098aa5fbe0bc40 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Add method to set size of QOpenGLPaintDevice.Kim Motoyoshi Kalland2012-06-012-2/+19
| | | | | Change-Id: Iecc72c64dbb5f35ee41bdeb960bc759cd43b8bcb Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Fix the QVector build with C++11 initialiser listsThiago Macieira2012-06-013-7/+7
| | | | | | | | | | | | Initialiser lists were not tested before in the QVector rewrite, so the older malloc call was left behind. Also, std::initializer_list has const iterators returning const data and broke the build in a few places where const qualifiers were missing. Change-Id: I3c04e58361989aa7438621cda63c7df457d7dad8 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Make QVector compile with QT_STRICT_ITERATORS againThiago Macieira2012-06-013-86/+95
| | | | | | | | | | | | Move the iterator classes into QArrayTypedData and add constBegin() and constEnd() to that class. I also had to add an operator T*() to the strict iterators, since there are many places that expect the iterator to behave like a pointer (including in QVector itself). Change-Id: Icc5ed56ad47b013664a48eef9d31b5273aecb4e3 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Avoid accessing QObjectPrivate::currentSender directly from QtDBusKent Hansen2012-06-011-2/+1
| | | | | | | | | | | | | | In particular, currentSender->signal is about to be changed from the method index range to the signal index range (i.e., excluding non-signal methods). The public senderSignalIndex() function will still return the index in the method range, so QtDBus will then continue to work without change. If necessary, QtDBus can afterwards be ported back to using the internal API again (including the new QMetaObjectPrivate API for working with methods in the signal range). Change-Id: I58212e859560a8e241adee99dd2da9ef009d4e5b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Allow compare QLatin1String to QLatin1StringKonstantin Ritt2012-06-011-17/+17
| | | | | | | even if QT_NO_CAST_FROM_ASCII is defined. Change-Id: I8c4deceedb6f3e3cd5bdf72d6e9d189c509c9ff3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add missing QT_NO_CAST_FROM_ASCIIKonstantin Ritt2012-06-011-2/+2
| | | | | | | | | | | | to QLatin1String's compare operators that takes const char *s or QByteArray. Such comparison leads to a potential misuse since QByteArray could contain any arbitrary data in any arbitrary encoding and QLatin1String is used to only contain strings in UTF-8 - they are just a different beasts aimed for different purposes, and since QT_NO_CAST_*_ASCII disallow indirect conversions and require the user to know what he's doing, let's be consistent here too. Change-Id: I9bf5f326495157db8a6af064d6154961b7861a7e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Unconditionally enable Q_OF_ELF for any ELF platformPino Toscano2012-06-011-3/+1
| | | | | | | Just enable ELF stuff on any platform which uses ELF format, instead of a selected subsets of those. Change-Id: I0753c020c718bc67b4b50c3957fe8dc10afd2c61 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make tst_qabstractnetworkcache parallel-safeRohan McGovern2012-06-012-3/+5
| | | | | | | Use a unique QTemporaryDir instead of a fixed path for the test cache. Change-Id: Ib664033a509a6cefd7c323708f80ef595b202178 Reviewed-by: Kalle Lehtonen <kalle.ju.lehtonen@nokia.com>
* Add clear() to QPointer for QWeakPointer compatibility.Stephen Kelly2012-06-012-0/+13
| | | | | Change-Id: I9efc162bf56775c7ebcff4e3b79a997edc4ceaeb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make font fallback list for common script locale awareJiang Jiang2012-06-011-0/+13
| | | | | | | | | | | | Even in common script we may need to have a preferred font list (which font should be used for CJK codepoints, Chinese, Japanese or Korean? Since the codepoints they cover may overlap.) Adding current default language into the pattern in that case will give a better recommendation for the fallback list if the system have configuration files like that. Change-Id: Idbc7f7b0cf24108d6cc255a1add0b29b730588c0 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Fix some gcc warningsKonstantin Ritt2012-06-011-4/+4
| | | | | | | | | | | | These are: "enumeral and non-enumeral type in conditional expression", "comparison of unsigned expression >= 0 is always true", and "address requested for 't', which is declared 'register'" Change-Id: Ia9bab2e1e2c212a2889197e8dd5f7295dda9dadd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Mark tst_qfreelist as parallel-safeRohan McGovern2012-06-011-0/+1
| | | | | | | This autotest appears to be parallel-safe. Change-Id: I12f9202633941e9339de0709353efb2b41df4fa1 Reviewed-by: Kalle Lehtonen <kalle.ju.lehtonen@nokia.com>
* Fixed compile on Windows without precompiled headersRohan McGovern2012-06-011-0/+1
| | | | | | | | | | | Added missing header. Compile failure is only reproducible when precompiled headers are disabled. Change-Id: I0fb2e51b3352ebad3b7b5b58898347605b8d5090 Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com> Reviewed-by: Kalle Lehtonen <kalle.ju.lehtonen@nokia.com>
* Fix QFileDialog crash on show with the GTK style.Morten Johan Sorvig2012-06-011-0/+4
| | | | | | | | Call createWinId on modal_widget to make sure it has a valid QWindow. Change-Id: Ieaec2bcaceb2ac28032cb42e5f8bcaf7a33828ca Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
* Remove all references to X11 session managementDonald Carr2012-06-0151-103/+0
| | | | | | | | | There is no session management currently implemented for the xcb QPA backend. Update the build system to reflect this. Change-Id: I3486de5741f1fb7e09330ca142b8235a84d3b91d Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Migrate tslib to new plugin formatLaszlo Agocs2012-06-014-6/+17
| | | | | | | | Also rename the binary and avoid crashes when tslib initialization fails. Change-Id: Ia7ccf7c997e1b1484bd475626ca16c9a9642466e Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* set OUTDIR for consistency with config.testDonald Carr2012-06-011-1/+1
| | | | | | | We depend on this being set correctly set in device_config.prf Change-Id: Iee69c5ce35af26f9ecd6edacdd70e13ae4a9aa90 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Get rid of MSVC compiler warnings from QVector codeFriedemann Kleint2012-06-011-2/+10
| | | | | | | Change-Id: I39b849721f3ba790c4a9197d69ac48e98cc2f5bd Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Remove debugging code from QVectorJędrzej Nowacki2012-06-011-9/+1
| | | | | | | It was depending on internals of Q_ASSERT Change-Id: I3dfc0ae0438135a30961f36808dbfc3e663a5538 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix crash in QStringBuilder when concatenating data-less QLatin1StringChris Adams2012-06-012-4/+15
| | | | | | | | | Previously, the append functions in QConcatenable in the QStringBuilder dereferenced the data() pointer of the argument QLatin1String without performing null check. Change-Id: I629f19fbce3113f1f80f4272fa7ae34e1dbc6bee Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Move implementation of QObject::senderSignalIndex() to QObjectPrivateKent Hansen2012-06-012-11/+20
| | | | | | | | In preparation of changing the implementation to return an index in the signals-only range, not all-methods range. Change-Id: Ib743a4bc9da27ad776ade262b215ebf988e7ab28 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix To-Do in qstatemachine (use QObject::senderSignalIndex())Kent Hansen2012-06-011-8/+2
| | | | | Change-Id: Id8a541878918f27a34595ff297d0f41b79275a96 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Move evdev to platformsupportGirish Ramakrishnan2012-06-0122-67/+82
| | | | | | | | Also wraps various string literals with QLatin1String. Change-Id: Ia0681bfae00006d9e9ad51f05d0e0d0f45cf2cec Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com> Reviewed-by: Donald Carr <donald.carr@nokia.com>
* Fix tst_qlistwidget::fastScroll test caseMiikka Heikkinen2012-06-011-0/+5
| | | | | | | | | | | tst_qlistwidget::fastScroll fails if the mouse cursor happens to be over the tested widget, because that causes an item to highlight, resulting in unexpected region of widget to be painted. Fixed by forcing the mouse cursor off the widget before the test. Task-number: QTBUG-24299 Change-Id: I8f45541feda44681179d43eda67d970d5fea4e40 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Remove the unnecessary comment about operator== not being necessaryThiago Macieira2012-05-312-9/+4
| | | | | | | | | | The mysterious comment was just suggesting that they weren't necessary. Turns out the comment is wrong: they are necessary for non-strict iterator modes. Task-number: QTBUG-25063 Change-Id: I20ada17035642ee656c431d6bf2152a5243cecdb Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Move the sub-architecture feature to better places in qmakeThiago Macieira2012-05-314-20/+21
| | | | | | | | | | | | | | | | | | | Instead of saving the ability of the compiler to produce SSE2, AVX, Neon, etc. code in .qmake.cache (Unix) or qconfig.pri (Windows), move everything to qmodule.pri. Accordingly, move the DEFINES += settings to qt_module.prf instead of qt.prf. This allows us to re-use these settings in other Qt modules (other than qtbase), if necessary. Though currently the extra compiler definitions are found only in src/gui/gui.pro. They can be moved elsewhere when it becomes necessary. As a side-effect of this change, some other flags are moved from .qmake.cache to qmodule.pri (on Unix). The flags that are getting moved should probably be moved anyway. Change-Id: Ibc3ab0111e148d81870772f9357273660aa93417 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Fix the confusion caused by the QT_ALWAYS_HAVE_xxx macrosThiago Macieira2012-05-314-12/+36
| | | | | | | | | | | | | | | | | | | | The QT_ALWAYS_HAVE_xxx macros are gone: they were hard to use and not defined properly. It indicated that the compiler was producing code that required that particular instruction set, so we could use it in our code unconditionally. Instead, let's use the GCC-style __SSE2__ and __ARM_NEON__. MSVC does not generate the __SSE2__ macro, so let's do it for the compiler. Also, define __AVX__ and the macros for the technologies leading to it when we manage to detect an /arch:AVX build (currently not possible, see note in the header). ICC and MSVC allow one to use the intrinsics anywhere, but for Qt all uses of the intrinsics are either in specially-built files, protected by runtime checks, or they are unconditional (qstring.cpp). So we only use the intrinsics when the compiler was instructed to generate code for that instruction set anyway. Change-Id: If8382f30422cee0e5831d051b003acf036824abf Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Overhaul the qsimd_p.h: rename macros and update conditionalsThiago Macieira2012-05-3123-88/+109
| | | | | | | | | | | | | | | The QT_HAVE_xxx macros are replaced with QT_COMPILER_SUPPORTS_xxx. They indicate that the compiler supports those intrinsics, but not necessarily that they can be used right now. ICC and MSVC allow one to use the intrinsics anywhere, but for Qt all uses of the intrinsics are either in specially-built files, protected by runtime checks, or they are unconditional (qstring.cpp). So we only use the intrinsics when the compiler was instructed to generate code for that instruction set anyway. Change-Id: Ie58eebbc0518ad1d5420a85174fd84153bb9abaa Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Fix int-long mismatch in device discoveryLaszlo Agocs2012-05-311-1/+1
| | | | | Change-Id: I506fc206e68d57b67524cedf99896db1cff1694f Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>