platform/upstream/weston.git
9 years agocompositor: fix return code from main()
Pekka Paalanen [Fri, 20 Mar 2015 12:35:58 +0000 (14:35 +0200)]
compositor: fix return code from main()

There were a few cases of 'goto out' in main() that did not set ret to
EXIT_FAILURE. Shell failing to init is the one I hit when writing tests
for ivi-shell.

Rather than adding a few more 'ret = EXIT_FAILURE', make that the
default and remove the redundant assignments. When Weston exits
properly ec->exit_code will take care of the exit code.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk>
9 years agocompositor: warn about insane repaint delay
Pekka Paalanen [Thu, 19 Mar 2015 10:27:29 +0000 (12:27 +0200)]
compositor: warn about insane repaint delay

Make the sanity check more explicit and log a warning if it happens.

Small negative values are ok because it just means the compositor is
lagging behind, or more likely the user specified a too long repaint
window.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
9 years agocompositor: add repaint delay timer
Pekka Paalanen [Wed, 21 May 2014 13:17:27 +0000 (16:17 +0300)]
compositor: add repaint delay timer

This timer delays the output_repaint towards the end of the refresh
period, reducing the time from repaint to present.

The length of the repaint window can be set in weston.ini.

The call to weston_output_schedule_repaint_reset() is delayed by one
more period.  If we exit the continuous repaint loop (set
output->repaint_scheduled to false) in finish_frame, we may call
start_repaint_loop() unnecessarily.  The problem case was actually
observed with two outputs on the DRM backend at 60 Hz, and 7 ms
repaint-window. During a window move, one output was constantly falling
off the continuous repaint loop and introducing additional one frame
latency, leading to jerky window motion. This code now avoids the
problem.

Changes in v2:

- Rename repaint_delay_timer to repaint_timer and
output_repaint_delay_handler to output_repaint_timer_handler.

- When computing the delay, take the current time into account. The timer
uses a relative timeout, so we have to subtract any time already gone.

Note, that 'gone' may also be negative. DRM has a habit of predicting
the page flip timestamp so it may be still in the future when we get the
completion event.

- Do also a sanity check 'msec > 1000'. In the unlikely case that
something fails to provide a good timestamp, never delay for more than
one second.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor, backends: weston_compositor_read_presentation_clock
Pekka Paalanen [Wed, 18 Mar 2015 10:17:26 +0000 (12:17 +0200)]
compositor, backends: weston_compositor_read_presentation_clock

Create a new function weston_compositor_read_presentation_clock() to
wrap the clock_gettime() call for the Presentation clock.

Reading the presentation clock is never supposed to fail, but if it
does, this will notify about it. I have not seen it fail yet, though.

This prepares for new testing features in the future that might allow
controlling the presentation clock. Right now it is just a convenience
function for clock_gettime().

All presentation clock readers are converted to call this new function
except rpi-backend's rpi_flippipe_update_complete(), because it gets its
clock id via a thread-safe mechanism. There shouldn't be anything really
thread-unsafe in weston_compositor_read_presentation_clock() at the
moment, but might be in the future, and weston core is not expected to
need to be thread-safe.

This is based on the original patch by
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>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoinput: Make setting the same pointer cursor state again a no-op
Jonas Ådahl [Wed, 18 Mar 2015 07:08:03 +0000 (15:08 +0800)]
input: Make setting the same pointer cursor state again a no-op

If the client calls wl_pointer.set_cursor with the same surface and hot
spot coordinate that is already set, don't do anything as no state was
changed.

This avoids an issue where a client setting the same cursor surface
multiple times would receive wl_surface.leave/enter on that surface
every time.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
9 years agoSpellcheck fixes
Bryce Harrington [Thu, 19 Mar 2015 01:42:00 +0000 (18:42 -0700)]
Spellcheck fixes

./ivi-shell/README:19: protocal  ==> protocol
./src/compositor.h:596: seperate  ==> separate
./src/version.h.in:33: actualy  ==> actually
./src/cms-helper.h:44: embeded  ==> embedded
./protocol/fullscreen-shell.xml:65: seperate  ==> separate
./protocol/xdg-shell.xml:150: auxilliary  ==> auxiliary
./clients/window.c:1035: preferrably  ==> preferably

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agotests: use two roundtrips for global events
Marek Chalupa [Thu, 19 Mar 2015 07:35:40 +0000 (03:35 -0400)]
tests: use two roundtrips for global events

first is for getting and binding to globals and the other one is for
getting wl_shm.formats that are emitted after binding
to wl_shm

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agodesktop-shell: don't allow negative values in drag resize
Derek Foreman [Wed, 18 Mar 2015 16:16:33 +0000 (11:16 -0500)]
desktop-shell: don't allow negative values in drag resize

Now clamping width and height to a minimum of 1, 1 when drag resizing.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor-fbdev: fix output transformations
Derek Foreman [Tue, 17 Mar 2015 18:22:38 +0000 (13:22 -0500)]
compositor-fbdev: fix output transformations

The pixman-renderer is already performing transformations when compositing
into the shadow buffer, we just need to get the damage co-ordinates right
when copying from shadow to front.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Thilo Cestonaro <thilo@cestona.ro>
9 years agocompositor-fbdev: allow configuring transform in the ini file
Derek Foreman [Tue, 17 Mar 2015 18:22:37 +0000 (13:22 -0500)]
compositor-fbdev: allow configuring transform in the ini file

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Thilo Cestonaro <thilo@cestona.ro>
9 years agocompositor-rpi: give the output a name
Derek Foreman [Tue, 17 Mar 2015 18:22:36 +0000 (13:22 -0500)]
compositor-rpi: give the output a name

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoinput: don't assume outputs have names
Derek Foreman [Tue, 17 Mar 2015 18:22:35 +0000 (13:22 -0500)]
input: don't assume outputs have names

If an output is unnamed and devices are in seats, the strcmp will crash.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agocompositor-fbdev: give the output a name
Derek Foreman [Tue, 17 Mar 2015 18:22:34 +0000 (13:22 -0500)]
compositor-fbdev: give the output a name

If you have devices configured in seats with udev then the output names
are tested with string compare.  This fixes a potential crash on startup and
device insertion.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agopixman-renderer: implement view scissor
Pekka Paalanen [Fri, 6 Mar 2015 08:33:50 +0000 (10:33 +0200)]
pixman-renderer: implement view scissor

Only needed in the source-clipped case, otherwise the boundingbox is
already doing the necessary clipping.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agopixman-renderer: implement source clipping
Pekka Paalanen [Thu, 5 Mar 2015 11:25:19 +0000 (13:25 +0200)]
pixman-renderer: implement source clipping

Implement a way to do composition clipping with a region32 given in
source image space.

Pixman does not directly support this kind of operation at all. If you
pixman_image_set_clip_region32() on a source image, it will be ignored
unless you also
pixman_image_set_source_clipping(image, 1);
pixman_image_set_has_client_clip(image, 1);
but then it takes the region from source image and still uses it in the
destination coordinate space. For reference:
http://lists.freedesktop.org/archives/pixman/2015-March/003501.html
That is actually the intended behaviour in Pixman.

This patch implements source clipping by taking each rectangle of the
source clip region, wrapping that sub-rect of the source image in a new
pixman_image_t, and compositing it separately. This might be very heavy as
we are painting the whole damage the number of rectangles times, but
practically always the number of rectangles is one.

An alternative solution would be to use mask images of type PIXMAN_a1,
render the source clip region in it, and set the transformation. You'd
probably also want to cache those images. And because we use the mask to
apply view->alpha, you'd have to use PIXMAN_a8 in those cases.

v2: Fix a comment.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agopixman-renderer: move code to draw_view_translated()
Pekka Paalanen [Thu, 5 Mar 2015 10:57:35 +0000 (12:57 +0200)]
pixman-renderer: move code to draw_view_translated()

Move code from draw_view() into a new function draw_view_translated().
This new function is correct only if
view_transformation_is_translation().

The test for view->alpha is moved into draw_view_translated() too, so we
don't need to pass the pixman_op from draw_view(). The non-translation
path is already using PIXMAN_OP_OVER, so it does not care about the
alpha.

v2: Fixed commit message.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agopixman-renderer: change repaint_region() arguments
Pekka Paalanen [Thu, 5 Mar 2015 09:56:29 +0000 (11:56 +0200)]
pixman-renderer: change repaint_region() arguments

Change the region argument types in repaint_region(), moving the
final_region computation to the caller. The caller is in a better
position deciding if source clipping is needed or if it can be intersected
into the final_region via a simple translation. This avoids
surf_region or source clip implying that the transformation is only a
translation.

The region_global_to_output() call is also moved into the callers so
that repaint_region() would not modify caller-provided data. Modifying
caller provided data could be surprising.

This patch does not change the rendering output.

v2: Remove unused source_clip argument.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agopixman-renderer: refactor into region_intersect_only_translation()
Pekka Paalanen [Wed, 4 Mar 2015 14:12:04 +0000 (16:12 +0200)]
pixman-renderer: refactor into region_intersect_only_translation()

Move code into a new helper function. No changes.

v3: Add assert, and reorder this patch with adding
view_transformation_is_translation().

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agopixman-renderer: add view_transformation_is_translation()
Pekka Paalanen [Wed, 4 Mar 2015 14:18:26 +0000 (16:18 +0200)]
pixman-renderer: add view_transformation_is_translation()

A simple refactoring just to help readability.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agopixman-renderer: refactor transformation computation
Pekka Paalanen [Wed, 4 Mar 2015 12:18:39 +0000 (14:18 +0200)]
pixman-renderer: refactor transformation computation

Move the code computing the end-to-end transformation from
repaint_region() into a new function
pixman_renderer_compute_transform().

The code itself is not modified.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agocompositor: add weston_surface_to_buffer_region()
Pekka Paalanen [Wed, 4 Mar 2015 12:23:28 +0000 (14:23 +0200)]
compositor: add weston_surface_to_buffer_region()

This will be used by pixman-renderer.

v2: Fix doc typo.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agopixman-renderer: simplify the output-to-buffer matrix computation
Jason Ekstrand [Tue, 20 May 2014 20:53:19 +0000 (15:53 -0500)]
pixman-renderer: simplify the output-to-buffer matrix computation

Now that we have a buffer-to-surface matrix and the global-to-output matrix
is in pixels, we can remove a large chunk of confusing code from the pixman
renderer.  Hopefully, having this stuff in weston core will keep the pixman
renderer from gettin broken quite as often.

This patch makes attempting zoom on the pixman-renderer render funny
stuff. We didn't support zoom before, now it renders wrong instead of
not zooming at all.

[Pekka: adjust commit message]
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agocompositor: Add surface-to-buffer and buffer-to-surface matrices
Jason Ekstrand [Thu, 16 Oct 2014 15:55:19 +0000 (10:55 -0500)]
compositor: Add surface-to-buffer and buffer-to-surface matrices

Add matrix representations of these two transformations. Future patches
will leverage these to simplify the coordinate transformation code.

[Pekka: commit message]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agocompositor: use weston_matrix_transform for weston_output_transform_coordinate
Derek Foreman [Thu, 2 Oct 2014 18:41:17 +0000 (13:41 -0500)]
compositor: use weston_matrix_transform for weston_output_transform_coordinate

We can greatly simplify weston_output_transform_coordinate now by simply
multiplying by the output matrix and converting the result to fixed point.

This patch fixes zoomed input behaviour on the nested backends (x11,
wayland) which use absolute input coordinates. And probably also
absolute input devices. The patch that broke this was "zoom: Use pixels
instead of GL coordinates".

Signed-off-By: Derek Foreman <derekf@osg.samsung.com>
[Pekka: adjusted coding style and message]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agorpi-renderer: minimal fix to zoom coordinates
Pekka Paalanen [Tue, 10 Mar 2015 10:52:14 +0000 (12:52 +0200)]
rpi-renderer: minimal fix to zoom coordinates

The patch "zoom: Use pixels instead of GL coordinates" changed the
meaning of weston_output_zoom::trans_x,trans_y from GL coordinate system
to global coordinates.

This patch is a minimal untested change to the rpi-renderer to try and
follow up on that change.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agozoom: Use pixels instead of GL coordinates
Jason Ekstrand [Wed, 21 May 2014 03:45:02 +0000 (22:45 -0500)]
zoom: Use pixels instead of GL coordinates

Previously, the zoom functions used GL coordinates natively which doesn't
work with the new output matrix calculations.  This changes zoom to work in
pixel coordinates to match the new output matrix format.  This also cleans
up the math in the zoom code substantially.

This patch changes the meaning of weston_output_zoom::trans_x,trans_y,
and doing so probably breaks zoom on the rpi-renderer and all absolute
input devices. These problems are fixed by the following patches:

rpi-renderer: minimal fix to zoom coordinates
compositor: use weston_matrix_transform for
weston_output_transform_coordinate

[Pekka: added a comment]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agoUse pixel coordinates for weston_output.matrix
Jason Ekstrand [Thu, 16 Oct 2014 15:55:21 +0000 (10:55 -0500)]
Use pixel coordinates for weston_output.matrix

Previously, weston_output.matrix was in GL coordinates and therefore only
really useful for the GL backend.

This breaks zoom, which will be fixed by the following patch:
zoom: Use pixels instead of GL coordinates

[Pekka: added a comment to compositor.h, message]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agozoom: remove unused args from weston_zoom_transition
Pekka Paalanen [Tue, 10 Mar 2015 10:05:44 +0000 (12:05 +0200)]
zoom: remove unused args from weston_zoom_transition

Also remove the now dead code from weston_output_update_zoom().

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agozoom: remove animation_xy as unused
Pekka Paalanen [Tue, 10 Mar 2015 09:13:14 +0000 (11:13 +0200)]
zoom: remove animation_xy as unused

Remove several fields from struct weston_output_zoom as a consequence of
removing animation_xy from it. Animation_xy was always empty, unused.

Animation_xy was likely used by text_cursor_position implementation, but
that was removed in commit a7af70436b7dccfacd736626d6719b3e751fd985.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Rviewed-By: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agoxwayland: wm: fix an invalid read
Ryo Munakata [Wed, 11 Mar 2015 08:36:30 +0000 (17:36 +0900)]
xwayland: wm: fix an invalid read

This `for` statement needs corresponding braces.

Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agogl-renderer: Call glViewport after the context is made current
Jason Ekstrand [Thu, 16 Oct 2014 15:55:20 +0000 (10:55 -0500)]
gl-renderer: Call glViewport after the context is made current

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoshell,compositor-x11: Fix trivial memory leaks
Ryo Munakata [Sun, 8 Mar 2015 10:17:06 +0000 (19:17 +0900)]
shell,compositor-x11: Fix trivial memory leaks

Signed-off-by: Ryo Munakata <ryomnktml@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agowindow: Fix crash in input_set_pointer_image when cursor is special
Derek Foreman [Wed, 4 Mar 2015 22:26:25 +0000 (16:26 -0600)]
window: Fix crash in input_set_pointer_image when cursor is special

Certain circumstances may lead to the "force" clause in
input_set_pointer_image() being reached when the current cursor
is blank or unset.  These are special cursors that don't have
images, and they need to be handled differently than image cursors.

This patch puts the special cursor handling in its own function and calls
it from both places that need it.  Previously only the frame callback
handler did this correctly.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agogl-renderer: implement view scissor
Pekka Paalanen [Wed, 18 Feb 2015 07:48:59 +0000 (09:48 +0200)]
gl-renderer: implement view scissor

Implement support for weston_view_set_mask().

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
9 years agocompositor-drm: avoid scissor in assign_planes
Pekka Paalanen [Tue, 17 Feb 2015 14:33:18 +0000 (16:33 +0200)]
compositor-drm: avoid scissor in assign_planes

Support for scissor not implemented yet on cursor overlay or for direct
scanout. Overlays OTOH use the boundingbox to compute their coordinates,
so that should probably work.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
9 years agocompositor: add weston_view_set_mask() API and state
Pekka Paalanen [Mon, 16 Feb 2015 12:39:11 +0000 (14:39 +0200)]
compositor: add weston_view_set_mask() API and state

Add API for setting a clip ('scissor' in the code) rectangle per view,
in surface coordinates. Ivi-shell requires this feature to be able to
implement the IVI Layer Manager API, which includes clipping of
surfaces.

The names weston_view_set_mask() and weston_view_set_mask_infinite()
mirror the existing weston_layer_set_mask*() functions.

This view clipping complements the weston_layer clipping, because view
clipping is defined in surface local coordinates, while layer
mask/clipping is defined in global coordinates.

View clipping requires explicit support from the renderers. Therefore a
new Weston capability bit is added: WESTON_CAP_VIEW_CLIP_MASK. Shells
(and all users) of this new API are required to check the capability bit
is set before using the API. Otherwise the rendering will not be what
they expect.

View clips are inherited through the transformation inheritance
mechanism. However, there are restrictions. The clip rectangle can be
set only on the root view of a transformation inheritance tree. The
additional transformations in child views must not rotate the coordinate
axes. These restrictions avoid corner cases in clip inheritance, and
keep the renderer implementations as simple as they are right now.
Renderers only need to do an additional intersection with the clip
rectangle which is always aligned to the surface coordinate system.

For more details, see the API documentation in the patch.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
9 years agocompositor: restructure weston_compositor_pick_view()
Pekka Paalanen [Wed, 18 Feb 2015 13:08:29 +0000 (15:08 +0200)]
compositor: restructure weston_compositor_pick_view()

Expand weston_compositor_pick_view() so it is easier to read. Use
short-hand variables, that make it easier to add one more test in the
future.

Write the output coordinate pointers only when returning non-NULL.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-By: Derek Foreman <derekf@osg.samsung.com>
9 years agoivi-shell: add exit binding
Pekka Paalanen [Thu, 19 Feb 2015 15:12:19 +0000 (17:12 +0200)]
ivi-shell: add exit binding

Let's me easily exit ivi-shell when testing with the DRM-backend.
Only available in ivi-shell developer mode.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agoivi-shell: developer mode debug key bindings
Pekka Paalanen [Thu, 19 Feb 2015 15:08:44 +0000 (17:08 +0200)]
ivi-shell: developer mode debug key bindings

Add a weston.ini option for ivi-shell to enable "developer mode".

When developer mode is enabled, hook up the debug key bindings.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agocompositor,shell: move debug key code to core
Pekka Paalanen [Thu, 19 Feb 2015 15:02:13 +0000 (17:02 +0200)]
compositor,shell: move debug key code to core

The code for the key binding that triggers debug key bindings, that is,
the code that makes mod+SHIFT+SPACE work, used to live in shell.c. I
want to make the debug key bindings available in ivi-shell too, so this
code should be shared. Move it to core.

The code was originally introduced in
commit c509d2b1523364d38da3038eec7b46cd71acd3f5
so update the copyright in binding.c to reflect that.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Acked-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agoivi-layout: separate declarations from code
Carlos Olmedo Escobar [Mon, 2 Mar 2015 12:24:36 +0000 (13:24 +0100)]
ivi-layout: separate declarations from code

Thanks Pekka for pointing that out.

Signed-off-by: Carlos Olmedo Escobar <carlos.olmedo.e@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxdg-shell: Bump unstable version
Jasper St. Pierre [Fri, 13 Feb 2015 06:02:02 +0000 (14:02 +0800)]
xdg-shell: Bump unstable version

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxdg-shell: Rewrite documentation
Jasper St. Pierre [Fri, 13 Feb 2015 06:02:01 +0000 (14:02 +0800)]
xdg-shell: Rewrite documentation

This rewrites basically all of the text inside xdg-shell to be up to
date, clearer, and rid of wl_shell and X11 terminology.

[jadahl: Added paragraph about popup surface mapping order.]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxdg-shell: Add a simple destructor request
Jasper St. Pierre [Fri, 13 Feb 2015 06:02:00 +0000 (14:02 +0800)]
xdg-shell: Add a simple destructor request

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxdg-shell: Add invalid_parent error to xdg_popup
Jonas Ådahl [Fri, 27 Feb 2015 10:37:41 +0000 (18:37 +0800)]
xdg-shell: Add invalid_parent error to xdg_popup

Send an invalid_parent error when the client tries to create a popup
with a paren that is neither a xdg_surface nor a xdg_popup.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxdg-shell: Send an error when the client uses the not-topmost popup
Jasper St. Pierre [Fri, 27 Feb 2015 10:35:45 +0000 (18:35 +0800)]
xdg-shell: Send an error when the client uses the not-topmost popup

Either in destroy or get_xdg_popup.

[jadahl: Verify that the new popup is the top most when mapping instead
of creating. Some renaming.]

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxdg-shell: Remove the flags from get_xdg_popup
Jasper St. Pierre [Fri, 13 Feb 2015 06:01:57 +0000 (14:01 +0800)]
xdg-shell: Remove the flags from get_xdg_popup

There haven't been any ideas for flags, so we don't need a useless,
unused parameter hanging around. Any future ideas should be done with a
new request entirely.

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxdg-shell: Remove the serial from popup_done
Jasper St. Pierre [Fri, 13 Feb 2015 06:01:56 +0000 (14:01 +0800)]
xdg-shell: Remove the serial from popup_done

It doesn't serve any purpose, as it's a serial that the client gave to
the server when starting the popup, which the client already has.

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxdg-shell: Take a xdg_surface as the parent surface
Jasper St. Pierre [Fri, 13 Feb 2015 06:01:55 +0000 (14:01 +0800)]
xdg-shell: Take a xdg_surface as the parent surface

There is no other valid surface that we should be using here.

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agocompositor: fix plane coords in view_accumulate_damage()
Pekka Paalanen [Mon, 23 Feb 2015 12:08:25 +0000 (14:08 +0200)]
compositor: fix plane coords in view_accumulate_damage()

All things everywhere, except this one case, assume weston_plane::damage
is in global coordinates. Document it.

view_accumulate_damage() is wrong in converting damage to plane
coordinates (similar to global coordinate except translated). Fix this
by removing the unwanted translation, and use only global coordinates.

We have not seen this bug manifest in real life because we get lucky:
the origin of the primary plane is always at 0, 0. We do not use
non-primary planes, except cursor plane on DRM backend where the actual
damage coordinates are ignored.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor: let view_compute_bbox() take a box32_t
Pekka Paalanen [Mon, 23 Feb 2015 10:27:00 +0000 (12:27 +0200)]
compositor: let view_compute_bbox() take a box32_t

There are two call sites, one is already having a pixman_box32_t it
needs to call view_compute_bbox() with. The other call site will have a
box32_t when view clipping gets implemented.

Change view_compute_bbox() to take a pixman_box32_t as the input
argument, and convert call sites.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor: weston_output::region is in global coords
Pekka Paalanen [Mon, 23 Feb 2015 11:54:49 +0000 (13:54 +0200)]
compositor: weston_output::region is in global coords

Add a comment saying it is. I'm not aware of misuses of it.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor: remove dead code from weston_output_move()
Pekka Paalanen [Mon, 23 Feb 2015 11:44:10 +0000 (13:44 +0200)]
compositor: remove dead code from weston_output_move()

Also fixes a theoretical memory leak as the region was never fini'd.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor: note, weston_surface_damage does it wrong
Pekka Paalanen [Thu, 19 Feb 2015 11:59:55 +0000 (13:59 +0200)]
compositor: note, weston_surface_damage does it wrong

The fix is not trivial, so I want to document the problem before I
forget about it again.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor: document view->transform.* regions
Pekka Paalanen [Thu, 19 Feb 2015 09:49:18 +0000 (11:49 +0200)]
compositor: document view->transform.* regions

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agopixman-renderer: implement surface_copy_content
Pekka Paalanen [Wed, 11 Feb 2015 10:29:56 +0000 (12:29 +0200)]
pixman-renderer: implement surface_copy_content

Changes in v2:
- remove stride and format arguments from the API

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
v1 Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agogl-renderer: implement surface_copy_content
Pekka Paalanen [Mon, 9 Feb 2015 11:37:27 +0000 (13:37 +0200)]
gl-renderer: implement surface_copy_content

Taking the easy way, always do a rendering pass when copying any real
buffer or texture. Will handle YUV formats, and makes it easy to always
return data the right y-direction up.

All the FBO GL state is created and torn down on every invocation, so this
is a pretty naive implementation.

If there was a wl_shm buffer giving the content to the surface, and the
stride of the buffer was greater than width * bytes_per_pixel, then this
implementation will return stride long rows, not width.

Changes in v2:
- simplify pack_color()
- remove stride and format from the API

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
v1 Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agogl-renderer: add BUFFER_TYPE_SOLID
Pekka Paalanen [Mon, 9 Feb 2015 11:56:56 +0000 (13:56 +0200)]
gl-renderer: add BUFFER_TYPE_SOLID

Add a new buffer type identifying the solid color contents which do not
have a real buffer.

Solid color surfaces now pretend to have 1x1 pixel content data.

This helps the future surface_get_data_size() implementation.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agosurface-screenshot: a new manual test module
Pekka Paalanen [Mon, 9 Feb 2015 09:23:48 +0000 (11:23 +0200)]
surface-screenshot: a new manual test module

Add a new Weston plugin under tests/ for manual testing of the
surface-shooting API.

The debug key binding 'h' triggers a surface shot from the surface that
currently has the pointer focus. The shot is written in PAM format into
a file. PAM format was chosen because it is dead-simple to write from
scratch and can carry an RGBA format.

Changes in v2:
- check fprintf calls, fix a malloc without free
- remove stride and format arguments from the API

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
v1 Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agotimeline: use file_create_dated() helper
Pekka Paalanen [Thu, 12 Feb 2015 11:11:25 +0000 (13:11 +0200)]
timeline: use file_create_dated() helper

Use shared code for this kind of stuff.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agoshared: add file_create_dated() helper
Pekka Paalanen [Thu, 12 Feb 2015 10:52:21 +0000 (12:52 +0200)]
shared: add file_create_dated() helper

For easy creation of unique new files. I'm looking at you,
screenshooter.

This code is based on timeline.c weston_timeline_do_open().

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agocompositor: add surface-shooting API
Pekka Paalanen [Mon, 9 Feb 2015 11:16:57 +0000 (13:16 +0200)]
compositor: add surface-shooting API

This is an optional API that will be implemented by the renderers. It
allows to fetch the current contents of a surface, essentially the
buffer contents from a client buffer, converted to an RGBA format.

This is meant as a debugging API. The implementations may be heavy and
cause a stall, so they are not intended to be used often during normal
operations.

Renderers are expected to convert whatever data a surface has to a
single RGBA format.

Changes in v2:
- remove stride and format arguments from the API

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
v1 Tested-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agotests: Rename wayland-test to weston-test
Derek Foreman [Tue, 24 Feb 2015 15:32:14 +0000 (09:32 -0600)]
tests: Rename wayland-test to weston-test

wayland-test isn't and will never be wayland protocol, it's weston internal.

Renamed wayland-test to weston-test, and wl_test to weston_test.

Also added a Big Fat Warning to the description of weston_test to try to
keep people from thinking it's a good idea to use some of these functions
outside of testing.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Acked-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor: turn weston_view boundingbox into masked
Pekka Paalanen [Thu, 19 Feb 2015 09:15:33 +0000 (11:15 +0200)]
compositor: turn weston_view boundingbox into masked

weston_view::transform.boundingbox is made to include the layer mask,
which removes the need for masked_boundingbox.

The following were using boundingbox when they should have used
masked_boundingbox:
- drm_output_prepare_overlay_view() uses boundingbox to compute overlay
  position, source and destination coordinates.
- drm_assign_planes() uses boundingbox for view overlap checks.
- is_view_not_visible() uses boundingbox, but nothing will show outside
  the layer mask.
- weston_surface_assign_output() intersects boundingbox with output
  region to choose the primary output for a surface.
- weston_view_assign_output() intersects boundingbox with output region
  to pick the outputs the view is on.

This patch essentially changes all those cases to use the masked
boundingbox.

Therefore there are no cases which would need the boundingbox without
the layer mask, and we can convert boundingbox into masked and remove
the left-over member.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
[v2: don't move the decl of 'mask' in weston_view_update_transform]
Reviewed-By: Giulio Camuffo <giuliocamuffo@gmail.com>
9 years agocompositor: turn weston_view::transform.opaque into masked
Pekka Paalanen [Wed, 18 Feb 2015 14:30:47 +0000 (16:30 +0200)]
compositor: turn weston_view::transform.opaque into masked

Turns out there were no users of weston_view::transform.opaque,
everything was already using transform.masked_opaque. Therefore
repurpose transform.opaque as masked_opaque, and remove masked_opaque
member.

Now this opaque region in global coordinates is clipped by the layer
mask, if set. There are no cases where you would need the opaque region
without the effect of layer mask.

Also add a note in compositor.h, that changing view's layer counts as
changing geometry, which requires calling weston_view_geometry_dirty()
to let all derived state update.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Giulio Camuffo <giuliocamuffo@gmail.com>
9 years agocompositor: add a doc note for weston_view::parent_view
Pekka Paalanen [Wed, 18 Feb 2015 14:06:46 +0000 (16:06 +0200)]
compositor: add a doc note for weston_view::parent_view

It is used by sub-surfaces only, for fetching the root view's
weston_layer.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-By: Giulio Camuffo <giuliocamuffo@gmail.com>
9 years agoconfigure.ac: make use of wayland-scanner.pc
Emil Velikov [Tue, 17 Feb 2015 15:13:32 +0000 (15:13 +0000)]
configure.ac: make use of wayland-scanner.pc

Currently we use the wayland-scanner executable as found with
AC_PATH_PROG, and then check the presence of wayland-scanner.pc

Currently the latter is unused even if AC_PATH_PROG fails to find the
binary. Rework things to use the pkg-config variable as a fall-back.

Cc: Andrew Oakley <aoakley@espial.com>
Cc: Bill Spitzak <spitzak@gmail.com>
Cc: Daniel Stone <daniel@fooishbar.org>
Signed-off-by: Emil Velikov <emil.l.velikov@gmail.com>
Reviewed-by: Andrew Oakley <aoakley@espial.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Quentin Glidic <sardemff7+wayland@sardemff7.net>
9 years agodesktop-shell: Fix coding style of add_popup_grab
Jonas Ådahl [Fri, 13 Feb 2015 06:01:54 +0000 (14:01 +0800)]
desktop-shell: Fix coding style of add_popup_grab

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agodesktop-shell: Simplify popup_end_grab popup_done sending loop
Jonas Ådahl [Fri, 13 Feb 2015 06:01:53 +0000 (14:01 +0800)]
desktop-shell: Simplify popup_end_grab popup_done sending loop

Can just use wl_list_for_each_safe instead of dealing with pointers
ourself.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agobuild: do not install ivi-shell png files with "--disable-ivi-shell"
Manuel Bachmann [Mon, 16 Feb 2015 10:00:36 +0000 (11:00 +0100)]
build: do not install ivi-shell png files with "--disable-ivi-shell"

Some of the .png files are specific to ivi-shell. Avoid installing
them to "$prefix/share/weston" if ivi-shell has explicitly been
disabled at configure time.

Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agocompositor: refactor to weston_output_schedule_repaint_reset()
Pekka Paalanen [Wed, 21 May 2014 10:51:49 +0000 (13:51 +0300)]
compositor: refactor to weston_output_schedule_repaint_reset()

No functional changes.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agopresentation-shm: put run mode in window title
Pekka Paalanen [Fri, 6 Feb 2015 11:50:37 +0000 (13:50 +0200)]
presentation-shm: put run mode in window title

This way JSON timeline logs will contain the information about in which
mode the program runs.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agoheadless: fix the output refresh rate
Pekka Paalanen [Fri, 23 May 2014 09:48:45 +0000 (12:48 +0300)]
headless: fix the output refresh rate

60 millihertz is a bit low, let's make it 60 Hz as it was supposed to
be.

When the new repaint scheduling algorithm gets implemented, this
fixes 'make check' taking almost 3 minutes instead of the normal 3
seconds, when running with 7 millisecond repaint window.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agocompositor: document weston_view_damage_below()
Pekka Paalanen [Tue, 17 Feb 2015 11:10:01 +0000 (13:10 +0200)]
compositor: document weston_view_damage_below()

Explains what weston_view::clip is.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
9 years agoconfigure.ac: bump version to 1.7.90
Bryce Harrington [Wed, 18 Feb 2015 02:33:16 +0000 (18:33 -0800)]
configure.ac: bump version to 1.7.90

Master is open for new features again

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoconfigure.ac: bump to version 1.7.0 for release 1.7.0
Bryce Harrington [Sat, 14 Feb 2015 04:47:09 +0000 (20:47 -0800)]
configure.ac: bump to version 1.7.0 for release

9 years agoreleasing: Note that Xwayland installation required only for Weston releases
Bryce Harrington [Sat, 14 Feb 2015 04:46:41 +0000 (20:46 -0800)]
releasing: Note that Xwayland installation required only for Weston releases

9 years agoweston-egl-ext: Define EGL tokens harder for old Mesa
Daniel Stone [Wed, 11 Feb 2015 18:15:18 +0000 (18:15 +0000)]
weston-egl-ext: Define EGL tokens harder for old Mesa

Older versions of Mesa provided header definitions for the
EGL_WL_bind_wayland_display extension, but an earlier version of the
extension which only provided the (un)bind entrypoints, and not
QueryWaylandBuffer. Detect this half-provision and make sure we export
the QueryWaylandBuffer definitions as well.

Fixes build failure with EGL on Ubuntu 12.04.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <ppaalanen@gmail.com>
9 years agotests: Include weston-egl-ext from weston-test
Daniel Stone [Wed, 11 Feb 2015 18:15:17 +0000 (18:15 +0000)]
tests: Include weston-egl-ext from weston-test

weston-test uses eglBindWaylandDisplayWL and friends, which are defined
either by the EGL implementation, or weston-egl-ext.h as a fallback.
Include weston-egl-ext.h from weston-test, so we can build on systems
whose native EGL implementation doesn't give us the needed defines.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <ppaalanen@gmail.com>
9 years agoreleasing: Revert fix and just document work-around of Xwayland path
Bryce Harrington [Fri, 13 Feb 2015 00:49:15 +0000 (16:49 -0800)]
releasing:  Revert fix and just document work-around of Xwayland path

If Xwayland is not in /usr/bin, distcheck will fail without patch
023b265b, which propagates @XSERVER_PATH@ to distcheck but blocks other
use of the DISTCHECK_CONFIGURE_FLAGS env var.  Instead, revert the fix
and merely document the need for setting DISTCHECK_CONFIGURE_FLAGS
manually.

Revert "build:  Pass along any user-specified xserver path to distcheck"

This reverts commit 023b265b44a8ffc9dd303abc50f8b060a2115e55.

9 years agoinput: store the grab serial of the keyboard
Giulio Camuffo [Fri, 6 Feb 2015 17:06:54 +0000 (19:06 +0200)]
input: store the grab serial of the keyboard

The serial can be checked against the one passed to wl_shell.set_popup
or equivalent.
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agobuild: Pass along any user-specified xserver path to distcheck
Bryce Harrington [Tue, 10 Feb 2015 02:13:15 +0000 (18:13 -0800)]
build:  Pass along any user-specified xserver path to distcheck

9 years agobuild: Enable xwayland-test during distcheck
Derek Foreman [Mon, 9 Feb 2015 15:57:29 +0000 (09:57 -0600)]
build: Enable xwayland-test during distcheck

The replacement xwayland-test should succeed, so we should run it
from distcheck again.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agoconfigure.ac: Don't look for Xwayland in the weston install destination
Derek Foreman [Mon, 9 Feb 2015 15:57:28 +0000 (09:57 -0600)]
configure.ac: Don't look for Xwayland in the weston install destination

Xwayland isn't part of this distribution so looking for Xwayland in
weston's install dir will cause distcheck to fail.  Let's set the
default to /usr/bin where it's likely to live.

It can still be overriden during configure exactly as before.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agoconfigure.ac bump to version 1.6.93 for the rc2 release. 1.6.93
Bryce Harrington [Sat, 7 Feb 2015 02:03:43 +0000 (18:03 -0800)]
configure.ac bump to version 1.6.93 for the rc2 release.

9 years agoreleasing: Tweak docs to better match actual workflow
Bryce Harrington [Sat, 7 Feb 2015 02:01:33 +0000 (18:01 -0800)]
releasing: Tweak docs to better match actual workflow

9 years agodesktop-shell: Fail if get_xdg_surface is called on an xdg_surface
Jonas Ådahl [Fri, 6 Feb 2015 02:15:28 +0000 (10:15 +0800)]
desktop-shell: Fail if get_xdg_surface is called on an xdg_surface

If a client calls xdg_shell.get_xdg_surface on a surface that is already
an xdg_surface would, prior to this patch, succeed, but cause weston to
crash later when trying to configure. This patch instead sends a role
error to the client complaining that it already is an xdg_surface.

Note that .._set_role() only fails when changing roles, not when setting
the same role twice.

The same is done for xdg_popup.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoxwm: remove the create surface listener in weston_wm_destroy
Derek Foreman [Tue, 3 Feb 2015 17:05:10 +0000 (11:05 -0600)]
xwm: remove the create surface listener in weston_wm_destroy

Failing to remove this can result in a crash when the signal is sent
after the window manager is destroyed.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-By: Giulio Camuffo <giuliocamuffo@gmail.com>
9 years agoivi-shell: SEGV occurs when multi touch happens in transition
Nobuhiko Tanibata [Fri, 6 Feb 2015 07:08:52 +0000 (16:08 +0900)]
ivi-shell: SEGV occurs when multi touch happens in transition

of application launching. This is because cancel callback is mistakenly
set to weston_touch_grab_interface. To fix this issue, add a
callback, touch_move_workspace_grab_frame and set it to the
weston_touch_grab_interface like desktop-shell.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoUpdate .gitignore
Daniel Stone [Thu, 5 Feb 2015 15:31:10 +0000 (15:31 +0000)]
Update .gitignore

Add autotools remnants, as well as more comprehensive vim swapfiles,
Sublime Text configuration, and git format-patch output.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
9 years agocompositor-x11: Move the x11 window close to an idle handler
Derek Foreman [Tue, 27 Jan 2015 22:26:49 +0000 (16:26 -0600)]
compositor-x11: Move the x11 window close to an idle handler

The input loop is actually dispatched in the middle of the frame repaint.
When the X11 event results in closing the compositor, this can cause the
current output to be destroyed just prior to trying to process animations
on it.

We fix this by handling the window close event in an idle callback.

NOTE: this requires a patch for wayland that moves the idle handler
dispatch to after epoll_wait in the event loop processing.

Closes bug: https://bugs.freedesktop.org/show_bug.cgi?id=81314

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agoFix "Back", "Forward", and other special mouse buttons in the X11 compositor.
Dima Ryazanov [Wed, 4 Feb 2015 09:51:57 +0000 (01:51 -0800)]
Fix "Back", "Forward", and other special mouse buttons in the X11 compositor.

They're off by 4 because of the scroll buttons.

Signed-off-by: Dima Ryazanov <dima@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
9 years agolibinput: Only forward first and last press and release for a key
Jonas Ådahl [Fri, 30 Jan 2015 04:23:00 +0000 (12:23 +0800)]
libinput: Only forward first and last press and release for a key

Keyboard key events will be received from a device where a key has
been pressed, even though an equivalent key has been pressed (same
key code) on a device connected to the same seat. notify_key()
expects to only be called as if there was only one keyboard device
associated with the given seat, so to achieve this, ignore every event
where forwarding it would result in multiple 'pressed' or 'released'
notifications.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
9 years agolibinput: Only forward first and last press and release for a button
Jonas Ådahl [Fri, 30 Jan 2015 04:22:59 +0000 (12:22 +0800)]
libinput: Only forward first and last press and release for a button

Pointer button events will be received from a device where a button has
been pressed, even though an equivalent button has been pressed (same
button code) on a device connected to the same seat. notify_button()
expects to only be called as if there was only one pointer device
associated with the given seat, so to achieve this, ignore every event
where forwarding it would result in multiple 'pressed' or 'released'
notifications.

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Daniel Stone <daniels@collabora.com>
9 years agoxwm: support maximizing xwayland windows
Giulio Camuffo [Thu, 29 Jan 2015 17:06:49 +0000 (19:06 +0200)]
xwm: support maximizing xwayland windows

This patch adds the maximize button to the window frame for the windows
which set the MWM_DECOR_MAXIMIZE hint, and it wires it with the shell
via a new method in weston_shell_interface.
Additionally, it also listens for the wm hints coming from the client,
but it doesn't support maximizing a window only vertically or horizontally.
The window will be maximized only when both directions are maximized.

Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agodesktop-shell: Remove unnecessary type casts
Derek Foreman [Fri, 30 Jan 2015 19:24:36 +0000 (13:24 -0600)]
desktop-shell: Remove unnecessary type casts

Remove a few instances of casting weston_seat to weston_seat.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jon A. Cruz <jonc@osg.samsung.com>
9 years agoscreenshooter: remove useless cast
Derek Foreman [Mon, 2 Feb 2015 19:03:23 +0000 (13:03 -0600)]
screenshooter: remove useless cast

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
9 years agoconfigure.ac: bump to version 1.6.92 for the rc1 release 1.6.92
Bryce Harrington [Sat, 31 Jan 2015 03:12:47 +0000 (19:12 -0800)]
configure.ac: bump to version 1.6.92 for the rc1 release

9 years agoreleasing: Directions for updating the website
Bryce Harrington [Sat, 31 Jan 2015 03:10:12 +0000 (19:10 -0800)]
releasing:  Directions for updating the website

9 years agodesktop-shell: Don't crash on zoom without a pointer in the seat
Derek Foreman [Tue, 6 Jan 2015 20:28:13 +0000 (14:28 -0600)]
desktop-shell: Don't crash on zoom without a pointer in the seat

The zoom effect zooms at the seat's current pointer location.  When no
pointer is present the zoom key bindings cause a crash.

Instead, check for the absence of a pointer and log a warning.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>