Commit graph

4881 commits

Author SHA1 Message Date
Derek Foreman 45a7c27f2b clients: If available, prefer top level surfaces for move or rotate
This stops us from rotating or moving pop-up menus by instead rotating
their parents.

This is easiest to see using a multi-seat configuration.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-09-15 06:51:15 -07:00
Derek Foreman c0c1497f99 shell: Make sure we actually have a resource in end_busy_cursor
It's actually possible to get here after the surface has been destroyed,
especially when running client apps under valgrind.

That probably shouldn't be able to segfault the compositor.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-09-14 11:33:31 -07:00
John Sadler ca510d06dc rpi: fix segfault at startup in rpi_flippipe_init() v2
When running with the RPi backend, Weston now segfaults at startup on the
line:

    flippipe->clk_id = output->base.compositor->presentation_clock;

in `rpi_flippipe_init()`.

This is because `output->base.compositor` is NULL. This problem did not
exist on 1.8.0, and it looks like it may have been introduced by 954f183e2f.

This commit ensures that the `compositor` is initialised in `rpi_backend`
and that flippipe init uses the compositor pointer from backend.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91885

Signed-off-by: John Sadler <deathofathousandpapercuts@gmail.com>

Changes in v2:
- fix summary to not break the build
- use output->backend->compositor in rpi_flippipe_init() instead of
  output->base.compositor. The latter is set by weston_output_init()
  which gets called later than rpi_flippipe_init().

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: John Sadler <deathofathousandpapercuts@gmail.com>
2015-09-10 10:45:03 +03:00
Derek Foreman 7978bc82dd terminal: Don't crash when selecting non-ascii characters
So it turns out if you cat /dev/urandom and drag select in the mess
you can crash weston-terminal.  There may also be more legitimate
ways of doing this.

The reason is that isalpha() and isdigit() only accept values that
fit within an unsigned char or are EOF.

By treating values < 0 the same as values > 127 we prevent this crash.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-09-10 10:07:16 +03:00
Derek Foreman 617933840b compositor-fbdev: Remove bizarre division by sizeof
Really not sure why this was even here - it worked because
we were dividing by 1.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-09-10 10:01:03 +03:00
Pekka Paalanen 3f32a13acd Revert "compositor-drm: disable hardware cursors"
This reverts commit 6858383d51.

The main reason for the original patch was a regression on the Intel
drivers causing compositor framerate to drop to half during cursor
updates or motion. The Intel problem was fixed in
2e7f43c41c
The fix is included in Linux 4.1-rc6 and 4.0.5.

The comment in the original patch is still true, but arguably the
possible minor glitches with cursor updates are less bad than not using
cursor planes at all.

Cc: nerdopolis <bluescreen_avenger@verizon.net>
Cc: Daniel Stone <daniel@fooishbar.org>
Cc: Giulio Camuffo <giuliocamuffo@gmail.com>
Cc: David FORT <contact@hardening-consulting.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-09-09 10:13:05 +03:00
Bryce Harrington ae6f1bb3f7 clients: Fix height typo in clamp_view()
We should be checking our scaled image height against the allocation
height rather than the allocation width.

Fixes vertical image motion when horizontal motion restricted, i.e.
when window is wide and short compared to the image.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-09-09 10:07:27 +03:00
John Sadler 7628789640 rpi: prevent segfault on shut-down due to NULL backend
When running with the RPi backend, Weston sefaults during shutdown. This is
due to the fact that `compositor->backend` is never initialised, and there
is no NULL check prior to calling `destroy()`.

This commit fixes the issue by making `rpi_backend_create()` intialise
`compositor->backend` - just like the X11 backend does.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91886

Signed-off-by: John Sadler <deathofathousandpapercuts@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-09-08 16:53:45 +03:00
John Sadler 960b5ebd82 rpi: avoid segfault in rpir_view_compute_rects() when EGL client destroys buffer
This commit works-around a serious issue when running with the RPi backend.
When an EGL client shuts down and destroys it's EGL window, Weston dies with
a segmentation fault in the above function (because `buffer` is now NULL).

The addition of a simple NULL check avoids the problem.

This is a minor re-formatting of the patch already submitted here:

  http://patchwork.freedesktop.org/patch/34885

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85167

Signed-off-by: John Sadler <deathofathousandpapercuts@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-09-08 16:21:45 +03:00
Bryce Harrington cdb91d019f configure.ac: bump to version 1.8.92 for the beta release 2015-09-01 16:58:25 -07:00
Nobuhiko Tanibata 4412cd1974 hmi-controller: fix wrong width and height are set to a layer of workspace.
Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-08-26 11:13:29 +03:00
Nobuhiko Tanibata d290f881d5 hmi-controller: fix the laucher layer width
A layer for workspace is used to display icons for invoking applications
in several pages. These pages are swapped from one to next page. The
width of the layer was decided as a size of screen before reading
weston.ini. This worked correctly because there was no feature of
clipping of layer so the width of layer was not taken account.

Now clipping feature is supported. So the width shall be set to correct
one after reading weston.ini.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-08-26 11:13:23 +03:00
Nobuhiko Tanibata acbcc6c978 ivi-layout: implement surface clipping
View clip region is set in surface-local coordinates. To compute that
region, the ivi-layer destination rectangle in the global coordinates
are transformed back into the surface-local coordinates.

The transformation is computed by first forming the transformation
matric for the forward mappings, and then inverting it. The inverse
matric is used to transform the destination rectangles to the
surface-local coordinate system. The intersection of the rectangles is
the view clip mask.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-08-26 11:12:49 +03:00
Pekka Paalanen ab81f1515a build, compositor-drm: fix output name constants another way
Bumping libdrm requirement by 3 years just for output connector name
constants was a bit much. Fix the problem introduced in
89c49b3060 by conditionally using the new
additions.

Both VIRTUAL and DSI came in the same libdrm commit
566c3ce877a4be72697e15cdfc421ce965f7c37d, so we check only for DSI.

This patch also reverts faee330c5e.

Reported-by: Eugen Friedrich <friedrix@gmail.com>
Cc: Derek Foreman <derekf@osg.samsung.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Acked-by: Bryce Harrington <bryce@osg.samsung.com>
2015-08-24 16:33:46 -07:00
Derek Foreman faee330c5e build: Require newer version of libdrm
commit 89c49b3060 changed the way we name
outputs, but it also added the new output names VIRTUAL and DSI.

These aren't available until libdrm 2.4.59

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-08-24 11:45:41 +03:00
Jonas Ådahl decc965be9 clients: Drop deadlock circumvention hack now that we don't need it
mesa supports EGLSwapInterval 0 now, so lets remove this hack. As a
bonus we don't conflict with the XDG shell protocol that doesn't allow
committing a null-buffer, which was a side effect of this hack.

This patch reverts e9297f8e7e. See that
commit for an explanation how this worked.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
[Pekka: added reference to the original commit]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-08-21 15:22:03 +03:00
Dawid Gajownik 1a912a9fe3 gl-renderer: gl_renderer_create display cleanup on error
Clean up display connection via eglTerminate() in case of EGL
initialisation error.

Signed-off-by: Dawid Gajownik <gajownik@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-08-21 15:00:10 +03:00
Pekka Paalanen 89c49b3060 compositor-drm: rename outputs to follow kernel style
The problem with the old table of names is that it contains duplicates.
It is possible to end up with multiple outputs with the same name. In
that case you cannot write individual configurations for these outputs
in weston.ini, because they are matched by the name.

Change all names to follow the kernel naming scheme set in
drivers/gpu/drm/drm_crtc.c. The snprintf format now follows the kernel
style, too. Use the DRM_MODE_CONNECTOR_* macros rather than implicit
table ordering.

Completely new entries in the table are "Virtual" and "DSI".

There should not be any gaps in the macro values, but if there are, deal
with a NULL entry.

Also change "UNKNOWN" to "UNNAMED" so it's easier to distinguish from
"Unknown" by the kernel.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89361
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Tested-by: Drew DeVault <sir@cmpwn.com>
2015-08-21 14:46:41 +03:00
Ucan, Emre (ADITG/SW1) cf34dc2334 ivi-shell: remove redundant wl_list_empty/init calls
Checking wl_list_empty() on a link offers no information: if it returns
true, wl_list_remove() is safe to do. If it returns false, you still do
not know if wl_list_remove() is safe; the link could be part of a list,
or the link could be "uninitialized" (e.g. just wl_list_remove()'d).
(From Pekka Paalanen's comment at
http://lists.freedesktop.org/archives/wayland-devel/2015-August/023987.html).

Calling wl_list_init just before wl_list_insert is redundant.  Because
the links of the list are not read before it is overwritten by
wl_list_insert.

Signed-off-by: Emre Ucan <eucan@de.adit-jv.com>
[Pekka: line-wrapped commit message]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-08-21 12:03:33 +03:00
Ucan, Emre (ADITG/SW1) 174257bdf8 ivi-shell: clear order.layer_list before reordering it
It is only possible to remove a layer from the order.layer_list of a
screen, when ivi_layout_screen_set_render_order is called with an empty
array.  Therefore, list of layers are cumulated if the API is called
many times with different list of layers.

Change how the flags are set:
    - Introduce the dirty parameter for triggering the render order change.
    - IVI_NOTIFICATION_REMOVE/ADD flags are set only at commit_screen_list.

Checking wl_list_empty() on a link offers no information: if it returns
true, wl_list_remove() is safe to do. If it returns false, you still do
not know if wl_list_remove() is safe; the link could be part of a list,
or the link could be "uninitialized" (e.g. just wl_list_remove()'d).
(From Pekka Paalanen's comment at
http://lists.freedesktop.org/archives/wayland-devel/2015-August/023987.html).

Calling wl_list_init just before wl_list_insert is redundant.  Because
the links of the list are not read before it is overwritten by
wl_list_insert.

Use assert to control if the ivilayer->order.surface_list is empty.

Signed-off-by: Emre Ucan <eucan@de.adit-jv.com>
[Pekka: line-wrapped commit message]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-08-21 11:53:43 +03:00
Ucan, Emre (ADITG/SW1) 38fcf381be ivi-shell: clear order.surface_list before reordering it
It is only possible to remove a surface from the order.surface_list of a
layer, when ivi_layout_layer_set_render_order is called with an empty
array.  Therefore, list of surfaces are cumulated if the API is called
many times with different list of surfaces.

Change how the flags are set:
- Introduce the dirty parameter for triggering the render order change.
- IVI_NOTIFICATION_REMOVE/ADD flags are set only at commit_layer_list.

Checking wl_list_empty() on a link offers no information: if it returns
true, wl_list_remove() is safe to do. If it returns false, you still do
not know if wl_list_remove() is safe; the link could be part of a list,
or the link could be "uninitialized" (e.g. just wl_list_remove()'d).
(From Pekka Paalanen's comment at
http://lists.freedesktop.org/archives/wayland-devel/2015-August/023987.html).

Calling wl_list_init just before wl_list_insert is redundant, because
the links of the list are not read before it is overwritten by
wl_list_insert.

Use assert to control if the ivilayer->order.surface_list is empty.

Signed-off-by: Emre Ucan <eucan@de.adit-jv.com>
[Pekka: wrapped the commit message]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>

[Earlier version Reviewed-by: Nobuhiko Tanibata
<NOBUHIKO_TANIBATA@xddp.denso.co.jp>]
2015-08-21 11:46:23 +03:00
Ucan, Emre (ADITG/SW1) c2be6388d2 ivi-shell: bugfix, list of surfaces on a layer are cumulated when set render order is called several time in one commitchanges.
The final list of surfaces of set render order shall be applied. So link
of surfaces and list of surfaces in a layer shall be initialized. And
then the order of surfaces shall be restructured.

Use existing clear_surface_pending_list function to clear the list.

Signed-off-by: Emre Ucan <eucan@de.adit-jv.com>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
2015-08-20 11:19:03 +03:00
Pekka Paalanen 3f897940d9 compositor-fbdev: fix VT switching crash
This bug was introduced in 954f183e2f.

The session_notify() data was accidentally cast to fbdev_backend while
it is weston_compositor. This was possibly due to the code before the
mentioned commit casting data directly to fbdev_compositor without going
through the intended type first, which worked only because
weston_compositor was the first member in struct fbdev_compositor.

Fix the casts to be the right way around.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91654
Cc: nerdopolis1@verizon.net
Cc: Giulio Camuffo <giuliocamuffo@gmail.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-08-20 09:55:47 +03:00
Dawid Gajownik 2b254506f5 compositor-drm: cast surface to EGLNativeWindowType
gl_renderer_output_create expects `window_for_legacy' variable to be of
type EGLNativeWindowType, not EGLNativeDisplayType. This variable is
used later in eglCreateWindowSurface().

Signed-off-by: Dawid Gajownik <gajownik@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2015-08-19 16:19:01 +03:00
Pekka Paalanen 8358305927 configure: fix enable_simple_intel_dmabuf_client=auto
When the user does not specify --enable nor
--disable-simple-intel-dmabuf-client, we want to autodetect based on
dependencies. cb512c018e implemented this,
but forgot to actually enable it if the autodetect comes positive.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-17 16:04:19 +03:00
Bryce Harrington f2bf50ea89 configure.ac: bump to version 1.8.91 for the alpha release 2015-08-16 14:17:17 -07:00
Bryce Harrington 842ef2f895 releasing: Soften suggestion to update the wayland version dependency 2015-08-16 14:16:26 -07:00
Bryce Harrington cab7ed9fc8 releasing: Update release names 2015-08-16 14:00:05 -07:00
Bryce Harrington cb512c018e Fix armhf configure breakage due to missing libdrm_intel package
The buildbots discovered that recent changes break on Ubuntu 15.04's
armhf images:

  configure:16137: checking for SIMPLE_DMABUF_CLIENT
  configure:16144: $PKG_CONFIG --exists --print-errors "wayland-client libdrm libdrm_intel"
  Package libdrm_intel was not found in the pkg-config search path.
  ...
  configure:16194: error: Package requirements (wayland-client libdrm libdrm_intel) were not met:

  No package 'libdrm_intel' found

This patch was provided by Daniel Stone.  I've not tested it other than
verifying it does not cause build problems on x86_64.

Acked-by: Bryce Harrington <bryce@osg.samsung.com>
2015-08-14 12:45:38 -07:00
Bryce Harrington a358207572 Fix build breakage when using older gbm lacking dmabuf import
The buildbots discovered this issue on Ubuntu 14.04, which carries
libgbm 10.1.3-0ubuntu0.4.  The dmabuf changes need gbm 10.2, so it fails
during build like this:

  src/compositor-drm.c: In function ‘drm_output_prepare_overlay_view’:
  src/compositor-drm.c:984:10: error: variable ‘gbm_dmabuf’ has
  initializer but incomplete type
     struct gbm_import_fd_data gbm_dmabuf = {
            ^
  etc.

Proposed fix is to conditionalize the gbm fd import feature in
compositor-drm.

This fix was suggested by daniels.  I set up a synthetic test
environment to reproduce the issue as found by the buildbots and tweaked
the patch to get it to build both with and without gbm 10.2.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
2015-08-14 12:45:11 -07:00
George Kiagiadakis 53868985ff clients: add simple-dmabuf client
v2:
- adapted to protocol changes
- added TODO comments
- minor clean-up
- change y-invert from per-plane boolean to per-buffer flag

v3:
- fix a typo: 1 -> i (noticed by Carlos Olmedo Escobar)

Signed-off-by: George Kiagiadakis <george.kiagiadakis@collabora.com>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Acked-by: Daniel Stone <daniels@collabora.com>
2015-08-14 15:53:26 +03:00
Pekka Paalanen bf8cc6f5a1 compositor-drm: dmabuf GBM import
v2:
- add TODO note about multi-planar import and how we should do it

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-14 15:53:26 +03:00
Pekka Paalanen e4d231ecdf compositor-drm: init linux_dmabuf support
v2 changes:
- only initialize linux_dmabuf if renderer supports it

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-14 15:53:26 +03:00
Pekka Paalanen 5ffb440c3f compositor-x11: init linux_dmabuf support
v2 changes:
- only initialize linux_dmabuf if renderer supports it

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-14 15:53:26 +03:00
Pekka Paalanen a352580285 gl-renderer: add dmabuf import
Import dmabuf as an EGLImage, and hold on to the EGLImage until we are
signalled a content change. On content change, destroy the EGLImage and
re-import to trigger GPU cache flushes.

We hold on to the EGLImage as long as possible just in case the client
does other imports that might later make re-importing fail.

As dmabuf protocol uses drm_fourcc codes, we need libdrm for
drm_fourcc.h. However, we are not doing any libdrm function calls, so
there is no new need to link to libdrm.

RFCv1 changes:
- fix error if dmabuf exposed unsupported
- always use GL_TEXTURE_EXTERNAL_OES with dmabuf

v2 changes:
- improve support check and error handling
- hold on to the imported EGLImage to avoid the dmabuf becoming
  unimportable in the future
- send internal errors with linux_dmabuf_buffer_send_server_error()
- import EGL_EXT_image_dma_buf_import extension headers
- use heuristics to decide between GL_TEXTURE_2D and
  GL_TEXTURE_EXTERNAL_OES
- add comment about Mesa requirements
- change y-invert from per-plane boolean to per-buffer flag

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-14 15:53:26 +03:00
Louis-Francis Ratté-Boulianne 534defdf43 gl-renderer: introduce struct egl_image
This is a reference-counted holder of an EGLImage. For now, direct
EGLImage usage is simply converted to use egl_image. Use of reference
counting will come in a later patch.

v2:
- this is a new patch, split from gl-renderer dmabuf import support

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-14 15:53:25 +03:00
Pekka Paalanen 230f3b1bf8 dmabuf: implement linux_dmabuf extension
v2 changes:
- implement the revised protocol
- add basic sanity checks when creating buffer and check for support
- add way to attach user data to the dmabuf for renderer use
- bump max number of planes to 4 to follow DRM AddFb2 ioctl
- improve errors handling
- use separate linux_dmabuf_buffer fields for the different wl_resource
  types
- as SERVER_ERROR code is no more, use a wl_display "generic" error for
  emergency-disconneting a client we fail to process
- more documentation
- change y-invert from per-plane boolean to per-buffer flag

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-14 15:53:25 +03:00
Pekka Paalanen 23ab7159d2 protocol: add linux_dmabuf extension (v3)
An experimental (hence the 'z' prefix) linux_dmabuf Wayland protocol
extension for creating dmabuf-based wl_buffers in a generic manner.

This does not include proper dmabuf metadata negotiation because
there is no way to communicate all dmabuf constraints from the
compositor to a client before-hand. The client has to create a
wl_buffer wrapping one or more dmabuf buffers and then listen at
the feedback object returned to know if the operation was successful.

RFCv1 changes (after a first draft without code):
- some renames of interfaces and argument, no semantic changes
- added destructor protocol to dmabuf_batch
- added feedback interface for buffer creation

v2 changes:
- use drm_fourcc.h as authoritative source for format codes
- add support for the 64-bit layout qualifier and y-inverted dmabufs
- simplify the 'add' request (no need to preserve fd numerical id)
- add explicit plane index in the 'add' request
- integrate the 'feedback' object events to the batch interface
- rename 'create_buffer' to 'create' and move it into the batch interface
- add requirements needed from the graphics stack and clients
- improve existing errors and add batch error codes
- removed error codes from the global interface
- improve documentation for arguments, enums, etc.
- rename dmabuf_batch to zlinux_buffer_params
- The y-inverted property makes more sense as a whole buffer property.
  Y-flipping individual planes of the same buffer object is hardly useful.
  The y-invert is also converted into a flag, so we may add more flags
  later.
- add flags for interlaced buffer content

v3 changes:
- Apply Daniel Vetter's comments about wording on coherency.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Signed-off-by: Louis-Francis Ratté-Boulianne <lfrb@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Acked-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-08-14 15:49:53 +03:00
Dawid Gajownik f3c8336320 weston-launch: On error putenv returns a non-zero value
According to POSIX standard "upon successful completion, putenv() shall
return 0; otherwise, it shall return a non-zero value." Unlike in
setenv() we should not be checking only for negative values.

Signed-off-by: Dawid Gajownik <gajownik@gmail.com>
2015-08-10 15:28:46 -07:00
Dawid Gajownik 2f7d33d984 compositor: fix crash when destroying incompletely created output
When the output can't be completely created in the backend (for example
lack of memory), weston_compositor_add_output() is never run. In such
a case output->link is not initialized. Letter, when
weston_output_destroy() is called, application crashes on
wl_list_remove(&output->link).

This problem happens when drm, fbdev, rdp, rpi or wayland backend is
used.

v2: Initialize output->link in weston_output_init() as suggested by
Derek Foreman.

Signed-off-by: Dawid Gajownik <gajownik@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-08-07 12:28:19 -07:00
Jason Ekstrand 58106d78bb fullscreen-shell: Fix modeset on transformed outputs
Previously, we blindly created a mode for the output based on surface size
and completely ignoring the output transform.  This caused modesets to fail
on outputs that were transformed by 90 or 270 degrees.  We should be
swapping the width and the height in this case.

Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Tested-by: Derek Foreman <derekf@osg.samsung.com>
2015-08-07 12:23:17 -07:00
Derek Foreman 87c862a9d9 input: when destroying a seat, remove keyboard focus first
If we destroy all the devices before trying to remove keyboard focus
we'll segfault because we destroyed the keyboard.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Ryo Munakata <ryomnktml@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-08-07 12:15:39 -07:00
Dawid Gajownik 74a635b1ec Coding style fixes
- opening braces are on the same line as the if statement
- opening braces are not on the same line as the function name
- space between for/while/if and opening parenthesis

Signed-off-by: Dawid Gajownik <gajownik@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-08-07 12:01:22 -07:00
Ryo Munakata 5e653caa4a Use [x]zalloc instead of [x]malloc + memset
Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
2015-08-07 11:59:10 -07:00
Giulio Camuffo b18f788e2e xwm: don't let X windows steal the focus
When we get a focus in event from an X window which is not the one
we last set as the active window, reset the focus.

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-06 16:39:42 +01:00
Derek Foreman 75ead05dd2 rpi-renderer: use weston_output matrix instead of a private matrix
We already do this math in compositor.c so let's not duplicate it here.
Additionally, the copy here has broken zoom, so this also fixes zooming.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Acked-by: Daniel Stone <daniels@collabora.com>
2015-08-06 16:30:11 +01:00
Derek Foreman f9318d1452 input: add a weston_pointer_clear_focus() helper function
Valgrind has shown that in at least one place (default_grab_pointer_focus)
we're testing uninitialized values coming out of weston_compositor_pick_view.

This is happening when default_grab_pointer_focus is called when there is
nothing on the view list, and during the first repaint when only the black
surface with no input region exists.

This patch adds a function to clear pointer focus and also set the sx,sy
co-ordinates to a sentinel value we shouldn't compute with.

Assertions are added to make sure any time pointer focus is set to NULL
these values are used.

weston_compositor_pick_view() now returns these values too.

Now the values are always initialized, even when no view exists, and
they're initialized in such a way that actually doing computation
with them should fail in an obvious way, but we can compare them
safely for equality.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-06 16:28:30 +01:00
Bill Spitzak 2ccd9a2d62 test/ivi: include protocol headers for all used protocols
This seems like a good idea for consistency that the protocol header
is included for any protocols used by the code. This also means the
code will compile with headers generated by wayland-scanner -c.

Fixed to use angle brackets.

Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-06 16:24:59 +01:00
Giulio Camuffo 61ed7b6bf0 input: pass the global touch coordinates to the touch grab
This makes it consistent with the pointer grab, which also gets
global coordinates and not surface relative ones, and allows to
easily filter out gestures based on compositor global hotspots.

Reviewed-by: Daniel Stone <daniels@collabora.com>
2015-08-06 16:21:01 +01:00
Ryo Munakata 7239d74bb3 compositor: remove a call to weston_compositor_schedule_repaint
In weston_compositor_create, we initialize output_list.
After that we call weston_compositor_schedule_repaint which just calls
weston_output_schedule_repaint on all elements of output_list.
This call does nothing obviously. So we remove it.

Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Reviewed-by: Guilio Camuffo <guiliocamuffo@gmail.com>
2015-08-06 16:20:32 +01:00