summaryrefslogtreecommitdiffstats
path: root/src/compositor/compositor_api/compositor_api.pri
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.13' into 5.14Johan Klokkhammer Helsing2019-09-161-3/+1
|\ | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/client/qwaylanddatadevice.cpp src/client/qwaylandinputcontext.cpp src/client/qwaylandinputdevice.cpp src/client/qwaylandwindow.cpp src/compositor/compositor_api/compositor_api.pri src/compositor/compositor_api/qwaylandquickitem.cpp Change-Id: Ice0d8c7d869c9c46113d6ee6ba3adf895a71d58f
| * Make QT_WAYLAND_COMPOSITOR_QUICK a featureUlf Hermann2019-08-291-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The define was only set when building Qt, not when including public headers in application code. Therefore, the sizes of objects did not match between the client code that calls new and the constructor inside Qt. Unfortunately, adding the additional members breaks binary compatibility. This has already happened between 5.11 and 5.12. It just wasn't apparent from the headers. If we removed the members again now, we would break binary compatibility again. Therefore, the best course of action seems to be acknowledging the break and adding the members also in the headers. [ChangeLog][Compositor][Important Behavior Changes] Between version 5.11 and 5.12 binary compatibility for the wayland compositor module was broken by adding an additional member to various classes. This was not apparent from user code as the member was behind an #ifdef which would only be set while compiling Qt. As several versions of Qt incompatible to 5.11 have already been released now, rolling back the incompatible change would introduce further incompatibility. Therefore, the change is made consistent by unconditionally adding the member to the headers. Fixes: QTBUG-75677 Change-Id: I3c1ee309ad8e0cd0b6389a76fd1d91e6e2be495c Reviewed-by: Johan Helsing <johan.helsing@qt.io> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* | Compositor: some parts depends on opengl feature instead of moduleLiang Qi2019-06-201-1/+1
| | | | | | | | | | | | | | | | | | | | This amends 8663de3fa789d8b8e10c5580b37f6eb3beac9ed6. Task-number: QTBUG-76439 Change-Id: If62252fb63c3261dfd23574830f0f60b99c1d854 Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io> Reviewed-by: Liang Qi <liang.qi@qt.io> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* | Merge remote-tracking branch 'origin/5.13' into devJohan Klokkhammer Helsing2019-05-071-0/+1
|\| | | | | | | | | | | | | | | Conflicts: src/client/qwaylanddisplay_p.h src/client/qwaylandwindow.cpp Change-Id: I50eb5c83a8b81e4bdb032b68d41f429b17d0a74d
| * Compositor: Add qwaylandoutput_p.h to headersJohan Klokkhammer Helsing2019-04-241-0/+1
| | | | | | | | | | | | Fixes: QTBUG-75329 Change-Id: Ifdd93e28ebf971ab10f7d051c2da56d115f2068b Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
* | Compositor: Don't require OpenGL to build the QML APIsJohan Klokkhammer Helsing2019-04-041-5/+10
|/ | | | | | | | | | | | [ChangeLog][Compositor API] The compositor API now works without OpenGL support. This makes the compositor API work with shared memory clients only. If OpenGL clients connect they will currently punch holes in the compositor window, but fixing that is out of scope for this patch. Fixes: QTBUG-74896 Change-Id: I6c1ba82f28ba9edecf380e471124e15d16f9518e Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix incompatibility between QML and C++ instantiated objectsJohan Klokkhammer Helsing2018-08-291-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This fixes a source incompatibility introduced in 9ebba7c3a. In Qt 5.11 it was possible to have the following code: XdgShellV6 { property XdgToplevelV6 top onToplevelCreated: top = toplevel } After, 9ebba7c3a, however, this would fail because XdgToplevel refers to QWaylandXdgToplevelV6ParentClass, while QWaylandXdgShellV6::toplevelCreated emits a QWaylandXdgToplevelV6. It would also break instanceof, i.e.: onToplevelCreated: console.log(toplevel instanceof XdgToplevelV6) This patch reverts to C++ and QML using the same type (no subclassing for QML types), but still lets the items have children in QML by putting the macro inside each class instead. Task-number: QTBUG-70090 Change-Id: I8efa8f68ebc4dc2289b4a9b96402b0c00d45547d Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix compilation of QtWayland without QtQuickAlexander Schlarb2018-08-031-5/+5
| | | | | Change-Id: I0baf542f89274f48bf7d02121a07d64f0f3a001b Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Compositor API: Add support for hardware compositingJohan Klokkhammer Helsing2018-02-091-2/+4
| | | | | | | | | | [ChangeLog][Compositor] Add a tech preview for a plugin-based hardware layer API and a VSP2 implementation (for Renesas R-Car M3 and H3). Task-number: QTBUG-64600 Task-number: QTBUG-64604 Change-Id: Ia4abfb6343cf4f006ba408d293ec9464cd6f31b7 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Fix build without feature.draganddropTasuku Suzuki2017-01-151-2/+7
| | | | | Change-Id: I4fff1a8d48483298eebecdc751fe76e80444bd99 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Fix build without feature.imTasuku Suzuki2017-01-131-4/+9
| | | | | Change-Id: Ie29b87a4198cbe34df6746b10c7a17ee1fcd608d Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* Move qtwayland over to use the new configuration systemLars Knoll2016-11-231-1/+1
| | | | | | | | | | | | | Re-use configuration results from qtbase where possible and move all pkg-config handling over to be done at configuration time. Since waylandclient and waylandcompositor are two independent libs, this required some duplication of features and libraries used by both in the configure.json files. Change-Id: I1f3ec56c85cb780324cc7634a3ad7951125853a0 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Add mode support to QWaylandOutputPier Luigi Fiorini2016-10-031-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Outputs usually have more than one mode, add an API to support them. When sizeFollowsWindow is true, modes are replaced by one with the window size and refresh rate. In that circumstance the mode changes when the window is resized. The sizeFollowsWindow property default value is no longer true. The setGeometry() method is gone as it doesn't make sense now, the setWidth() and setHeight() methods are now private slots to resize the resolution as the window resizes (and sizeFollowsWindow is true). Refresh rate is expressed in mHz rather than Hz just like the Wayland protocol. A compositor implementation may choose to add modes if it has access to hardware information, it will call addMode() for each mode and then invoke the setCurrentMode() method that sends the modes list to the client. The preferred mode is indicated with a boolean parameter to the addMode() method. Change-Id: Iffed4784ccef695c276ebd800172957f4cff3324 Task-number: QTBUG-49814 Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io> Reviewed-by: Johan Helsing <johan.helsing@qt.io>
* Make QWaylandKeymap a QObjectJohan Klokkhammer Helsing2016-09-301-0/+3
| | | | | | | | | This makes it possible to use defaultSeat declaratively by allowing it to be uninitialized until the QWaylandCompositor::create has been called. Change-Id: I962cc7cc82a0bbc9240abb50cf92dee77e4a0ba6 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@hawaiios.org> Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
* Compositor API: rename QWaylandInputDevice to QWaylandSeatJohan Klokkhammer Helsing2016-08-111-3/+3
| | | | | | | | | | | | The name QWaylandInputDevice could be confusing and misleading: - A QWaylandInputDevice was not one input device, but a collection of many. - Classes that sounded like they should inherit from it did not, i.e: QWaylandKeyboard, QWaylandPointer and QWaylandTouch. - The Wayland protocol already has another term for this, which is seat. Change-Id: I9d9690d5b378075d9dddaeb8cf18395c7f47603e Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* Compile with -no-openglJohan Klokkhammer Helsing2016-07-201-1/+3
| | | | | | | | | | | | | | QtWayland has not compiled without OpenGL for a while. This patch fixes the compilation issues and removes the old config variable, "QT_WAYLAND_GL_CONFIG" and instead checks for the presence of "opengl" in "QT_CONFIG". A new define is also introduced, QT_WAYLAND_COMPOSITOR_QUICK, because it may eventually be possible to use create a QtQuick compositor without OpenGL. Task-number: QTBUG-54322 Change-Id: Ica7b3b320212d4ae1f8b1053725b73c83739c73c Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* Fix text-input support for new APIJan Arne Petersen2016-04-181-2/+3
| | | | | | | | | | | | | | | | Update text input support to upstream text-input protocol v2 from wayland-protocols. Remove support for input-method protocol for now. Map text-input protocol on compositor side to the Qt input method API, this allows to use any qt platform input method on compositor side (especially qtvirtualkeyboard). Add support for qtvirtualkeyboard to pure-qml example. Implement all missing functions of the text-input protocol. Change-Id: I597451ff65454a63dff86026b6a8d1ffbe07ce02 Done-with: Zeno Endemann <zeno.endemann@kdab.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@kdab.com>
* Add API to grab a surface's contentGiulio Camuffo2016-04-181-0/+2
| | | | | | | | This patch adds a new QWaylandSurfaceGrabber class. The user can use it to grab a surface's content, and get a QImage with the data. Change-Id: I25dd72a8ba39201cd91addbfc976b93ca1e05112 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
* Add surface roles backGiulio Camuffo2016-02-111-0/+2
| | | | | | Task-number: QTBUG-49809 Change-Id: Id62ddea68c89b6999b66d3df8eeeffd858ae844f Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* Remove the QWaylandOutputSpaceJørgen Lind2015-09-181-3/+0
| | | | | | | | We don't need this abstraction anymore since we don't have global coordinates in the core api anymore Change-Id: I553a736a0e71026447d6a0af3f8a64607b8c8f06 Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* Make QWaylandQuickItem use pimplJørgen Lind2015-09-161-2/+3
| | | | | Change-Id: Ic2c0707d8576f72e1c6ae6e8c2e026882a5733b6 Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
* Make the default wl_shell available from QMLJørgen Lind2015-08-281-2/+2
| | | | | | | | | | | | | | This finaly ties together how to use QWaylandQuickItems with different shells It was required to decouple QWaylandView from the QWaylandQuickItem since QML doesn't play to well with muliple inheritance. The QWaylandQuickItem can be retrieved from the QWaylandView which is now conveniently a QObject. Also the QWaylandQuickItem owns the QWaylandView. This architecture also leaves room for creating a QWaylandWidget :) Change-Id: Ib8a00e6f17f0f1bfc3ff244753f021c76db22cb1
* Move qwltouch_p.h into qwaylandtouch_p.hJørgen Lind2015-08-281-0/+1
| | | | Change-Id: Id93b3d70fa97307d905300dc4fc842bcf5ce5f1d
* Move QWaylandKeyboardPrivate away from wayland_wrapperJørgen Lind2015-08-281-0/+1
| | | | Change-Id: I77dce1eecdda21f4a9907d1cd7fafe23de326136
* Move QWaylandPointerPrivate into a _p file and remove the apiJørgen Lind2015-08-281-0/+1
| | | | | | and make sure all other classes uses the public QWaylandPointer type Change-Id: Ie7ff24160c253ff700eb27eb46788fe021386dd7
* Remove QtWayland::InputDeviceJørgen Lind2015-08-281-0/+1
| | | | | | | and add QWaylandInputDevicePrivate. Also make sure noone holds a reference to the private instance. Change-Id: Ic2327595d58d6308e1e2699370f53aef47061b04
* Remove QtWayland::Compositor and add QWaylandCompositorPrivateJørgen Lind2015-08-281-0/+1
| | | | | | Embrace PIMPL Change-Id: I8c8b5971e15c208317ff33231bda1513e7b8d489
* Fix missing file rename from QWayalandQuickView -> ....ItemJørgen Lind2015-08-281-3/+2
| | | | Change-Id: I12a12c3f476d223dc278c34ab1a9a39cc5b5f9e5
* Rename QWaylandSurfaceView to QWaylandViewJørgen Lind2015-08-281-5/+5
| | | | | | and rename QWaylandSurfaceItem to QWaylandQuickView Change-Id: I989b482eb79df06e9f265bc2b0ef6b3dce7509d6
* Public input apisJørgen Lind2015-08-281-2/+12
| | | | Change-Id: I60ec2fd9f4afe54198d9c476b28f9f15a661e9ca
* Rework how we manage extensionsJørgen Lind2015-08-281-4/+0
| | | | Change-Id: If2cbf096e7419bc1bda007d5167ce39d1a5d50ae
* Introducing QWaylandOutputSpaceJørgen Lind2015-08-281-2/+5
| | | | | | | | | | Its purpose is to make it possible to have multiscreen environments, and also multiple multioutput environments It is also an abstraction to make it clear that outputs are arranged in a 2d space Change-Id: I418509996a03b2ca1a12aec9c9e25e143a15a10f
* Move the output from QWaylandSurface to the QWaylandSurfaceViewJørgen Lind2015-08-281-0/+1
| | | | | | | | | and add a property called primaryOutput on the QWaylandSurface. Also add some bookkeeping in QtWayland::Output so it knows what surfaces and views it currently holds, sending the enter and leave events automatically. Change-Id: Ib6efbc6f8157657fb4451b751bba1cb5345b7906
* Add QWaylandOutput to support multiple outputsPier Luigi Fiorini2015-02-081-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Add a new QWaylandOutput class to support multiple outputs. Each QWaylandOutput need a window for rendering. Rename OutputGlobal to Output and Output to OutputResource. Add support for physical size, mode and available geometry. Use better defaults for geometry and refreshRate from the QWindow if available. A window is no longer passed to QWaylandCompositor constructor and all output related methods are removed, however one or more outputs are required for hardware integration. QWaylandCompositor returns a list of outputs and offers an API to add or remove outputs. Hardware integrations can run headless. Change-Id: I742996571ddb78328f7bfa4f79b25a81995279e1 Done-with: Jan Arne Petersen <jan.petersen@kdab.com> Done-with: Jørgen Lind <jorgen.lind@theqtcompany.com> Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* Remove unused headerPier Luigi Fiorini2015-01-301-1/+0
| | | | | | | Remove qwaylandcompositor_p.h leftover. Change-Id: I2ede92db92894f14301c89cc28c896cfdc6d3563 Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* Expose surface's client to QMLPier Luigi Fiorini2014-08-171-0/+3
| | | | | | | | | | | | | | | Introduce QWaylandClient class that wraps wl_client credentials and has a method to destroy the client. Add QWaylandClient object as a QWaylandSurface property. This come in handy for example when the compositor wants to kill the process of an unresponsive surface or wants to know client credentails. WaylandClient typedef is now useless thus is replaced by QWaylandClient. Change-Id: I997ec459af0f19baef67e7420c90937b197b2e1d Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* Do not list a non-existing file in the projectLaszlo Agocs2014-08-111-1/+0
| | | | | Change-Id: I191eb91a160486497c484dde7b92f06bb576cbbe Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
* Introduce QWaylandSurfaceInterfaceGiulio Camuffo2014-07-301-2/+2
| | | | | | | | | | | | | | | | | | | | | Wayland is designed to be easily extensible with new protocol, unfortunately it currently isn't possible with QtCompositor. A QtWayland compositor has two ends: the Wayland end and the shell/wm end, which may be implemented in QML. These two ends communicate mainly through the QWaylandSurface and the QWaylandSurfaceView classes, but the Wayland end is currently unable to hook into custom protocol extensions. This is the purpose of the new QWaylandSurfaceInterface class, and of QWaylandSurfaceOp and its subclasses: based on the QEvent model, QWaylandSurfaceOp has only a type member, and its type specific subclasses have additional data if needed. A custom protocol implementation, such as xdg_surface or my_fancy_surface, will use a QWaylandSurfaceInterface subclass which will call its specific protocol functions when it gets the relative operation requests from the parent surface. The QWaylandShellSurface class is now redundant so it is removed. Change-Id: I37a86157a251626215f57ce030c77a26bfd65126 Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Make it possible to have custom shell implementationsGiulio Camuffo2014-04-291-2/+6
| | | | | | | | | | | | | | | | Different compositors may need different shell behaviors, or even different shell protocols. A smartphone compositor, for example, may want to make wl_shell_surface::set_popup or other requests noop, because they don't make sense in the formfactor, or it may even want to not implement wl_shell_surface at all, but some smartphone_shell_surface. A compositor may define its own shell implementation by overriding QWaylandCompositor::initShell(), and creating there its interface instance. The default implementation still creates the built-in wl_shell_surface implementation. Change-Id: I143b0cd4e30e31d4051ada6e562d486d9bf1a751 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Split QWaylandSurface in a model and view fashionGiulio Camuffo2014-04-291-2/+4
| | | | | | | | | | QtQuick compositors already use a view class (QWaylandSurfaceItem), so add a new QWaylandSurfaceView, which is subclassed by QWaylandSurfaceItem, and move the view related methods of QWaylandSurface there. A QWaylandSurface can have many views. Change-Id: I7e92fe1f7e9d252f5f40a3097feabb5f3318b03a Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Rework the way buffers are used and renderedGiulio Camuffo2014-04-291-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | The current way buffers are handled is sub-optimal. They are hidden inside QtWayland::Surface and the actual renderer, be it QtQuick or anything else, cannot get a direct hold of them, nor it can directly control when the underlying textures are created or deleted. The main additions in this commit are the splitting of the QtQuick code path and the new QWaylandBufferRef and QWaylandBufferAttacher classes. QWaylandBufferRef allows a renderer to retain a reference to a wl_buffer even after the underlying Surface discarded it. That allows the renderer to directly decide when to destroy the texture of the buffer. QWaylandBufferAttacher is a pure virtual class which must be implemented by the renderer. Instances of it will be assigned to the QWaylandSurfaces, created. Its attach() virtual method will then be called when a new buffer is committed to the surface. The renderer can then choose to immediately create a texture or wait for some later time. It is its responsibility to create and destroy the GL texture, it will not happen automatically. This functionality is implemented for QtQuick in the new QWaylandQuickCompositor and QWaylandQuickSurface classes. Change-Id: I674b4e5fb8c65c3b1c582e33ff3a0b0e45f2acc9 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* Don't clobber the m_damaged state during rendering.Gunnar Sletta2014-01-241-4/+2
| | | | | | | | | | | | | | | | | | | | | | If the QWaylandSurfaceNode had m_damage during preprocess() (which it could get if the GUI thread got a surfaceDamaged) it would call into the item, update its texture and clear its m_damaged state. This resulted in that the next time we advanced the buffer queue, the item would not have m_damaged set and as a result, the texture would not be updated. Also, the call from preprocess() to updateTexture, though protected by a mutex in preprocess(), touched a number of variables on the GUI thread which were not being protected there, such as m_damaged and smooth(). The QWaylandSurfaceNode was doing this primarily to deal with direct rendering which has been removed pending a better solution, so we replace its use with the built-in QSGSimpleTextureNode. Change-Id: Ifccb6b1149980b4796a182fa8525446a00bbe57f Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Add Drag&Drop support to compositorJan Arne Petersen2013-11-221-2/+4
| | | | | Change-Id: Ic606ac4dfbb1c55ddb81ac8a912132102753455c Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Add support for text protocol to compositorJan Arne Petersen2013-11-221-2/+4
| | | | | Change-Id: Iff22ba8b10f4ae986acba416d6fbbd4cf4f722e5 Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
* Compositor: Extend QWaylandSurfaceNode from QSGSimpleTextureNodeAndrew Knight2013-10-241-4/+2
| | | | | | | | | Use the convenience base class to remove replicated code and make use of QSGTextureMaterial's internal optimizations. Change-Id: I37e2728eeb62f8cc52ea22c3cc4057d63f948c9b Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com> Reviewed-by: Andy Nichols <andy.nichols@digia.com>
* Qt-ify the QtCompositor moduleAndy Nichols2013-02-081-14/+15
| | | | | | | | | | | | | | | | | | | | Currently the QtCompositor library and API do not follow the Qt API naming conventions. This commit intends to fix these inconsistencies. filenames start with q headers containing private API's end in _p public API classes begin with Q use the qt namespace macros where necessary Wayland namespace is now QtWayland wayland_wrapper classes are now private API's It's important to make these changes not just for stylistic reasons, but also because when qmake builds the module in checks for these conventions to determine how to deploy the include files. Change-Id: I8bfadeceda92a0f52cb73c704551da75540e7587 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* make use of qtHaveModule()Oswald Buddenhagen2013-01-081-1/+1
| | | | | | Change-Id: I7cd0b3e1ac9f326b249bc8ed2ca5abf522cc619a Reviewed-by: Jørgen Lind <jorgen.lind@gmail.com> Reviewed-by: Tasuku Suzuki <stasuku@gmail.com>
* Fix build when QtQuick is not availableLaszlo Agocs2012-06-181-8/+9
| | | | | Change-Id: I112e8fd8bf9181b4cb72bb9f99be958bd7499e3d Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Add a custom WaylandSurfaceNode with its own materialsAndy Nichols2012-05-181-2/+6
| | | | | | | | | | | | With the previous WaylandSurfaceNode based on QSGSimpleTextureNode, QSGTexture's created from SHM buffers would always have and use their alpha channels, despite the useTextureAlpha flag being set to false. Now when the useTextureAlpha flag is set to false, we use a material that ignores the textures alpha channel. Change-Id: I9cc33939f37856495f8885357f49de5ffdd81d1f Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com> Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
* Build with latest qtdeclarative.Samuel Rødal2012-03-051-1/+1
| | | | | | | Used the rename-qtdeclarative-symbols.sh script from qtdeclarative/bin. Change-Id: I000b8afc3418fe862c51ce868996a4fd3de495be Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>