profile/ivi/qtwayland.git
12 years agoAdded reporting of window and content orientation to surface extension.
Samuel Rødal [Wed, 25 Jan 2012 13:37:22 +0000 (14:37 +0100)]
Added reporting of window and content orientation to surface extension.

Change-Id: I6e182c048282f5edd30f49be19dcc0f020679b85
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoRevert "Do not attach null buffer."
Laszlo Agocs [Mon, 30 Jan 2012 14:16:22 +0000 (16:16 +0200)]
Revert "Do not attach null buffer."

This reverts commit 42ed12656016a96b966b7b5e52f0b684ad65c227.

Weston has been fixed so attaching null buffer on hide is now a valid
operation.

Change-Id: I0fc6af7f87c97e07075da03ed1b54d2e3c1d45fd
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoDo not attach null buffer.
Laszlo Agocs [Sat, 28 Jan 2012 18:56:28 +0000 (20:56 +0200)]
Do not attach null buffer.

Apparently Weston does not like this and causes instant crashes when
hiding a top-level widget.  The QtCompositor-side behavior is dubious
too although at least that does not crash. Nevertheless attaching a
null buffer seems unnecessary.

Change-Id: I1d7fe3e0b05e5d77773b661a71bc37311968eded
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoNull out the frame callback ptr properly.
Laszlo Agocs [Sat, 28 Jan 2012 18:47:11 +0000 (20:47 +0200)]
Null out the frame callback ptr properly.

Otherwise shm based apps (widgets) will crash randomly.

Change-Id: I5345ca9419a6702170f93fd817bbab4d9ef2bc59
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoFix compilation for qwidget and qwindow compositor examples
Laszlo Agocs [Mon, 30 Jan 2012 07:57:04 +0000 (09:57 +0200)]
Fix compilation for qwidget and qwindow compositor examples

Change-Id: If720f7f4797e319ab03d02b6ecb9c88cb71356c2
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoRemove "All rights reserved" line from license headers.
Jason McDonald [Tue, 24 Jan 2012 05:35:27 +0000 (15:35 +1000)]
Remove "All rights reserved" line from license headers.

As in the past, to avoid rewriting various autotests that contain
line-number information, an extra blank line has been inserted at the
end of the license text to ensure that this commit does not change the
total number of lines in the license header.

Change-Id: I08d8673382f0230d5c5a22a25efaf5c45cef539a
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
12 years agoFix qt_compositor.pri to make header exporting work.
Laszlo Agocs [Fri, 27 Jan 2012 11:02:32 +0000 (13:02 +0200)]
Fix qt_compositor.pri to make header exporting work.

Change-Id: I5c54c65f57805372cba101dd62f34818580a90aa
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoFix compilation
Laszlo Agocs [Fri, 27 Jan 2012 11:03:53 +0000 (13:03 +0200)]
Fix compilation

Change-Id: Ia3e62ed30467bb52555c353a30440ebcc3529d0b
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoAdd possibillity of overriding invertedY flag for wl_surfaces
Jørgen Lind [Thu, 26 Jan 2012 14:28:36 +0000 (15:28 +0100)]
Add possibillity of overriding invertedY flag for wl_surfaces

Change-Id: I0f4c2696ae5c7071275af326c924dc1eaed6d5b6
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
12 years agoMake it possible not to have queing of buffers on the serverside
Jørgen Lind [Thu, 26 Jan 2012 14:02:09 +0000 (15:02 +0100)]
Make it possible not to have queing of buffers on the serverside

Change-Id: Ic7d3221321e2d7ecc69e56b7ad7a23322e65995d
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
12 years agoRevert "Do not generate mouse event on the first motion event."
Laszlo Agocs [Thu, 26 Jan 2012 13:19:42 +0000 (14:19 +0100)]
Revert "Do not generate mouse event on the first motion event."

This was a misunderstanding. The default (and the only) behavior with
QWindows is to have mouse tracking enabled. QML or QApplication can
then filter out the button-less moves, if needed.

This reverts commit bd0681daf6fa91afee16bba619f17b7bd3bd5460.

Change-Id: I2f641a2826e1578f103d1e29939b661cbae4fcc2
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Sanity-Review: Samuel Rødal <samuel.rodal@nokia.com>

12 years agoDo not generate mouse event on the first motion event.
Laszlo Agocs [Wed, 25 Jan 2012 18:36:19 +0000 (19:36 +0100)]
Do not generate mouse event on the first motion event.

This event comes before the button event and thus must not result in a
Qt mouse event. Instead, the button event will generate the
MouseButtonPressed with the position sent in this motion.

Change-Id: I97887d4d5fcd54575d6f4e9523a04569424c0bc2
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoAdded missing include to fix build.
Samuel Rødal [Wed, 25 Jan 2012 08:45:40 +0000 (09:45 +0100)]
Added missing include to fix build.

Fixes build after change in qtbase requiring Q_DECLARE_METATYPE(T*) to
be fully defined.

Change-Id: I741d91eb0e7e480b5a35a4616b32a90043f01a63
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
12 years agoAdapted to new orientation API in qtbase.
Samuel Rødal [Fri, 13 Jan 2012 12:58:53 +0000 (13:58 +0100)]
Adapted to new orientation API in qtbase.

Change-Id: I455d06a364a89b6558ab00b15d9541ea397adcd5
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
12 years agoUpdate obsolete contact address.
Jason McDonald [Fri, 20 Jan 2012 05:26:51 +0000 (15:26 +1000)]
Update obsolete contact address.

Replace Nokia contact email address with Qt Project website.

Change-Id: Ib67c393df41c539deae0ef71e0acc13029ceb46d
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
12 years agoFix duplicated QOpenGLFunctions usage
Laszlo Agocs [Fri, 20 Jan 2012 13:22:23 +0000 (15:22 +0200)]
Fix duplicated QOpenGLFunctions usage

Change-Id: I3c90b705c0ef07e824768975fe1889e394acd82b
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agopick the right gl version
Gunnar Sletta [Wed, 18 Jan 2012 17:16:28 +0000 (18:16 +0100)]
pick the right gl version

Change-Id: I1bee7028f9cf53383bb76678f1446b86cc2d007f
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoOffer the retained selection when no data source is available anymore
Laszlo Agocs [Tue, 17 Jan 2012 15:30:42 +0000 (17:30 +0200)]
Offer the retained selection when no data source is available anymore

When retained selection is enabled, clipboard data will be available
even after the client, that offered the data, exits.

Change-Id: I8158eba29b14092ce150245410b62912011051fd
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoImplement selection offers from compositor to clients.
Laszlo Agocs [Tue, 17 Jan 2012 13:32:32 +0000 (15:32 +0200)]
Implement selection offers from compositor to clients.

It is a hack but works beautifully. It allows the compositor to
participate in copy-paste which becomes mandatory when there is UI
running in the compositor process.

Change-Id: I1993d8705a26159eff0c9947244b66e954b9f460
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoUpdate Wayland sha
Jørgen Lind [Tue, 17 Jan 2012 09:46:56 +0000 (10:46 +0100)]
Update Wayland sha

Change-Id: Ic248b08863e661259ad5f96c35b1135d9de594f8
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoRemove declarations of functions not longer implemented
Jørgen Lind [Tue, 17 Jan 2012 09:45:07 +0000 (10:45 +0100)]
Remove declarations of functions not longer implemented

Change-Id: Ia258fe47d59e3c5a844b939245ad50e2a4f1a6f1
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoRemove unnecessary client list generation in Compositor
Laszlo Agocs [Tue, 17 Jan 2012 13:50:14 +0000 (15:50 +0200)]
Remove unnecessary client list generation in Compositor

Change-Id: Ia240a19a14098bdc76374b9537d501927a6a1a74
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoNull pointer check
Paul Olav Tvete [Tue, 17 Jan 2012 14:26:05 +0000 (15:26 +0100)]
Null pointer check

managedClient() is allowed to return 0.

Change-Id: I67f4ad9cc9bf40a829c2a26895529cabf5a716c0
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
12 years agoMake sure that subSurface extension handling in client is initialized
Jørgen Lind [Tue, 17 Jan 2012 09:44:01 +0000 (10:44 +0100)]
Make sure that subSurface extension handling in client is initialized

to zero, so that if the compositor doesn't support the extension we know
about it.

Change-Id: Ia39a832d08fe4e2a2d94e18b84f2783206283ae4
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
12 years agoAvoid using an extra event for each touch report.
Laszlo Agocs [Mon, 16 Jan 2012 07:39:29 +0000 (09:39 +0200)]
Avoid using an extra event for each touch report.

Instead of using touch_frame the number of non-stationary points (that
is, the number of touch events sent) is included in the touch events
themselves.

Change-Id: Ied29f05d7e00676d47ee0b91006cafb4569951c4
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoFix license in extensions.
Jørgen Lind [Mon, 16 Jan 2012 07:14:06 +0000 (08:14 +0100)]
Fix license in extensions.

The scanner adds the commenting syntax.

Change-Id: Ia480dab42302395e2f562e5bfc9015ef470ddc08
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoDo not send stationary points
Laszlo Agocs [Mon, 16 Jan 2012 06:51:18 +0000 (08:51 +0200)]
Do not send stationary points

Change-Id: Id534965df614bcbff3bfe5f8fd5484c370222196
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoSend the contents of the rawScreenPositions() list too.
Laszlo Agocs [Sat, 14 Jan 2012 13:31:58 +0000 (15:31 +0200)]
Send the contents of the rawScreenPositions() list too.

Change-Id: If43c4e07ae919b77050aaf5dcffea3b8d48ac460
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoRename touch extension interface and fix event sending
Laszlo Agocs [Sat, 14 Jan 2012 12:58:35 +0000 (14:58 +0200)]
Rename touch extension interface and fix event sending

Follow the naming convention of other extensions.

The events are now posted only to the client to which the focus
surface belongs, the check was previously missing.

Change-Id: Ie43b6e887b64c7bed1377babb368129753a3cd0f
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoUpdate license headers.
Jason McDonald [Mon, 16 Jan 2012 04:33:00 +0000 (14:33 +1000)]
Update license headers.

All code in this module outside of src/plugins/platforms/wayland should
carry a copy of the BSD license header.  The master copy of this header
lives at qtbase/header.BSD.

Change-Id: Icd56f24f4a3d309db4c1c3aaef25618680c07f6e
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoIntroduce a touch protocol extension.
Laszlo Agocs [Fri, 13 Jan 2012 15:37:49 +0000 (17:37 +0200)]
Introduce a touch protocol extension.

Using this opt-in protocol extension all data from QTouchEvent will
properly be delivered to the clients.

By default compositors will still use the standard and limited
protocol for touch events to remain compatible with non-Qt
clients. However by calling enableTouchExtension() in the compositor,
touch events will be sent through the new protocol and thus Qt clients
will receive proper QTouchEvents. Non-Qt clients will get no touch
data in this mode.

The contents of the rawScreenPositions() list are not yet delivered as
the size implications remain to be checked.

Change-Id: I981b9c4d44ea808a95b770bf948320abd47fc036
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoRemove the MDI compositor.
Robin Burchell [Fri, 13 Jan 2012 08:40:40 +0000 (10:40 +0200)]
Remove the MDI compositor.

This was broken by the recent input rewrites, and isn't really the 'correct'
future-proof path anyway. Wayland is more advocating client-side decorations
rather than compositor-side decorations, and this won't work in that world.

Change-Id: I187084d7eea785eda43e8658cfd2120205eea211
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoFix handleScreenOrientationChange call in wayland plug-in.
Laszlo Agocs [Fri, 13 Jan 2012 12:18:02 +0000 (14:18 +0200)]
Fix handleScreenOrientationChange call in wayland plug-in.

Change-Id: Ib8abd146c2bd30b59c6aba0aa9a28f70133b25e9
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoDo not use the removed primary flag for touch points.
Laszlo Agocs [Fri, 13 Jan 2012 12:13:50 +0000 (14:13 +0200)]
Do not use the removed primary flag for touch points.

Change-Id: I5ac4bf15b89a7d352c9971e6ce4882d49e686838
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoUse QOpenGLFunctions instead of presuming GL methods exist.
Robin Burchell [Thu, 12 Jan 2012 18:41:32 +0000 (20:41 +0200)]
Use QOpenGLFunctions instead of presuming GL methods exist.

They may not always exist, especially on desktop GL, so this is incorrect and
won't build in some cases.

Credit to Samuel Rødal for setting me on the path :)

Change-Id: I89296c5ed67f9388cceedb08cd68a7b5560be5e9
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoReplaced missed instance of Wayland::Surface->clientHandle()
Andy Nichols [Thu, 12 Jan 2012 18:24:28 +0000 (19:24 +0100)]
Replaced missed instance of Wayland::Surface->clientHandle()

This was if EGL_WL_request_client_buffer_format was defined.

Change-Id: Ic96be10a981b79d0d2f62bc165b57130398c385a
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
12 years agoFix linking error
Kent Hansen [Thu, 12 Jan 2012 06:34:41 +0000 (07:34 +0100)]
Fix linking error

Missing "QT += declarative" caused the Q_DECLARATIVE_EXPORT macro to
be defined incorrectly, so the linker would complain about missing
symbol qdeclarativeelement_destructor.

Change-Id: I9638377ddf9478b452362f5ee8c86c0e7b844fc0
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoMake touch events working in the qml example compositor.
Laszlo Agocs [Wed, 11 Jan 2012 14:18:21 +0000 (16:18 +0200)]
Make touch events working in the qml example compositor.

Change-Id: I03318359d13caf7287671bcc9e01da91acb928dd
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoMake touch event sending more robust in the InputDevice.
Laszlo Agocs [Wed, 11 Jan 2012 14:01:30 +0000 (16:01 +0200)]
Make touch event sending more robust in the InputDevice.

At least it won't crash and proper warnings are shown when the
slightly obscure pointer focus is not used properly in the compositor.

Change-Id: I2c970d197176b588f38a750e3cc805aae4d6c049
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoDon't crash when sending touch events.
Laszlo Agocs [Wed, 11 Jan 2012 13:50:51 +0000 (15:50 +0200)]
Don't crash when sending touch events.

Change-Id: I62bf4913338e6daa3245400b0e2c7004907cb29a
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoMove event handling into WaylandInput api
Jørgen Lind [Wed, 11 Jan 2012 08:35:39 +0000 (09:35 +0100)]
Move event handling into WaylandInput api

Qt only gives us 1 input device as of now, ie. the mouse/keyboard and
touch events. However, at some point in the future, this will change, so
that the events will have a device id. This will ie on x map to the same
device, but on evdev this can be different devices.

Also this is part of what is needed to implement grabbing

Change-Id: Ice049502d6f0f53fd06142d4dedde05806d60120
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoFix so that not all mouse events end up being key events as well
Jørgen Lind [Thu, 5 Jan 2012 12:13:29 +0000 (13:13 +0100)]
Fix so that not all mouse events end up being key events as well

in the Window compositor

Change-Id: I9d88e15ea7ac810a18f6a5b962109d27d2d883a7
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoAdd global x and y coordinates to our mouse events
Jørgen Lind [Tue, 10 Jan 2012 11:28:32 +0000 (12:28 +0100)]
Add global x and y coordinates to our mouse events

Qt applications don't need global x and y, but the protocol dictates it,
so someone else might need it. We still keep the api to just use the
local coordinates

Change-Id: I4b34df935a6692a8d72946c16603d3d600514161
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoRemove unused variables from wlcompositor and wlsurface
Jørgen Lind [Tue, 10 Jan 2012 11:07:48 +0000 (12:07 +0100)]
Remove unused variables from wlcompositor and wlsurface

and add the popupinterface with updated sha1

Change-Id: I4c35039451edc0175be4f570b6de1036a147d86f
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Sanity-Review: Samuel Rødal <samuel.rodal@nokia.com>

12 years agoHandle changeCursor in QWindowCompositor
Jørgen Lind [Tue, 10 Jan 2012 07:14:36 +0000 (08:14 +0100)]
Handle changeCursor in QWindowCompositor

Change-Id: I8ef3b9b36aad00177170f98bcc5c832f884bab04
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoHandle mouse focus in the QWindowCompositor
Jørgen Lind [Tue, 10 Jan 2012 07:13:55 +0000 (08:13 +0100)]
Handle mouse focus in the QWindowCompositor

Change-Id: Ibb994eb8b9e2c69aecdee7daf704475d4d84b183
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoExpose the mouse focus functions from Wayland::Compositor
Jørgen Lind [Tue, 10 Jan 2012 07:09:58 +0000 (08:09 +0100)]
Expose the mouse focus functions from Wayland::Compositor

For Compositors to handle mouse focus handling, ie enter/leave. This
calls down into wayland-server which keeps track of which surface holds
the focus. Trivial implementation in compositor would be to call
this function for all mouseMove events. I believe overhead should not be
significant.

Change-Id: I8fdd5115cc512562c1a8d8b90c28f8ef2d5b53c9
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoCleanup Wayland::Surface's client handle logic
Jørgen Lind [Tue, 10 Jan 2012 07:06:45 +0000 (08:06 +0100)]
Cleanup Wayland::Surface's client handle logic

This is code which is either fairly old or where the api has changed.
Anyway, Surfaces allways have a client handle in the resource, so no
need to check it or store it.

Change-Id: If0be4bed177d42f168b5384a820b8e681e6d9539
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoCreate a ShellSurface class
Jørgen Lind [Mon, 9 Jan 2012 17:53:22 +0000 (18:53 +0100)]
Create a ShellSurface class

so that we can actually do something usefull in the callbacks

Change-Id: Ie8e85757bf5c90caa40db34df1b8bc642ba09962
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoDont keep track of the focus surfaces
Jørgen Lind [Mon, 9 Jan 2012 18:02:16 +0000 (19:02 +0100)]
Dont keep track of the focus surfaces

waylands-server does this for us

Change-Id: Ib9980d6023b9b80a9823162d1685ae64da5b61e0
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoDirect rendering fix for previous fix.
Paul Olav Tvete [Tue, 10 Jan 2012 12:40:31 +0000 (13:40 +0100)]
Direct rendering fix for previous fix.

In the direct rendering case we disown the buffer, so we end up in
yet another strange state. This code definitely needs refactoring...

Change-Id: Ie5495f9cb1e993e195ba9ecbe19f74425600efa9
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoMake compositor handle subsurfaces with shm buffers.
Jørgen Lind [Sat, 7 Jan 2012 19:28:25 +0000 (20:28 +0100)]
Make compositor handle subsurfaces with shm buffers.

So we'r lying for now for shm buffers, and assuming they
have allways been displayed.

Also, this patch fixes so that if you attach a buffer, and the last
buffer has not gotten any damages, then it will be released.

Change-Id: Id1b9789aa8e4dcff75147f6c96220039defc0d8f
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
12 years agoWhen changing the cursor, call damage on it
Jørgen Lind [Mon, 9 Jan 2012 07:58:08 +0000 (08:58 +0100)]
When changing the cursor, call damage on it

so the image is recreated on the server side. If we don't do this any
the QImage/QPixmap on the serverside will not change its cache key

Change-Id: Ie085038e467a4f9676a32bdbecbd27e7cca4c0ff
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoAdd an interface to call damage on a wl_buffer
Jørgen Lind [Mon, 9 Jan 2012 07:56:35 +0000 (08:56 +0100)]
Add an interface to call damage on a wl_buffer

Change-Id: Id3814572be31fc2e7812fea33e8ed21c53f2d6f1
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoRemove unnecessary state keeping in input device
Laszlo Agocs [Tue, 10 Jan 2012 08:47:03 +0000 (10:47 +0200)]
Remove unnecessary state keeping in input device

Change-Id: I6325573d27b099a21fa5ac5e141764d5172b2453
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoAdd a function to the compositor api to send full touch events
Laszlo Agocs [Tue, 10 Jan 2012 08:33:55 +0000 (10:33 +0200)]
Add a function to the compositor api to send full touch events

A simple sendTouchPointEvent(id, x, y, ...) type of function will not
be sufficient in the future due to the amount of data in a touch
event; therefore an additional sendFullTouchEvent is introduced. This
function takes a QTouchEvent and posts a series of down, motion, up,
frame events as needed. In the future it may be changed so that it
maps to a protocol extension instead of the standard events.

As an example qwindow-compositor is updated to use this new function.

Change-Id: I39d3df1c6d4868364440f59789d01fc5b7b80dac
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoAdd an option to qwindow-compositor for disabling random positioning
Laszlo Agocs [Tue, 10 Jan 2012 08:29:38 +0000 (10:29 +0200)]
Add an option to qwindow-compositor for disabling random positioning

When passing -stickytopleft all surfaces will be shown at position 0,0
instead of picking a random one. This is useful for apps with one
single large window in combination with -nofullscreen.

Change-Id: I0834c43981a2d2c7b9796e273ac0eb0cfd738132
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoWorkaround for race condition when compositor is animating
Paul Olav Tvete [Mon, 9 Jan 2012 16:24:45 +0000 (17:24 +0100)]
Workaround for race condition when compositor is animating

If the compositor is animating, and rendering in another thread, we
may get a frameFinished call for a buffer that has not been displayed
yet. This buffer would then never get released, and the client would
hang. This is just a workaround: the real solution would fix the
race condition between markSurfaceAsDirty() and emit damaged().

Also fix misplaced paranthesis.

Change-Id: Iadecc77a6c6e3999a9f07815db0d0f810d92c1d3
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoMake the queueing work.
Paul Olav Tvete [Mon, 9 Jan 2012 13:12:49 +0000 (14:12 +0100)]
Make the queueing work.

Unconditionally dequeue in frameFinished, instead of checking for
whether a texture has been created.

This removes the frameFinishedTooEarly hack, which was not only ugly,
but also wrong. We have to rely on the compositor calling frameFinished()
for every buffer anyway.

Change-Id: Id284b4578ff5f0813b2e8a12a5cc43293cf79bf8
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoRemove unused clientAdded signal in compositor.
Laszlo Agocs [Mon, 9 Jan 2012 11:57:47 +0000 (13:57 +0200)]
Remove unused clientAdded signal in compositor.

This signal is not used by anything anymore and so there is no need to
spend time on the contains() call.

Change-Id: I003370e66048a54d1c9e2ec384ad740506d113a2
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoUse QOpenGLFunctions in qwindow-compositor.
Laszlo Agocs [Mon, 9 Jan 2012 09:19:56 +0000 (11:19 +0200)]
Use QOpenGLFunctions in qwindow-compositor.

To keep it building with desktop OpenGL.

Change-Id: I82685926461fc3249ed7a53e741b653273fe6f5c
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoRemove logging of key presses in qwindow-compositor.
Laszlo Agocs [Mon, 9 Jan 2012 09:21:21 +0000 (11:21 +0200)]
Remove logging of key presses in qwindow-compositor.

Change-Id: I505b262687bb32853a69c4dccb79a05f68b1dced
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoHave a crack at fixing setGeometry calls.
Robin Burchell [Thu, 5 Jan 2012 00:19:52 +0000 (01:19 +0100)]
Have a crack at fixing setGeometry calls.

Commit a5ce91c023aeb433f1b5b792291a88c9a5683955 removed setGeometry, so let's
make an effort at still functioning.

Change-Id: Iaae877a2312712ba63aa94a8ae3a3939554c5592
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoUpdate copyright year in license headers.
Jason McDonald [Thu, 5 Jan 2012 07:06:27 +0000 (17:06 +1000)]
Update copyright year in license headers.

Change-Id: Idfa1e4479b9ea0c793dcbf8570354d657a1db8cb
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
12 years agoCorrected wayland_sha1.txt
Samuel Rødal [Thu, 5 Jan 2012 14:36:45 +0000 (15:36 +0100)]
Corrected wayland_sha1.txt

Change d9ea435f0179fe2b5fe0 updated wayland_sha1.txt with a SHA-1 that
was too old, touch_down had not gotten the focus surface as a parameter
yet.

Change-Id: I1979238261758ef0b145997d5cd11c4c8953f1c5
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
12 years agoFix direct rendering after buffer queue change
Paul Olav Tvete [Wed, 4 Jan 2012 13:51:29 +0000 (14:51 +0100)]
Fix direct rendering after buffer queue change

Change-Id: Ia2ff6f539a8e59ca00ae8506b9367c277ae50304
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoQueue buffers instead of discarding them
Paul Olav Tvete [Wed, 4 Jan 2012 12:27:32 +0000 (13:27 +0100)]
Queue buffers instead of discarding them

Queue up buffers if the client renders faster than the compositor can display

Change-Id: I1449f60ae35a813c7ef88a15e50fb330e9668231
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoAdd isYInverted property with notification
Paul Olav Tvete [Fri, 16 Dec 2011 10:13:59 +0000 (11:13 +0100)]
Add isYInverted property with notification

Change-Id: I6a835a2be4513fa6c24f172503669bc3c95fad0b
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoClear dirty set before sending frame callback.
Paul Olav Tvete [Tue, 3 Jan 2012 08:58:43 +0000 (09:58 +0100)]
Clear dirty set before sending frame callback.

Previously, markSurfaceAsDirty() would have no effect when triggered
by the frame callback function.

Change-Id: Ife7c40757f1cba10e8cdbfab3d514a1dcdac76db
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoActually return the size from the size() function
Paul Olav Tvete [Thu, 5 Jan 2012 13:24:09 +0000 (14:24 +0100)]
Actually return the size from the size() function

Change-Id: I885b1c39f934f2b806843cd9b813a75ea9d8954f
Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoRemove QSize from surfaceMapped signal.
Robin Burchell [Thu, 5 Jan 2012 06:33:58 +0000 (07:33 +0100)]
Remove QSize from surfaceMapped signal.

Commit 6307ca5e22d81da9a39289c2cca9165fea81b3a5 removed this from the signal, so
we must follow suit.

Change-Id: I4073cfb7e9f6c722c1ac097e3d939767868027cb
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoQSGTextureProvider is now public API in QtQuick.
Robin Burchell [Thu, 5 Jan 2012 00:09:28 +0000 (01:09 +0100)]
QSGTextureProvider is now public API in QtQuick.

Commit 42d6acd0a3ea5fa5cf7ab69f1f8f2206559107ea in the QtDeclarative repo moved
QSGTextureProvider to be public API, so we should probably follow if we want to
keep building :)

Change-Id: I1514c0eef9d3d2c2660b38f0bd352c0f885641ba
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoRemove the geometry from the wayland surface
Jørgen Lind [Wed, 4 Jan 2012 09:26:20 +0000 (10:26 +0100)]
Remove the geometry from the wayland surface

and add pos and size properties instead. The pos is a PointF while the
size is a integer based Size since pos can be transformed, while the
size reffers to the pixel size.

Change-Id: I5d84aa6661405cb0df356b787246d0d73ad0c503
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoFixup waylandsurface item after QSize was removed
Jørgen Lind [Wed, 4 Jan 2012 09:22:49 +0000 (10:22 +0100)]
Fixup waylandsurface item after QSize was removed

from the mapped signal

Change-Id: Ib05fad9393d33a965e50ea3459fa83b10cd6d567
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoMake it possible to drag windows around
Jørgen Lind [Wed, 4 Jan 2012 07:16:27 +0000 (08:16 +0100)]
Make it possible to drag windows around

while holding the windows key down.

Change-Id: I1b5cd7fb39b5ec0ead6a4c312b4bb653a0191a00
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoImplement subsurfaces extension
Jørgen Lind [Wed, 4 Jan 2012 07:33:28 +0000 (08:33 +0100)]
Implement subsurfaces extension

This allows you to have subwindows in the compositor.
We tried to experiment with composing subsurfaces client side, but the
architecture did not feel very lean. This however, requires the
compositor to compose each surface before drawing the surface. The
example compositors render the subsurfaces into the wl_surfaces texture.
This might not be a good idea.

Change-Id: I6e186b62d7b490de7f4e6c6f22fcf6c1e0a70df3
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoAdd mouse move events to the window compositor
Jørgen Lind [Tue, 3 Jan 2012 12:47:33 +0000 (13:47 +0100)]
Add mouse move events to the window compositor

Change-Id: Iacdfbd55feb5db4d38eac6e2729684052a46afa9
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoAdd a .gitignore
Jørgen [Tue, 3 Jan 2012 11:36:38 +0000 (12:36 +0100)]
Add a .gitignore

Change-Id: I3e5e42425825c61a76197c91c8bd2faf7bc64231
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoDont have subdirectories in the extensions folder
Jørgen [Tue, 3 Jan 2012 11:30:58 +0000 (12:30 +0100)]
Dont have subdirectories in the extensions folder

This folder is just for the xml files

Change-Id: I20820bac6ed46cb0267b20afddd129ddf64141c5
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoFix rename of the define QT_COMPOSITOR_DECLARATIVE to QT_..._QUICK
Jørgen [Tue, 3 Jan 2012 09:33:28 +0000 (10:33 +0100)]
Fix rename of the define QT_COMPOSITOR_DECLARATIVE to  QT_..._QUICK

Change-Id: I4bcc5466711a3cfcc10812d519555a7b604dffb1
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoQImage when uploaded to a texture using glTexImage2D is flipped
Jørgen [Tue, 3 Jan 2012 09:28:27 +0000 (10:28 +0100)]
QImage when uploaded to a texture using glTexImage2D is flipped

Change-Id: I95a5c1d34a7233c0cfd58bc29183d8cd4396addd
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoRemove the size from the mapped signal
Jørgen Lind [Wed, 4 Jan 2012 07:32:17 +0000 (08:32 +0100)]
Remove the size from the mapped signal

Change-Id: I4b49e115c569cab580665040cc9b173c697b1fcc
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
12 years agoRemove QtOpenGL includes
Jørgen Lind [Wed, 4 Jan 2012 07:19:54 +0000 (08:19 +0100)]
Remove QtOpenGL includes

Change-Id: I66c4c98b308bd97760ad2db720785ee64fc64959
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
12 years agoMake QtCompositor.so compile with pkg-config as a default
Jørgen [Tue, 27 Dec 2011 09:52:48 +0000 (10:52 +0100)]
Make QtCompositor.so compile with pkg-config as a default

Change-Id: Ibf599e66a6172e4fedbb41be4e179f43ce21d5c2
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
12 years agoPrevent the use of an empty variable for a LIBDIR
Andy Nichols [Wed, 28 Dec 2011 16:28:22 +0000 (17:28 +0100)]
Prevent the use of an empty variable for a LIBDIR

Because it's not very sensible to send -L alone to the linker.

Change-Id: Id6556a010c86a42d00dcf97c39df6e1772350ef0
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoMake it possible to hide windows
Jørgen Lind [Fri, 23 Dec 2011 13:37:16 +0000 (14:37 +0100)]
Make it possible to hide windows

take2 :)

Change-Id: Ib53a346cf3237285ea6c810ec75b47b2e2db2697
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
12 years agoUse some sensible build variables in compositor
Jørgen Lind [Fri, 23 Dec 2011 12:53:15 +0000 (13:53 +0100)]
Use some sensible build variables in compositor

when not haivng pkg-config

Change-Id: I585d4468e6830f1989b69de2733542f6f64d0f5f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
12 years agoIts ok to attach on a not allready displayed buffer.
Jørgen Lind [Fri, 23 Dec 2011 08:24:24 +0000 (09:24 +0100)]
Its ok to attach on a not allready displayed buffer.

Change-Id: Ieb0ea84f40a3878af50ea24d1af54ef0dc90ffb8
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
12 years agoUpdate wayland-sha and implement the surface on the touchdown event
Jørgen Lind [Fri, 23 Dec 2011 07:57:11 +0000 (08:57 +0100)]
Update wayland-sha and implement the surface on the touchdown event

Change-Id: I32435569e6e1181c6bbafb87d885834a883bf43b
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
12 years agoMake it possible to hide surfaces
Jørgen Lind [Wed, 21 Dec 2011 08:03:49 +0000 (09:03 +0100)]
Make it possible to hide surfaces

Change-Id: Ie3ba75335717e8dbae906c1a13cc8f852b77bd1b
Reviewed-by: Andy Nichols <andy.nichols@nokia.com>
12 years agoRemove Qt4 stuff from qmake files
Jørgen Lind [Tue, 20 Dec 2011 12:36:07 +0000 (13:36 +0100)]
Remove Qt4 stuff from qmake files

Change-Id: I008cddcdba58a7a9b77aac8729a643a1ea0ea445
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoSend the orientation when client binds to the extended output
Jørgen Lind [Tue, 20 Dec 2011 12:34:18 +0000 (13:34 +0100)]
Send the orientation when client binds to the extended output

Change-Id: I27875115d64a1d06de7097b09f928cfd11fe2d2e
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoMake QtCompositor work with wayland-demo clients.
Jørgen Lind [Tue, 20 Dec 2011 11:03:00 +0000 (12:03 +0100)]
Make QtCompositor work with wayland-demo clients.

Make it possible to have >1 registered frame callbacks

Also remove the QShmBuffer destory callback, since we should use destory
listeners instead.

Change-Id: I407fc2075f62aaf9f042e85b003b3aaf7ee72cf5
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoMake all QWaylandWindows have a wl_surface for the entire lifespan
Jørgen Lind [Mon, 19 Dec 2011 11:48:47 +0000 (12:48 +0100)]
Make all QWaylandWindows have a wl_surface for the entire lifespan

This solves that we dont have to cache the generic objects,
and we conform with upstream wayland

Change-Id: Ib8e15b734f09988f4f00989aeb1c274636709dc9
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoAdded surface_extension and output_extension
Jørgen Lind [Mon, 19 Dec 2011 09:51:12 +0000 (10:51 +0100)]
Added surface_extension and output_extension

This is an atempt on removing WindowManagerIntegration and create more
specialised extensions. Hopefully it will reduce tha "map lookups" we
have all because of the windowmanagerintegration is way to generic, and
hopefully it will make it easier to ready and understand the code

Change-Id: I126c430e87909e4520f6d241c0a6023214cb509a
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoRestore retained selection support in qt-compositor.
Laszlo Agocs [Fri, 16 Dec 2011 13:11:18 +0000 (15:11 +0200)]
Restore retained selection support in qt-compositor.

Change-Id: I20fdffacd4f62d2e7083c269c7f82c059f3e24fc
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoDo not pass mime type by value in data source.
Laszlo Agocs [Thu, 15 Dec 2011 08:48:25 +0000 (10:48 +0200)]
Do not pass mime type by value in data source.

Change-Id: I2aff8fd090cee82f37b52ad0a6a3cd437c39fcdd
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
12 years agoAdded a resourcecollection class
Jørgen Lind [Wed, 14 Dec 2011 09:32:13 +0000 (10:32 +0100)]
Added a resourcecollection class

This class will typically be the super class of globals which creates
wl_resources in the bind functions. If for some reason some other class
needs to get a resource for a given client of the global, it can look it
up

Change-Id: I939cc7aaeb15586f2c760c600c188a8cbf19f358
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoRemove the window_manager_integration object.
Jørgen Lind [Tue, 13 Dec 2011 11:41:02 +0000 (12:41 +0100)]
Remove the window_manager_integration object.

We don't need a wl_object anymore for registering the callbacks

Also did some additional cleanups, and removed the static instance since
we can just get the windowmamager instance from the compositor object

Change-Id: I772822f42006aba709f9f967ae293903415e21bc
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
12 years agoFixup variable names to not use widget
Jørgen Lind [Mon, 12 Dec 2011 14:15:10 +0000 (15:15 +0100)]
Fixup variable names to not use widget

Change-Id: I4c2212d27aaebbefe5e8524438bc444fdec74c8a
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>