Commit graph

1997 commits

Author SHA1 Message Date
Pekka Paalanen
fa79b1d9dc 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>
2015-03-04 11:55:49 +02:00
Pekka Paalanen
5580f2246e 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>
2015-03-04 11:55:41 +02:00
Pekka Paalanen
380adf5bf0 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>
2015-03-04 11:55:25 +02:00
Pekka Paalanen
fc22a52647 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>
2015-03-04 11:55:11 +02:00
Pekka Paalanen
2829f7c42e 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 c509d2b152
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>
2015-03-02 16:56:01 +02:00
Pekka Paalanen
502f5e06a2 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>
2015-02-26 09:07:14 +02:00
Pekka Paalanen
c7d7fdfd11 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>
2015-02-26 09:07:07 +02:00
Pekka Paalanen
efd08c7262 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>
2015-02-26 09:07:01 +02:00
Pekka Paalanen
9e944d3070 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>
2015-02-26 09:06:55 +02:00
Pekka Paalanen
e508ce6a2b 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>
2015-02-26 09:06:47 +02:00
Pekka Paalanen
fbd00f1293 compositor: document view->transform.* regions
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-02-26 09:06:32 +02:00
Pekka Paalanen
6764bbee3b 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>
2015-02-25 14:48:18 +02:00
Pekka Paalanen
eb35cbe2b1 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>
2015-02-25 14:48:12 +02:00
Pekka Paalanen
aeb917ee5d 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>
2015-02-25 14:48:09 +02:00
Pekka Paalanen
23a07005ed 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>
2015-02-25 14:47:59 +02:00
Pekka Paalanen
c647ed79de 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>
2015-02-25 14:47:31 +02:00
Pekka Paalanen
25c0ca5715 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>
2015-02-24 09:45:55 +02:00
Pekka Paalanen
8844bf2ab0 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>
2015-02-24 09:44:37 +02:00
Pekka Paalanen
2d6e551a0b 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>
2015-02-24 09:44:20 +02:00
Pekka Paalanen
8291979662 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>
2015-02-19 15:00:23 +02:00
Pekka Paalanen
1879f21c85 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>
2015-02-19 14:59:50 +02:00
Pekka Paalanen
51723d50b5 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>
2015-02-18 09:49:44 +02:00
Daniel Stone
ad1218ffe6 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>
2015-02-12 19:31:18 -08:00
Giulio Camuffo
b6ddf6c229 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>
2015-02-11 19:35:13 -08:00
Derek Foreman
d540f4bb76 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>
2015-02-04 19:51:34 -08:00
Dima Ryazanov
3e4d4bdd94 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>
2015-02-04 19:45:24 -08:00
Jonas Ådahl
90d1ac8d49 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>
2015-02-04 19:39:32 -08:00
Jonas Ådahl
e90b9e9b59 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>
2015-02-04 19:39:26 -08:00
Giulio Camuffo
6b4b24155f 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>
2015-02-02 16:00:10 -08:00
Derek Foreman
aff7c334fa screenshooter: remove useless cast
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-02-02 14:58:46 -08:00
Bryce Harrington
3bebe6461a Revert "compositor-x11: Move the x11 event handler to the display loop"
This reverts commit 6deb09ef8a.

(Derek says he has an improved version in the works.)
2015-01-27 14:12:56 -08:00
Derek Foreman
6deb09ef8a compositor-x11: Move the x11 event handler to the display loop
While it conceptually makes sense to put the x11 event handler
in the compositor "input" loop, 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.

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

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2015-01-27 13:50:00 -08:00
Olivier Fourdan
2e710e51bb Fix mutex hang in colord on output removal
Using the x11 output (maybe with others as well), weston would hang
when closing the output if the colord plugin is enabled.

The hang occurs in mutex lock in the output notifier handler because
the given GMutex value is incorrect.

This is because of a cast error, the type of container should be
"cms_output" and not "cms_colord".

Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Richard Hughes <richard@hughsie.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-01-20 20:53:46 -08:00
Lubomir Rintel
4f4b47ad20 build: install a login manager session entry
This makes it possible to run Weston session from GDM (and possibly
other login managers).
2015-01-20 19:44:58 -08:00
Carlos Olmedo Escobar
1a873aa9a0 zoom: Check the value of level before using it.
Check the value of level before dividing 1 by it.

Signed-off-by: Carlos Olmedo Escobar <carlos.olmedo.e@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
2015-01-20 18:33:43 -08:00
Pekka Paalanen
bf0e031e4a compositor, drm: set per-surface Presentation feedback flags
PRESENTATION_FEEDBACK_KIND_ZERO_COPY is a flag that needs to be set for
each surface separately. Some surfaces may be zero-copy (as defined by
Presentation feedback) while some are not.

A complication with Weston is that a surface may have multiple views on
screen. All copies (views) of the surface are required to be zero-copy
for the ZERO_COPY flag to be set.

Backends set per-view feedback flags during the assing_planes hook, and
then Weston core collects the flags from all views of a surface.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Tested-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2015-01-20 17:13:20 -08:00
Pekka Paalanen
363aa7bc76 compositor: set presentation.presented flags
Change weston_output_finish_frame() signature so that backends are
required to set the flags, that will be reported on the Presentation
'presented' event. This is meant for output-wide feedback flags. Flags
that vary per wl_surface are subject for the following patch.

All start_repaint_loop functions use the special private flag
PRESENTATION_FEEDBACK_INVALID to mark, that this call of
weston_output_finish_frame() cannot trigger the 'presented' event. If it
does, we now hit an assert, and should then investigate why a fake update
triggered Presentation feedback.

DRM:

Page flip is always vsync'd, and always gets the completion timestamp
from the kernel which should correspond well to hardware. Completion is
triggered by the kernel/hardware.

Vblank handler is only used with the broken planes path, therefore do
not report VSYNC, because we cannot guarantee all the planes updated at
the same time. We cannot set the INVALID, because it would abort the
compositor if the broken planes path was ever used.  This is a hack that
will get fixed with nuclear pageflip support in the future.

fbdev:

No vsync, update done by copy, no completion event from hardware, and
completion time is totally fake.

headless:

No real output to update.

RDP:

Guessing that maybe no vsync, fake time, and copy make sense (pixels
sent over network). Also no event that the pixels have been shown?

RPI:

Presumably Dispmanx updates are vsync'd. We get a completion event from
the driver, but need to read the clock ourselves, so the completion time
is somewhat unreliable. Zero-copy flag not implemented though it would
be theoretically possible with EGL clients (zero-copy is a per-surface
flag anyway, so in this patch).

Wayland:

No information how the host compositor is doing updates, so make a safe
guess without assuming vsync or hardware completion event. While we do
get some timestamp from the host compositor, it is not the completion
time. Would need to hook to the Presentation extension of the host
compositor to get more accurate flags.

X11:

No idea about vsync, completion event, or copying. Also the timestamp is
a fake.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Tested-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Acked-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2015-01-20 17:13:05 -08:00
Pekka Paalanen
050c1ba729 compositor-drm: use drm_output in drm_output_*() func args
When a function is named drm_output_FOO(), you'd expect it to take a
struct drm_output * as an argument. Convert
drm_output_prepare_scanout_view(), drm_output_prepare_overlay_view(),
drm_output_prepare_cursor_view() from weston_output to drm_output.

Additionally convert drm_sprite_crtc_supported() from weston_output to
drm_output.

This change makes drm_assign_planes() to operate on drm_output terms,
which makes further changes a tiny bit easier.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Tested-by: Mario Kleiner <mario.kleiner.de@gmail.com>
2015-01-20 17:12:27 -08:00
David Herrmann
5dbc79ffae logind: fix PropertiesChanged parser
The current parser directly reads a BOOLEAN on the PropertiesChanged
signal for 'Active' properties. However, all property-values are packed in
a VARIANT, otherwise, we wouldn't know the type. Fix the parser to recurse
into the variant before reading the boolean.

To avoid such bugs in the future, we extract the 'Active' parser into a
helper function parse_active(), which is then shared between the
PropertiesChanged and Get handlers.

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Tested-by: nerdopolis <bluescreen_avenger@verizon.net>
2015-01-16 18:34:10 -08:00
David Herrmann
2ecb84a20d logind: forward Active=true changes for non-DRM backends
Logind sends us a notification whenever the Active attribute of our session
changes. However, due to the way compositor-drm.c relies on the master DRM
device to be synced with the session, we used to delay Active=true
handling until the DRM device was up, too. See:

    commit aedc7732eb
    Author: David Herrmann <dh.herrmann@gmail.com>
    Date:   Sat Nov 30 11:25:45 2013 +0100

        logind: delay wakeup until DRM-device is resumed

However, the other compositor backends do not use DRM, so logind-util will
never get notified about any DRM device. Therefore, we have to forward the
Active=true change immediately.

This commit fixes logind-util to take sync_drm as argument. If it is true,
we do DRM-device synchronisation, otherwise we don't.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=86889
Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Tested-by: nerdopolis <bluescreen_avenger@verizon.net>
2015-01-16 18:34:10 -08:00
David Herrmann
541b6047b6 launcher: use SIGRTMIN to not conflict with xwayland
xwayland uses SIGUSR1 as startup notification. Make sure to use SIGRTMIN
for VT handling to avoid conflicts.

A bonus is SIGRT* signals can be queued multiple times, so we will be able
to correctly track them and will no longer lose signals (which wouldn't
really matter, but is confusing in logs).

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Tested-by: nerdopolis <bluescreen_avenger@verizon.net>
2015-01-16 18:34:10 -08:00
David Herrmann
cd6e4777bf logind: use SIGRTMIN to not conflict with xwayland
xwayland uses SIGUSR1 as startup notification. Make sure to use SIGRTMIN
and SIGRTMIN+1 for VT handling.

A bonus is SIGRT* signals can be queued multiple times, so we will be able
to correctly track them and will no longer lose signals (which wouldn't
really matter, but is confusing in logs).

Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Tested-by: nerdopolis <bluescreen_avenger@verizon.net>
2015-01-16 18:34:10 -08:00
Peter Hutterer
5dddd411d6 libinput-device: use the discrete axis value for wheel events
libinput < 0.8 sent wheel click events with value 10. Since 0.8
the value is the angle of the click in degrees but it now provides
the click count as separate value. To keep backwards-compat with
existing clients, we just send multiples of the click count.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2015-01-15 14:41:56 +08:00
Peter Hutterer
c54f23d8df libinput-device: use the new merged scroll events
libinput now provides a single event for scroll events. Extract the axes from
that event and split them into the wl events.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2015-01-15 14:35:08 +08:00
Derek Foreman
fd5ca513f9 input: Add comment explaining why pointer isn't freed when device is removed
When the last pointer is removed from a seat, the pointer struct is
intentionally kept.  This has some interesting side effects, so I've
documented it here so people like me don't errantly assume it's a bug.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
2015-01-08 10:58:33 +08:00
Derek Foreman
99bfa64799 compositor-x11: Fix some shutdown crashes
The assertion in x11_compositor_find_output() can trigger during normal
shutdown, for example, when moving the mouse while hitting a hotkey to
close the weston window.

Instead we can remove the assert(), return NULL, and discard events
we can't find a destination output for.

v2 Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
v1 Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
2014-12-19 14:27:05 +02:00
Derek Foreman
f0aaa41748 text: Don't crash if a seat has no keyboard
A keyboard might not be present in a seat, so check that before
dereferencing keyboard related pointers.

Also, use the keyboard pointer we set to shorten the code a little bit.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jan Arne Petersen <janarne@gmail.com>
2014-12-16 16:05:48 +02:00
Giulio Camuffo
943b46ed66 input: swallow the key press event when running a compositor key binding
Reviewed-by: Daniel Stone <daniel.stone@collabora.com>
2014-12-15 17:41:25 +02:00
Derek Foreman
d09dbb35f0 text: Use bool for input_panel_visible
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2014-12-15 17:30:34 +02:00
Derek Foreman
b1c32f616e text: Remove unused linked list from input_method_context
Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
2014-12-15 17:29:58 +02:00