summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Make qurlinfo private, now that QFtp is private.David Faure2012-06-1411-22/+10
| | | | | | Change-Id: I0bb641b397b7087c89009f92d9973e0922dce653 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Extend JSON QStandardPaths to support multiple paths per locationJeremy Katz2012-06-141-32/+77
| | | | | | | | | | | | | | | | | Allow a location to be specified as an array of paths. LOCATION: ["first", "second"] The first value is selected for writableLocation(). Define the first entry as an empty string for no writable path. LOCATION: ["", "second"] A single path may be expressed as a string. LOCATION: "only" Change-Id: I897cf40a039ad7cb680bdf643bfa78020e8eb1cb Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com> Reviewed-by: David Faure <faure@kde.org>
* Fix QListView::scrollTo() when there are hidden rowsJani Honkonen2012-06-142-1/+54
| | | | | | | | | | | | | | | | | This is a cherry-pick of b0601630dd0ddabfaa3b97d042ee02b981d95988 from February QListView does not consider hidden rows when scrolling to an item. If there are hidden rows (or columns) before the selected item then the visual index of an item is not the same as the row index from the model. So scrolling will be off by the number of hidden rows before the selected item. Added a autotest for this also. Task-number: QTBUG-21115 Change-Id: I01b097bce7f163cdb480a71b763c060cc006fdc7 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* It should be a moc error for the specified file to not exist.Stephen Kelly2012-06-141-1/+1
| | | | | | | Currently the missing file is ignored and plugin data is created anyway. Change-Id: I118fd57b7d05a135e3ff58c0298b25e67cd12587 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Disable hinting for scaled glyphs in FreeTypeJiang Jiang2012-06-141-0/+5
| | | | | | | | | | | | Scaling hinted glyphs looks ugly, and it makes smooth scaling animation not possible. Since nothing will work as intended in hinted mode, we should disable hinting automatically when glyphs are loaded with scaling transformation. Task-number: QTBUG-24846 Change-Id: Id7fb5f5bdc2d00be157b0c5d55c316473571473c Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* egl: return EGL config when r/g/b sizes are not setGirish Ramakrishnan2012-06-141-5/+4
| | | | | | | | | | | The check is already done for alpha. Do a similar check for r/g/b sizes. The problem was discovered because the default scenegraph context in QSGContext::defaultSurfaceFormat does not have r/g/b set. Change-Id: I2f529c9d5cc7dbc61a27722336e8099e7be08965 Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
* Add since 5.0 markers to new QCryptographicHash enums/functionsAlbert Astals Cid2012-06-141-4/+5
| | | | | | Change-Id: If367d365510cc7f6bf8f87808f5843c4a41d13e1 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Fix encoding of non-ASCII stringsThiago Macieira2012-06-144-10/+10
| | | | | | | | | tr() only takes UTF-8 as input, so we must recode to UTF-8. But we can use QLatin1String elsewhere. Task-number: QTBUG-26086 Change-Id: I5932ddc96fb817dbe01106e5f6f2b10f58472d6b Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
* Rewrite QNetworkReply downloadProgress autotestShane Kearns2012-06-141-54/+56
| | | | | | | | | | | The existing autotest was made invalid by the downloadProgress signal choking patch. Rewrote the autotest to download files from the test server with some rate limiting applied to ensure more than one signal is emitted. Change-Id: I6026bacdf356b4e1796b80f6983e5bdce0d1bfce Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
* choke uploadProgress signalsShane Kearns2012-06-144-4/+31
| | | | | | | | | | | | | | | | | | The QNetworkReply::uploadProgress signal is intended for updating UI elements such as a progress bar. Limit the signal emissions to 10 per second to prevent overloading the UI with updates. As with the downloadProgress choke, this is implemented by dropping signals that occur within 100ms of the previous emission. The 100% signal is always emitted (bytesSent == bytesTotal) When the upload size is initially unknown, this behaviour is still provided by the upload device emitting a suitable readProgress signal when EOF is reached. Task-number: QTBUG-20449 Change-Id: I77e03c8a49109106e1c375ee00380293fd326b63 Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
* choke downloadProgress signalsShane Kearns2012-06-145-7/+40
| | | | | | | | | | | | | | | | | | | The QNetworkReply::downloadProgress signal is intended for updating user interface components (e.g. a progress bar). Limit signal emissions to 10 times per second, with an additional signal just before the finished() signal to provide the 100% progress. For the size of download where a progress bar is necessary, this update frequency seems sufficient. The implementation is done by dropping signals which would be emitted less than 100ms after the previous signal emission. Task-number: QTBUG-20449 Change-Id: I9c2dbe16c70f3270cbf98f3c74cf9d9a3f0ab900 Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Markus Goetz <markus@woboq.com> Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com>
* disable codecs for asian language when QT_NO_BIG_CODECS definedTasuku Suzuki2012-06-1425-60/+71
| | | | | Change-Id: I45025b13bacc5f63946b02a87c742beff1946c0b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Regenerate the Unicode tablesKonstantin Ritt2012-06-142-7140/+5998
| | | | | Change-Id: I64b93ba8ec85eff5e308d92c57e98e8745c43d66 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Make QUnicodeTables::script() support SMP code pointsKonstantin Ritt2012-06-144-280/+176
| | | | | | | | | | | | | | | | | | | Instead of expanding the scripts table with script values for the code points >= 0x10000, it has been merged with the properties table in order to increase perfomance of the script itemization code (not affected yet). (Stats: the properties table grew up in 97428-89800 = 7628 bytes; the old scripts table was of size 7680 bytes) The outdated ScriptsInitial.txt and ScriptsCorrections.txt file has been removed (they were just empty, the "corrigendum" script corrections should be applied to Scripts.txt directly, *no customization allowed*!). More script testcases has been added - at least one per supported script. Task-number: QTBUG-6530 Change-Id: I40a9e76f681e2dd552fd4c61af0808d043962e79 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* QFontMetrics/QRawFont: Optimize SMP code points handling a bitKonstantin Ritt2012-06-144-11/+19
| | | | | | | | | Calling QString::fromUcs4() for the single UCS-4 -encoded character is quite suboptimal since the BOM detections and the resulting QString aren't really used; all we need is to split the UCS-4 code point into the UCS-2 surrogate pair. Change-Id: Ia5b68312909bf551cf2493d9e2752a7d7d837fb9 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Add the AGLFN tables generator, update the tables up to AGLFN 1.7Konstantin Ritt2012-06-146-175/+1206
| | | | | | | Task-number: QTBUG-21727 Change-Id: Ib2cacc2a52b2853059d6c873a33dcde735fbe168 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* AGLFN: optimize glyph name lookup and reverse map creationKonstantin Ritt2012-06-142-15/+22
| | | | | | | | Use binary search in glyph name lookup, drop the linear search sentinel (0xFFFF); Pass the reverse map by ref, initialize with memset. Change-Id: I56de64bf2352af0615787e4cc0e13c922c640822 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Introduce QPA API for size grip handling.Friedemann Kleint2012-06-148-72/+123
| | | | | | | | | | - Introduce API to do size grip handling (mouse press and move). - Move Windows code to Windows plugin. - Move X11 code to XCB plugin and activate it. Change-Id: I2f61d6ddc1fa07447e668554d41ecc820efca23f Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Windows: Fix warnings about being unable to load fonts from font dir.Friedemann Kleint2012-06-142-2/+0
| | | | | | | | | | | | | Do not call QPlatformFontDatabase::populateFontDatabase(), which tries to load qpf2-fonts from the Qt library directory. This directory is not installed on Windows. Note: This affects non-in-source builds only. Task-number: QTBUG-26066 Change-Id: I5782e61965958fc48e0edd7a3d50eef325529708 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Do not add debug/release to QMAKE_CONFIG. Let module system enable themSean Harmer2012-06-145-11/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This solved QTBUG-26111 in which qtjsbackend gets built with an incomplete framework on Mac OSX. This was traced back to commit 6a6fd56e662b2c1a581727f7ec44d5bd60913ad4 which moved QMAKE_CONFIG values from .qmake.cache to mkspecs/qmodule.pri. Since qtjsbackend contains config tests it creates its own .qmake.cache which was previously masking this issue. QMAKE_CONFIG incorrectly contained debug for debug_and_release builds even though debug and release are already present in the CONFIG variable in mkspecs/qconfig.pri. The changes to configure prevent CONFIG in qmodule.pri from containing debug and release variables and ensure that QT_CONFIG contains build_all and debug_and_release if appropriate. Configure.app is also adjusted to match this behaviour. The other part of the change is to qt_module_config.prf and qt_plugin.prf. These changes take care of populating CONFIG with the appropriate debug_and_release and build_all variables depending upon what is present in QT_CONFIG. This ensures that the Qt modules and plugins get built with the same configuration as qtbase. The special handling for the qcocoa QPA plugin ensures that it is built in release mode only to preserve the behaviour introduced by commit 5603f94eaa538dbe28fc426065d65a27799adedc. Task-number: QTBUG-26111 Change-Id: I6f65aba50709e1b2431b8b4411ff30a06f7d8aed Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Compile.Morten Sorvig2012-06-141-1/+1
| | | | | | | | | Expressions containing "reinterpret_cast" are not constant expressions according to C++11 rules. Change-Id: Id97729f184983e5bdda180b99cfbe27e2768e09e Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix namespace compilation on OSX.Toby Tomkins2012-06-145-5/+18
| | | | | Change-Id: Ib579ae298a5f894b8b02a5d56567870109bd29bd Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Remove unneeded #includes and namespace wrappersJoão Abecasis2012-06-141-10/+0
| | | | | | | | qvector.cpp no longer contains any code, now that inline functionality has been deferred to QArrayData. Change-Id: I000ef8507e5b8438edd32a762750e4ceaa8aa8ee Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* OpenGL: Update QOpenGLFunctions docs to remove widget codeSean Harmer2012-06-141-4/+25
| | | | | Change-Id: I4246a49444c09d899f2bd7cd2e9353ee0a6859bf Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* QtWidgets: Fix warnings about deprecated QGraphicsView functions.Friedemann Kleint2012-06-144-5/+5
| | | | | | | | Warnings introduced by d76de69b4b60e7e13d5b0602768702e4bf219804 . Change-Id: I613500074a2318a617f18d5b887840ecc3408237 Reviewed-by: Gatis Paeglis <gatis.paeglis@nokia.com> Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
* Change path for 'mousebuttons' widgets exampleGatis Paeglis2012-06-141-2/+2
| | | | | | | Task-number: QTBUG-26121 Change-Id: Icaeb6038d166fb0ffadf1657ddef21c18b3d3be6 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com> Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
* Add install path for qpa windows exampleGatis Paeglis2012-06-141-0/+6
| | | | | | Task-number: QTBUG-26150 Change-Id: I8e981318e05cca6628160aea31281f8e3baaa50f Reviewed-by: Jason McDonald <jason.mcdonald@nokia.com>
* QDoc: Check if index file was already inserted in list.Casper van Donderen2012-06-141-8/+15
| | | | | | | | | | | Previously it was possible to insert exactly the same index file in the map twice by specifying an -indexdir which is the same as -installdir. Probably you can also have two indexes with the same name that happen to have the same creation time, but changes of that happening are slim to none. Change-Id: I6be5fb9d04839026830b9948887b282489b379c0 Reviewed-by: Simon Hausmann <simon.hausmann@nokia.com>
* Remove downstream documentation references from guiGunnar Sletta2012-06-141-43/+0
| | | | | Change-Id: I6c107ed1f1cabe3713e22ec1c7854d5c07dca4b5 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* QNX: Enable additional CPU features to be compiled in for QNXSean Harmer2012-06-142-1/+10
| | | | | | | The QNX toolchain can use Neon on ARM and SSE<X> on x86/x86_64. Change-Id: I36c61fa12b65d806b3cc60a0aefcb63964f9ab7e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Deliver wheel events when window is nullGirish Ramakrishnan2012-06-141-15/+15
| | | | | | | | | | | The generic input plugins do not set the window parameter. So, use the same technique we use with mouse event handling to determine the window to deliver the event to. Done-with: Johannes Zellner Change-Id: I950c0ad2f330dccfdcc41b8d01f62cd39902bc9c Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
* Fix QUrl documentation: FullyDecoded and DecodedMode are a pairThiago Macieira2012-06-141-4/+4
| | | | | | | DecodedMode with FullyEncoded makes no sense whatsoever. Change-Id: I182db7aceb38e4e9398138066022912adec9c413 Reviewed-by: David Faure <faure@kde.org>
* Fix QDnsLookup test again after public DNS servers changedThiago Macieira2012-06-141-1/+1
| | | | | | | | | gitorious.org's IP no longer resolves back to gitorious.org. This fix is temporary, again. Change-Id: I85b5fe1c5e603d23dd3226b843ef42165d4c417b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* eglfs: mark overriden methods with Q_DECL_OVERRIDEGirish Ramakrishnan2012-06-132-8/+9
| | | | | | | | | The current cursor implementation can be a bit hard to read without hints about which methods are overriden. Change-Id: I3376890a13be46e1ece03d1442dd5a15ccd61382 Reviewed-by: Johannes Zellner <johannes.zellner@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* printersupport: Fix cups.pro qmake warningGirish Ramakrishnan2012-06-131-1/+1
| | | | | | Change-Id: I59c8e3021fbf733af003ebd99be4a63e0a68f155 Reviewed-by: Johannes Zellner <johannes.zellner@nokia.com> Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Partial fix for WebKit compilation on WindowsSimon Hausmann2012-06-137-10/+14
| | | | | | | | | | | | | | | | | | | | | | qdatetime.h uses std::min/max and on Windows windows.h (or some subsequent header file) may under certain circumstances define min/max as macros. The easiest way to prevent the windows header files from doing that is to define NOMINMAX in the place right before windows.h is included. The other way is to define min and max to min/max themselves to prevent windows.h from doing its evil thing. If a user of Qt (WebKit in this case) chooses the approach of defining min/max to themselves and then includes qdatetime.h, then a subsequent inclusion of windows.h doesn't work because qdatetime.h undefines min/max. We should not enforce the type of workaround needed, therefore this patch removes the workaround from qdatetime.h and requires user code that happens to include windows header files before qdatetime.h (seldom case) to choose either workaround. Change-Id: I7347eec7369491a065e894cff557004e069453d5 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* AbstractItemView editorForIndex/indexForEditor speedupABBAPOH2012-06-131-0/+8
| | | | | | | | | | Frequent calls to editorForIndex/indexForEditor are very slow because of an implicit conversion from QModelIndex to QPersistentModelIndex. This fix allows to avoid unnecessary conversions when there are no open editors (most common case) Change-Id: Ic072880c9f33a43a20b2a61a42c3ba215c5c33cb Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Send key events to pop-up widget in case there is one.Friedemann Kleint2012-06-133-4/+10
| | | | | | | | | | Make QApplicationPrivate::inPopupMode() static for convenience. Task-number: QTBUG-26095 Change-Id: I98dc1e40d357592b790cd51d7aca60c2be9f380f Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Fix compile issue on AIXAndy Shaw2012-06-121-1/+1
| | | | | | | | | Since local thread storage is used we need to turn this on for the xlc compiler with the -qtls flag. Change-Id: Ib40ec87edada56a062b0c72b7d47b38a6d0b5b13 Reviewed-by: Teemu Katajisto <teemu.katajisto@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Don't use gcc extension for QByteArrayLiteral neitherLars Knoll2012-06-122-17/+1
| | | | | | | | | This extension doesn't work for e.g. default arguments in function declarations. Change-Id: I32b7afa6e01b6af55fb2409179b4fd94cb04cd8d Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Keep the #ifdef for tracking shared pointers in a single functionThiago Macieira2012-06-121-23/+26
| | | | | | | | | | | | | | | If we have it in different functions, then different out-of-line implementations could be selected for each object file, resulting in invalid states. The error I caught was when wrapper.cpp was compiled without tracking and, therefore, did not place a call to internalSafetyCheckAdd. However, it called an out-of-line copy of QtSharedPointer::ExternalRefCountWithCustomDeleter::create, which did set the deleter to remove the safety check. Therefore, keep everything in one function. Change-Id: Ib2c6a606699db49d102704bccdd331ec22a8bd78 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Simple optimisation for the construction of a QSharedPointerThiago Macieira2012-06-121-9/+3
| | | | | | | | | | Let the constructor initialise the "value" member. In the case of create(), which already initialised "value", simply merge the two functions for more readability. Change-Id: I5638b3d42af3d0f5988f815e0f91d591fa1897a8 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Use the copy & swap trick to simplify some code in QSharedPointerThiago Macieira2012-06-121-3/+4
| | | | | Change-Id: I5fa2fae19126bea60b9682ed7765681dd6da8c15 Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Now merge the QtShared::ExternalRefCount class into QSharedPointerThiago Macieira2012-06-122-159/+135
| | | | | | | | | Completing the work of the previous commit: we don't need separate classes. Merge into the main class's body. Change-Id: I2f89b34cb6b7f5f9e8d8b809bebd86656f458644 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Merge QtSharedPointer::Basic into QtSharedPointer::ExternalRefCountThiago Macieira2012-06-121-54/+27
| | | | | | | | | | The basic class existed for legacy only, when internal reference counting was a goal. Since it isn't anymore, we can remove the distinction and simply merge the two classes. Change-Id: Ib7a1c4158a8d71e71fa6afa447938b8b85ddae87 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Merge two internal classes of QSharedPointer and de-virtualise themThiago Macieira2012-06-122-116/+69
| | | | | | | | | | | | | | | | | | | | | The two classes are QtSharedPointer::ExternalRefCountData and ExternalRefCountWithDestroyFn. The split existed because of what Qt 4.5 did before custom deleters existed: the ExternalRefCountData class was a virtual class that contained a destroy() virtual, which was in charge of deleting the data or returning false if it didn't. Turns out that virtual classes was a mistake. This commit de-virtualises them -- we couldn't do it in Qt 4 because of binary compatibility. This saves us one pointer-size in the size of the private, plus the fact that fewer symbols are required (there is no virtual table to be initialised). Additionaly, since a deleter is always stored with the reference count, we don't need the split between the two classes anymore. Change-Id: I1cd9400561dcee089a406a57bd856b1730f18afc Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove "delete value" from QSharedPointerThiago Macieira2012-06-126-137/+46
| | | | | | | | | | | | | | | | | | | | | | | | This allows a QSharedPointer to be used in contexts where the class in question is still forward-declared. This produced a warning in Qt 4 due to the expansion of the template, even if there was no chance of the pointer being deleted there (because the reference count could not drop to zero). Now, not only is the warning removed, but you can actually have the reference count drop to zero in a forward-declared class and it will do the right thing. That's because the deleter function is always recorded from the point of construction and we're sure that it wasn't forward-declared. The unit test for forward-declarations had to be rewritten. The previous version was passing only because the QSharedPointer object was created under the "tracking pointers" mode, which causes a custom deleter to be used in all cases. Task-number: QTBUG-25819 Change-Id: Ife37a4cea4551d94084b49ee03504dd39b8802c1 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* -device: Use $1 instead of $VALGirish Ramakrishnan2012-06-121-3/+3
| | | | | | | | | $VAL just happens to work in resolveDeviceMkspec because it is set in the parent shell environment when the function is called. Change-Id: I67350f2a9e790cc7eca2a73ef6a4a0d7f09b8d3c Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* add SSE2/AVX/Neon/etc. flags to mkspec win32-g++-crossMark Brand2012-06-121-0/+9
| | | | | | | | | Follow-up to 6a51062e996ec38b3ebc1e0de04af73a5c62a1a0 which did this for win32-g++. Change-Id: I3ba0dd8ffca46853844b55b16dc92270fa8a623a Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* mips: dsp and dspr2 can be enabled separately fix dspr2 only compilationHolger Hans Peter Freyther2012-06-123-4/+18
| | | | | | | | | Separate dsp and dspr2 handling. The configure script allows to disable them separately and with this patch it is possible to compile a dspr2 only libQtGui.so. Change-Id: Ifca583c9b46a25c93751967a31ac77eafc5d51e4 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>