Commit Graph

5039 Commits

Author SHA1 Message Date
Nobuhiko Tanibata 1c2201b543 ivi-shell: hmi-controller supports multi screens at random-mode.
It shows ivi applications at screensa randomly.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata a7ffa68e70 ivi-shell: hmi-controller supports multi screens at fullscreen mode.
It shows ivi applications in fullscreen per screen like,
The first screen: Application 1,4,5,6,,,,
The seconed screen: Application 2,
The third screen: Application 3

Thie mode assigns one application to each screen at first. And remaind
applications more than screens will be assigned to the first screen.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata d156d9c4cf ivi-shell: hmi-controller supports multi screens at side-by-side mode.
It shows 2 ivi application in a screen at side-by-side. It moves
additinal application more than 2xN to next screen N+1.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata a8aa91c0d1 ivi-shell: hmi-controller supports multi screens at tiling mode.
It shows 8 ivi applications in a screen at tiling. It moves additional
application more than 8xN to next screen N+1.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata d789c66a0f hmi-controller: allocate application layers for multi-screen
To locate surfaces of application on multi screens, multi layers are
created baseod on application-layer-id + base-layer-id-offset x N.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata 2e656769b6 hmi-controller: allocate background surfaces for multi-screen
A surface ID for layer of background/panel image is set by key: background-id
or panel-id at weston.ini. To support multi screens, it also support offset,
surface-id-offset, to offset the surface ID to next ID for a layer on next
screen.

According to the above key, hmi-controller and ivi-shell-user-interface
who increments the number of screens per notification of wl_output.
crate surface and draw background/panel image on multi surface on screens.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata 744b03093b hmi-controller: allocate base layers for multi-screen
A layer ID for screen is set by key: base-layer-id at weston.ini. To
support multi screens. It also support offset to offset the layer ID
to next ID for next screen.

For example,
base-layer-id=1000
base-layer-id-offset=10000

Layer id for screen 0: 1000
Layer id for screen 1: 11000
Layer id for screen 2: 21000

To support multi screen, create layers for background and panel bar which
located in the below per screens. At the moment, it is only layers.
Surfaces to be created at next patch in the patch set.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata 35711df126 ivi-shell: hmi-controller implements internal method to get screen.
- get screens from weston core
- provide screens as internel method
- the iviscn is stored in array inverse order in index.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata 1c2618e9ff ivi-shell: multi screen support to calcuration of a mask of weston_surface.
A weston_surface is transformed to multi screen coordinate, global
coordinate by matrix:m now.

Additionally, a mask needs to be calucated, taking account into,
- multi screen coordination: a destination rectangle of layer in the
  coordination is easily calcurated by adding weston_output.{x,y} in
  simple. This is because there is no scaled and rotated transformation.
- intersect inside of a screen the layer is assigned to. This is because
  overlapped region of weston surface in another screen shall not be
  displayed according to ivi use case.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata 29babdf099 ivi-shell: convert from screen to global coordinates
In single screen, the coordinates of layer local coordinates are the
same as global coordinates. However, to support multi screens, the
layer-local coordinates shall be transformed to multi screen coordinates,
which is global coordinates. The abosolute coordinates of a screen in global
stored in (x,y) of output of its weston output so it shall be used to
transform layer-local to global coordinates.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata b4cb25dc26 ivi-shell: avoid update_prop() on invisible surfaces
For multi screen support, ivi_layout_screen to be taken account into
property change in commitChanges.

Property change is now done in update_prop so to consider ivi_screen
property for caluculating transform of weston surface, ivi_layout_screen
 is added as a parameter of update_prop.

However, update_prop of weston_view of a ivi_surface can not be done
even if it is set on a screen. The propoerty change shall be done only
when a visibility of ivi_surface or ivi_layer which contains the
ivi_surface is ON. Such a condition shall be checked at commit_changes
as well to avoid calling update_prop, which actually updates
weston_views.

Signed-off-by: Nobuhiko Tanibata <nobuhiko_tanibata@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:16:11 +02:00
Nobuhiko Tanibata 0627b4a73d ivi-shell: activate weston surface with a seat when left click or touch.
Similar with Desktop shell, set activate to weston surface which is
left-clicked by pointer or touched. This is needed to focus it with a seat.
Without this, a feature who gets activated weston surface by using
weston_surface_get_main_surface doesn't work correctly because it can
not get correct focused weston surface. For example, input-panel uses
weston_surface_get_main_surface to get a weston surface. With this
weston surface, it get a member: output to decide which output shall
show a input-panel, software keyboard. Without activation,
input-panel-ivi can not find a correct output which shows e.g.
weston-editor who uses input-method.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-14 13:15:41 +02:00
Derek Foreman 748c695ef9 compositor-wayland: Add touch support
Adds support for touch devices to the wayland backend.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-12-08 13:04:50 -06:00
Derek Foreman 3cc004a650 input: Add notify_touch_cancel()
We already have notify_touch(), notify_touch_frame().  We need
notify_touch_cancel() to implement touch in the weston wayland backend
properly.

Reviewed-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-12-08 13:04:46 -06:00
Derek Foreman cfce7d0b11 compositor-wayland: Properly release input resources when caps change
We should use wl_*_release when available instead of destroy, and we
should update weston's internal input tracking with weston_seat_releases

Reviewed-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-12-08 13:04:41 -06:00
Derek Foreman 9690641bfc cairo-util: return theme location from frame_touch_down
I'll be using this in a follow up patch that adds touch input to weston's
wayland backend.

Reviewed-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-12-08 13:04:34 -06:00
Jussi Kukkonen 3375ccaa27 configure.ac: add explicit enable/disable for lcms
This is useful for reproducable builds.

Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-12-04 16:44:23 -08:00
Chris Michael 2ec5f2a633 cosmetic: Remove use of C++ style comments
Patch updated to remove dead lines as suggested by Daniel Stone

Signed-off-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-12-03 15:28:53 -08:00
Derek Foreman 9973967138 compositor: Add doxygen for weston_surface_to_buffer_rect()
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-03 16:38:11 -06:00
Derek Foreman fb1e1268d5 simple-damage: Add --use-damage-buffer flag
Add a new flag for testing damage in buffer co-ordinates

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-03 09:54:37 -06:00
Derek Foreman 152254be0d compositor: Add damage_buffer
Add an implementation of wl_surface.damage_buffer, similar to
wl_surface.damage except it uses buffer co-ordinates.

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-12-03 09:45:32 -06:00
Emmanuel Gil Peyrot c399692b8e linux-dmabuf: Move the attributes part of linux_dmabuf_buffer into its own struct
This allows renderers to use that struct to create their own dmabufs,
in case they can’t import the one provided by the client directly but
know how to convert it into a format they can render.

Signed-off-by: Emmanuel Gil Peyrot <emmanuel.peyrot@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>

Differential Revision: https://phabricator.freedesktop.org/D332
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-12-02 16:50:15 -06:00
Chris Michael 6207b6af09 compositor: Remove unused weston_surface_to_buffer function
The function 'weston_surface_to_buffer' is unused by compositor and
clients inside weston, so it should be safe to remove this function

Signed-off-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-12-01 16:19:07 -06:00
Derek Foreman e2e15acc06 compositor: change rounding in weston_surface_to_buffer_rect()
Rounding both corners of the rectangle down can result in a 0
width/height rectangle before passing to weston_transformed_rect.

This showed up as missing damage in weston-simple-damage (the
bouncing ball would leave green trails when --use-viewport was
used)

Reviewed-by: Daniel Stone <daniels@collabora.co.uk>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-12-01 16:12:51 -06:00
Chris Michael 5ffbfffaf7 main: Remove unused function load_backend_new()
This function is unused throughout the entire weston source tree, so
remove it. It seems that the "load_backend" function is the one
currently being used

Signed-off-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-11-30 14:55:24 -06:00
Derek Foreman 29b846eaa6 simple-damage: Offset drawing co-ordinates not buffer start
We've been setting up the viewport by moving the start pointer of the
draw buffer, but later when we want to post damage in buffer co-ordinates
we'll need to keep track of the x,y offsets anyway.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-30 10:03:09 -06:00
Derek Foreman 1909c10825 compositor, input: Don't use MIN() macro for new resource versions
libwayland-server protects us from invalid serial numbers by
posting an error already.

MIN() is for clients when selecting interface versions.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-27 17:01:14 -06:00
Pekka Paalanen 7eaed40b37 compositor-drm: fix hw cursor positioning
Fix a regression introduced by be428b3825
which accidentally removed the global-to-output space conversion.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Cc: Derek Foreman <derekf@osg.samsung.com>
Cc: Daniel Stone <daniels@collabora.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Tested-by: Derek Foreman <derekf@osg.samsung.com>
2015-11-27 09:38:09 -06:00
Nobuhiko Tanibata 747c3865ab ivi-shell: remove a code which expects only a screen in the system.
It breaks from wl_list_for_each of screens when the frist screen found.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-27 15:03:29 +02:00
Nobuhiko Tanibata fbfa8f21f9 ivi-shell: fix layout_layer.view_list is not initilized per a screen.
This is potential bug when it supports several screens. If view_list is
initilized here, the views, which are set by the previous screen, are
cleared. So View list shall be initilized in front of wl_list_for_each
of all screens.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-27 15:03:29 +02:00
Nobuhiko Tanibata 77b0ee18a2 ivi-shell: avoid inserting a ivi_layer to multiple screens.
In just previous wl_list_for_each_safe, list of layer in a screen is
cleaned up. And then, the list is re-constructed from
pending.layer_list.

In this re-construction, if order.link of a layer were inserted into a
screen whose number is later one of current screen, the order.link will
inserted into layer_list of two screens. This shall be avoided.

However, if we want to implement a feature to allow a layer to be added
to multiple screens. A layer shall have several order.link per screens.
So, I marked here as TODO.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-27 15:03:29 +02:00
Nobuhiko Tanibata 3e710d19fe ivi-shell: fix TODO which expects only one screen in the system.
It just return the first screen found in screen list.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-27 15:03:29 +02:00
Ucan, Emre (ADITG/SW1) 7d967da8c2 configure: don't control egl version
The required version only corresponds to version of mesa implementation.
This mesa version requirement causes configure errors,
when weston is configured for a different egl implementation than mesa.
Because the version of the egl drivers are not alligned
to the mesa version.

Therefore, I deleted the version controlling for egl,
so that weston can be configured for a different egl implementation.

Signed-off-by: Emre Ucan <eucan@de.adit-jv.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-27 12:28:37 +02:00
Chris Michael 062edf2b4c compositor: Fix comment of subsurface_commit_to_cache function
commit 57388e44e5 accidentally changed the comment in
compositor.c::subsurface_commit_to_cache

Signed-off-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-11-26 14:24:16 -06:00
Derek Foreman 57e92ed768 compositor: ignore useless surface_damage
If we pass negative height or width on to pixman we get error messages
in the log.

Also, if width or height is 0, there's no damage, so we can early return
for that too.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-26 09:32:43 -06:00
Jonas Ådahl 35da52debe configure.ac: Bump wayland-protocols dependency to 1.0
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
2015-11-25 16:03:04 +08:00
Derek Foreman be428b3825 compositor-drm: Use view transform in cursor plane setup
Make sure a view's transform is viable for a cursor plane and
then actually apply it before setting the cursor plane location.

Now if a subsurface ends up in the cursor plane, the plane will be
properly positioned.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-11-24 12:03:38 -06:00
Yong-iL Joh cd9bb710e7 ivi-shell-user-interface: fix runtime error caused by missing header inclusion
when weston is running on qemux86 device, there is an error with following.

[08:02:07.897] launching '/usr/lib/weston/weston-ivi-shell-user-interface'
[08:02:08.201] /usr/lib/weston/weston-ivi-shell-user-interface died on signal 11

this is caused by type mismatch, and
it does occur on qemux86-64

Signed-off-by: Yong-iL Joh <yong-il.joh@windriver.com>
Acked-by: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-11-24 00:31:28 -08:00
Chris Michael 6172c38ef4 compositor.h: Remove unused variable from weston_seat structure
This variable may have been used previously when evdev.c was used
however that functionality seems to have been consumed by libinput, so
there is no need for this variable in the weston_seat structure anymore.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-11-23 23:47:04 -08:00
Chris Michael b50ed17bda clients: Adjust grammar of comment for toysurface->prepare function pointer
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-11-23 19:28:47 -08:00
Chris Michael 51baeb2840 compositor: Remove extra blank line
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-11-23 19:28:41 -08:00
Bryce Harrington f69bd1a909 clients: Fix a few minor typos in comments 2015-11-20 11:58:13 -08:00
Derek Foreman bc9a61cc23 compositor: Move weston_matrix_transform_region to compositor.c and export it
We're going to use this to replace much of the other transform code so
it's no longer just relevant to pixman-renderer.c

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
[Pekka: add the warning about matrix restrictions]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-20 15:27:55 +02:00
Jason Ekstrand 52c476ac8d pixman-renderer: Use output->matrix for region transformations and enable output zoom
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
[Pekka: added the comment for the function]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-20 15:27:55 +02:00
Derek Foreman 9774679680 gl-renderer: Make texture_used a bool instead of an int
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-20 15:27:55 +02:00
Derek Foreman 4c11fe777a gl-renderer: Use a bool for needs_full_upload
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-20 15:27:55 +02:00
Derek Foreman 060cf11f23 compositor: Change "touched" to bool
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-20 15:27:55 +02:00
Derek Foreman 118387e541 toytoolkit: Remove window_damage()
It's just a direct call to wl_surface_damage() anyway, and the only
caller no longer exists.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-20 15:27:55 +02:00
Derek Foreman 0aba785384 smoke: Don't post extra damage
We're going to post damage when the widget redraw happens anyway.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-11-20 15:27:55 +02:00
Jonas Ådahl 2cbf293b05 input: Keep per client pointer resources in their own structs
Keep all per client wl_pointer resources in a new struct called
'weston_pointer_client'. When focus changes, instead of moving a list
of resources between different lists, just change the focused pointer
client.

The intention with this is to make it easier to add wl_pointer
extensions that share the same focus as the corresponding wl_pointer.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
2015-11-20 11:52:19 +08:00