platform/upstream/weston.git
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>
9 years agoxwayland-test: Replace the xwayland-test
Derek Foreman [Thu, 29 Jan 2015 22:44:55 +0000 (16:44 -0600)]
xwayland-test: Replace the xwayland-test

The old xwayland-test hasn't worked in a while...

This new test checks that the wayland specific WL_SURFACE_ID atom exists,
checks that the window manager name is "Weston WM" and then maps a window
and waits for an exposure event.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Tested-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoxwm: fix use after free
Giulio Camuffo [Fri, 26 Dec 2014 16:10:35 +0000 (18:10 +0200)]
xwm: fix use after free

Calling wl_event_source_remove() will free the event source later, so
reset the pointer to avoid calling it two times on the same pointer.
Fix a compositor crash when copying some text from weston terminal,
pasting it in the same terminal and hitting ctrl-u, while a X client
is running.
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoivi-shell-transition: check create_layout_transition() return value.
Carlos Olmedo Escobar [Sat, 17 Jan 2015 18:43:02 +0000 (19:43 +0100)]
ivi-shell-transition: check create_layout_transition() return value.

Signed-off-by: Carlos Olmedo Escobar <carlos.olmedo.e@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: ntanibata@jp.adit-jv.com
9 years agoshell: fix positioning of maximized surfaces with a custom geometry
Giulio Camuffo [Fri, 9 Jan 2015 18:10:45 +0000 (20:10 +0200)]
shell: fix positioning of maximized surfaces with a custom geometry

9 years agoeditor: Make editor multi-seat aware
Derek Foreman [Wed, 17 Dec 2014 15:43:58 +0000 (09:43 -0600)]
editor: Make editor multi-seat aware

With multi-seat, multiple entries can occur on the text inputs in the
editor.  Also, the panel shouldn't be hidden by the editor if either
text entry is still active.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Jan Arne Petersen <janarne@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoRevert "compositor-x11: Move the x11 event handler to the display loop"
Bryce Harrington [Tue, 27 Jan 2015 22:12:56 +0000 (14:12 -0800)]
Revert "compositor-x11: Move the x11 event handler to the display loop"

This reverts commit 6deb09ef8a72164947cdfa5f2414e292c7672c9c.

(Derek says he has an improved version in the works.)

9 years agoxwm: set the _NET_WM_DESKTOP property of the windows
Giulio Camuffo [Sat, 13 Dec 2014 16:06:34 +0000 (18:06 +0200)]
xwm: set the _NET_WM_DESKTOP property of the windows

Some X clients use the _NET_WM_DESKTOP property to tell if the window
is mapped or not. If set, it should say the virtual desktop the window
is currently in, if unset it means the window is unmapped.
The xwm currently has no way to know how many virtual desktops
the shell plugin has, or if it even implements the metaphor. For now
just set the property to 0, meaning the first desktop, if the window is
mapped, and delete the property when unmapped.

Reviewed-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agocompositor-x11: Move the x11 event handler to the display loop
Derek Foreman [Fri, 12 Dec 2014 20:12:28 +0000 (14:12 -0600)]
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>
9 years agoreleasing: Mention dual release announcements
Bryce Harrington [Tue, 27 Jan 2015 02:23:37 +0000 (18:23 -0800)]
releasing:  Mention dual release announcements

9 years agoclients: Remove stray new-line
Jonas Ådahl [Mon, 26 Jan 2015 10:19:07 +0000 (18:19 +0800)]
clients: Remove stray new-line

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
9 years agoxwm: don't set inactive surfaces as top level
Giulio Camuffo [Sat, 24 Jan 2015 15:54:21 +0000 (17:54 +0200)]
xwm: don't set inactive surfaces as top level

Some X clients create popup or tooltips windows as top level, without
setting them as override redirect or as transient. Since we don't want
to take the focus away from a surface when one of its popup is opened,
check the _NET_WM_WINDOW_TYPE of the X surfaces being mapped and set
them as inactive if it is one of some types.

Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agotests: Skip buffer count test if wl_drm isn't present
Derek Foreman [Fri, 23 Jan 2015 18:12:36 +0000 (12:12 -0600)]
tests: Skip buffer count test if wl_drm isn't present

This skips the test when running on the headless backend.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
(Presumably) Reviewed-by: Daniel Stone <daniel@fooishbar.org>

9 years agoMakefile: fix assigning to dist_wayland_session_DATA
Marek Chalupa [Thu, 22 Jan 2015 09:03:03 +0000 (10:03 +0100)]
Makefile: fix assigning to dist_wayland_session_DATA

dist_wayland_session_DATA is not set anywhere before, so using +=
results in:

error: dist_wayland_session_DATA must be set with '=' before using '+='

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoMakefile.am: Use fine-grained dist control for desktop file
Bryce Harrington [Thu, 22 Jan 2015 01:17:07 +0000 (17:17 -0800)]
Makefile.am: Use fine-grained dist control for desktop file

9 years agoFix mutex hang in colord on output removal
Olivier Fourdan [Thu, 8 Jan 2015 14:40:29 +0000 (15:40 +0100)]
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>
9 years agoreleasing: Add example commands to release directions
Bryce Harrington [Sat, 10 Jan 2015 02:09:21 +0000 (18:09 -0800)]
releasing: Add example commands to release directions

Note that for weston, configure.ac needs version numbers updated in
several places.  `make distcheck` for weston no longer triggers the test
suite to run, so update the directions to run a `make check`
pre-release.  Switch to using the X.org release.sh script in place of
some of the manual steps.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
9 years agobuild: install a login manager session entry
Lubomir Rintel [Sun, 28 Dec 2014 13:20:49 +0000 (14:20 +0100)]
build: install a login manager session entry

This makes it possible to run Weston session from GDM (and possibly
other login managers).

9 years agozoom: Check the value of level before using it.
Carlos Olmedo Escobar [Sat, 17 Jan 2015 19:31:53 +0000 (20:31 +0100)]
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>
9 years agotext: Fix typo
Derek Foreman [Fri, 16 Jan 2015 23:47:10 +0000 (17:47 -0600)]
text: Fix typo

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agoreleasing: Typo
Bryce Harrington [Sat, 10 Jan 2015 02:09:20 +0000 (18:09 -0800)]
releasing: Typo

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
9 years agoRevert "simple-egl: HACK to report presentation flags"
Bryce Harrington [Wed, 21 Jan 2015 01:22:16 +0000 (17:22 -0800)]
Revert "simple-egl: HACK to report presentation flags"

This reverts commit b77acf592fdc625a09e4d1ea1672dba2db128238.

Change is listed as "not for upstream"

9 years agosimple-egl: HACK to report presentation flags
Pekka Paalanen [Wed, 17 Dec 2014 14:20:43 +0000 (16:20 +0200)]
simple-egl: HACK to report presentation flags

So that we can test the per-surface ZERO_COPY flag:
- start Weston on DRM backend
- run ./weston-simple-egl -o (need to be opaque to end up on overlay)
- hit debug key 'V' to enable the (broken) hw overlays

The debug key is used by first hitting Mod+Shift+space, then hitting 'v'.

Enabling overlays should change the flags from 0x7 to 0xe. To verify the
window is really on an overlay, use debug key 'S' to tint all
GL-composited things green.

This patch is not intended for upstream.

Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
Tested-by: Mario Kleiner <mario.kleiner.de@gmail.com>
9 years agotests, clients: add Presentation feedback flags
Pekka Paalanen [Wed, 17 Dec 2014 14:20:42 +0000 (16:20 +0200)]
tests, clients: add Presentation feedback flags

Decode the new feedback flags.

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>
9 years agocompositor, drm: set per-surface Presentation feedback flags
Pekka Paalanen [Wed, 17 Dec 2014 14:20:41 +0000 (16:20 +0200)]
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>
9 years agocompositor: set presentation.presented flags
Pekka Paalanen [Wed, 17 Dec 2014 14:20:40 +0000 (16:20 +0200)]
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>
9 years agoprotocol: add Presentation feedback flags
Pekka Paalanen [Wed, 17 Dec 2014 14:20:39 +0000 (16:20 +0200)]
protocol: add Presentation feedback flags

Add the missing feedback flags to the Presentation extension protocol
specification.

These flags are slightly different from the previous RFCv3.1 definition:
http://lists.freedesktop.org/archives/wayland-devel/2014-March/013598.html

Now, all compositors are safe to use 0 as the flags if they don't bother
setting them properly. 0 is the "worst case" with the least guarantees.

The meaning of ZERO_COPY is not exactly the opposite of the old COPY
flag. ZERO_COPY is more strict, but applies only to that one surface.
Therefore it can be used to verify a zero-copy video playback pipeline,
also to a hardware overlay.

There is no longer a flag to clearly indicate if the final presentation
was done by a copy or a page flip. ZERO_COPY forbids the copy, but VSYNC
alone does allow copy in case it cannot tear.  It is possible to have
first a compositing pass, and then another copy into the frontbuffer,
and still set VSYNC if it cannot tear.  Usually "cannot tear" is too
hard to guarantee with a copy, so it often implies a page flip.

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>
9 years agocompositor-drm: use drm_output in drm_output_*() func args
Pekka Paalanen [Wed, 17 Dec 2014 14:20:38 +0000 (16:20 +0200)]
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>
9 years agoconfigure.ac: bump to version 1.6.91 for the alpha release 1.6.91
Bryce Harrington [Sat, 17 Jan 2015 11:45:34 +0000 (03:45 -0800)]
configure.ac: bump to version 1.6.91 for the alpha release

9 years agologind: fix PropertiesChanged parser
David Herrmann [Tue, 30 Dec 2014 13:33:23 +0000 (14:33 +0100)]
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>
9 years agologind: forward Active=true changes for non-DRM backends
David Herrmann [Tue, 30 Dec 2014 13:33:22 +0000 (14:33 +0100)]
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 aedc7732ebd9bc7b4f51ee247ea857ffec6260a7
    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>
9 years agolauncher: use SIGRTMIN to not conflict with xwayland
David Herrmann [Tue, 30 Dec 2014 13:33:21 +0000 (14:33 +0100)]
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>
9 years agologind: use SIGRTMIN to not conflict with xwayland
David Herrmann [Tue, 30 Dec 2014 13:33:20 +0000 (14:33 +0100)]
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>
9 years agoconfigure.ac: Require libinput 0.8
Jonas Ådahl [Thu, 15 Jan 2015 06:45:56 +0000 (14:45 +0800)]
configure.ac: Require libinput 0.8

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
9 years agolibinput-device: use the discrete axis value for wheel events
Peter Hutterer [Thu, 15 Jan 2015 03:14:43 +0000 (13:14 +1000)]
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>
9 years agolibinput-device: use the new merged scroll events
Peter Hutterer [Tue, 13 Jan 2015 01:55:37 +0000 (11:55 +1000)]
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>
9 years agoinput: Add comment explaining why pointer isn't freed when device is removed
Derek Foreman [Wed, 7 Jan 2015 21:00:25 +0000 (15:00 -0600)]
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>
9 years agocompositor-x11: Fix some shutdown crashes
Derek Foreman [Thu, 11 Dec 2014 21:44:46 +0000 (15:44 -0600)]
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>
9 years agoconfigure: bump libwayland requirements
Pekka Paalanen [Thu, 18 Dec 2014 12:57:19 +0000 (14:57 +0200)]
configure: bump libwayland requirements

wl_surface role error codes were added during the 1.6.90 development to
libwayland.

Reported-by: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: Fix wrong condition to check return value of controller_module_init
Nobuhiko Tanibata [Tue, 16 Dec 2014 10:37:22 +0000 (19:37 +0900)]
ivi-shell: Fix wrong condition to check return value of controller_module_init

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
9 years agotext: Don't crash if a seat has no keyboard
Derek Foreman [Mon, 8 Dec 2014 16:48:29 +0000 (10:48 -0600)]
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>
9 years agoinput: swallow the key press event when running a compositor key binding
Giulio Camuffo [Fri, 5 Dec 2014 16:02:58 +0000 (18:02 +0200)]
input: swallow the key press event when running a compositor key binding

Reviewed-by: Daniel Stone <daniel.stone@collabora.com>
9 years agotext: Use bool for input_panel_visible
Derek Foreman [Fri, 5 Dec 2014 21:38:39 +0000 (15:38 -0600)]
text: Use bool for input_panel_visible

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
9 years agotext: Remove unused linked list from input_method_context
Derek Foreman [Fri, 5 Dec 2014 21:38:38 +0000 (15:38 -0600)]
text: Remove unused linked list from input_method_context

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
9 years agotext: Fix coding style
Derek Foreman [Fri, 5 Dec 2014 21:38:37 +0000 (15:38 -0600)]
text: Fix coding style

Put the return type on a separate line in function declarations.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
9 years agotext: Fix some typos
Derek Foreman [Fri, 5 Dec 2014 21:38:36 +0000 (15:38 -0600)]
text: Fix some typos

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
9 years agoivi-shell: rewrite controller API
Nobuhiko Tanibata [Mon, 15 Dec 2014 04:25:39 +0000 (13:25 +0900)]
ivi-shell: rewrite controller API

This fixes the breakage caused by "ivi-shell: make ivi-layout.c as a
part of ivi-shell.so"

hmi-controller.c:
A reference implementation of controller module does not use the layout
functions directly. This get function pointers at controller_module_init
which called by ivi-shell.

ivi-layout-export.h:
Definition of interfaces in a struction: ivi_controller_interface.
function pointers are set at ivi-layout.c.

ivi-layout-private.h:
Definition of some interfaces are remove bucause it is implemented in
ivi-layout.c and set it as function pointer. Several interfaces are kept
here because they are implemented in ivi-layout.c/transition.c but used
in other files.

ivi-layout-transition.c:
remove WL_EXPORT because export is not needed anymore.
remove unnesesary unsed method.

ivi-shell.c:
call controller_module_init of hmi-controller to init it and set
function pointers. If the interface_version is equal or
greater than what hmi_controller was built with, things are pass.
If the interface_version is smaller than what the controller expects,
it has to fail because it cannot work. This is followed the manner,

- never remove a function pointer
- never modify an existing function signature
- additions are allowed at the end of struct ivi_controller_interface
- all function pointers must always be populated and working in
  ivi-shell.so (ivi-layout.c etc.)

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: make ivi-layout.c as a part of ivi-shell.so
Nobuhiko Tanibata [Mon, 15 Dec 2014 04:22:31 +0000 (13:22 +0900)]
ivi-shell: make ivi-layout.c as a part of ivi-shell.so

ivi-layout.so is separately built and loaded by using dlopen with
RTLD_GLOBAL. This was because these apis defined in ivi-layout.so shall
be used by ivi-modules; e.g. hmi-controller. This shall be improved that
a struct ivi_layout_api contains the whole exported API as function
pointers to be exposed as module_init.

This patch alone builds, but loading controller modules at runtime
failes. This failure will be fixed by following patches.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: several ivi-layout interfaces moved accross source.
Nobuhiko Tanibata [Mon, 15 Dec 2014 04:20:58 +0000 (13:20 +0900)]
ivi-shell: several ivi-layout interfaces moved accross source.

Interfaces for properties setting shall be implemented in ivi-layout.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: reordering method in ivi_layout.c
Nobuhiko Tanibata [Mon, 15 Dec 2014 04:20:44 +0000 (13:20 +0900)]
ivi-shell: reordering method in ivi_layout.c

In the future, re-alignmenet of WL_EXPORT per method should be done.
For that work, re-ordering is required to be used by another method.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: clean up unnecesary header
Nobuhiko Tanibata [Mon, 15 Dec 2014 04:20:14 +0000 (13:20 +0900)]
ivi-shell: clean up unnecesary header

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: clean-up transition animation code.
Nobuhiko Tanibata [Mon, 15 Dec 2014 04:18:46 +0000 (13:18 +0900)]
ivi-shell: clean-up transition animation code.

ivi_layout_transition_layer_render_order is not necesary called. Remove
the method and methods called by it.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: Say something when configuration is missing
Ondřej Majerech [Sat, 6 Dec 2014 01:49:18 +0000 (02:49 +0100)]
ivi-shell: Say something when configuration is missing

When ivi-module is not set in weston.conf, we probably want to tell the
user about their error instead of just dying.

Signed-off-by: Ondřej Majerech <majerech.o@gmail.com>
[Pekka: include Tanibata's suggestion, fix file name, fix surrounding
coding style]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agocompositor: Propagate errors from module_init
Ondřej Majerech [Sat, 6 Dec 2014 01:49:17 +0000 (02:49 +0100)]
compositor: Propagate errors from module_init

load_modules currently ignores errors signalled by both
weston_load_module and module_init, and instead always returns 0. Its
return value appears to be checked in callers, so we most likely want to
propagate any errors.

Signed-off-by: Ondřej Majerech <majerech.o@gmail.com>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoclipboard: set fd member of clipboard_source
Marek Chalupa [Wed, 10 Dec 2014 11:07:58 +0000 (12:07 +0100)]
clipboard: set fd member of clipboard_source

The fd member of clipboard_source structure was not set
but was used in close().

v2. don't do unnecessary changes

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoscreenshooter: fix various memory handling
Marek Chalupa [Wed, 10 Dec 2014 10:50:46 +0000 (11:50 +0100)]
screenshooter: fix various memory handling

There were unchecked malloc and no free for this memory.
Also simplify error handling in one function.

v2. remove check if memory is NULL, according to man pages,
    free(NULL) is a no-op

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agowindow: use roundtrip instead of dispatch after get_registry
Marek Chalupa [Fri, 5 Dec 2014 12:49:40 +0000 (13:49 +0100)]
window: use roundtrip instead of dispatch after get_registry

wl_display_dispatch() just dispatches events that are in
default and display queues and if there are no events,
then it will wait for them. But only dispatching
the events doesn't guarantee that we got all the global announcements,
we need to do sync too. Therefore use wl_display_roundtrip() instead
of wl_display_dispatch().

Signed-off-by: Marek Chalupa <mchqwerty@gmail.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoxwm: fix a crash in handle_state
Andrew Engelbrecht [Tue, 2 Dec 2014 17:18:44 +0000 (12:18 -0500)]
xwm: fix a crash in handle_state

To produce the bug, build and run: (you don't need the game data to test)

https://github.com/clintbellanger/flare-engine/

$ mv ~/.config/flare ~/.config/flare.bak
$ ./flare  # click 'configure', set full screen mode then click 'ok'
           # weston will crash and dump core.

[Pekka: edited the commit message]
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agotests: Fix minor typo
Bryce Harrington [Thu, 11 Dec 2014 02:33:47 +0000 (18:33 -0800)]
tests:  Fix minor typo

9 years agocompositor: Implement JSON-timeline logging
Pekka Paalanen [Wed, 12 Nov 2014 13:09:24 +0000 (15:09 +0200)]
compositor: Implement JSON-timeline logging

Logging is activated and deactivated with the debug key binding 't'.
When activated, it creates a new log file, where it records the events.
The log file contains events and detailed object information entries in
JSON format, and is meant to be parsed in sequence from beginning to the
end.

The emitted events are mostly related to the output repaint cycle, like
when repaint begins, is submitted to GPU, and when it completes on a
vblank. This is recorded per-output. Also some per-surface events are
recorded, including when surface damage is flushed.

To reduce the log size, events refer to objects like outputs and
surfaces by id numbers. Detailed object information is emitted only as
needed: on the first object occurrence, and afterwards only if
weston_timeline_object::force_refresh asks for it.

The detailed information for surfaces includes the string returned by
weston_surface::get_label. Therefore it is important to set
weston_timeline_object::force_refresh = 1 whenever the string would
change, so that the new details get recorded.

A rudimentary parser and SVG generator can be found at:
https://github.com/ppaalanen/wesgr

The timeline logs can answer questions including:
- How does the compositor repaint cycle work timing-wise?
- When was the vblank deadline missed?
- What is the latency from surface commit to showing the new content on
  screen?
- How long does it take to process the scenegraph?

v2: weston_surface::get_description renamed to get_label.
v3: reafctor a bit into fprint_quoted_string().

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agocompositor: add weston_surface_set_label_func()
Pekka Paalanen [Wed, 6 Aug 2014 16:36:51 +0000 (19:36 +0300)]
compositor: add weston_surface_set_label_func()

When printing out logs from Weston's actions, mainly for debugging, it
can be very difficult to identify the different surfaces.  Inspecting
the configure function pointer is not useful, as the configure functions
may live in modules.

Add vfunc get_label to weston_surface, which will produce a short,
human-readable description of the surface, which allows identifying it
better, rather than just looking at the surface size, for instance.

Set the label function from most parts of Weston, to identify cursors and
drag icons, and panels, backgrounds, screensavers and lock surfaces, and
the desktop shell's application surfaces.

v2: renamed 'description' to 'label', so we get
weston_surface_set_label_func().

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: reference implementation of input panel for ivi-shell
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:25:34 +0000 (13:25 +0900)]
ivi-shell: reference implementation of input panel for ivi-shell

- introduces ivi-shell/input-panel-ivi.c which is basically copied
  from desktop shell. It shall be improvaded to remove duplicate
  implementation.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoclients: support ivi-application.xml for clients/window.c
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:24:52 +0000 (13:24 +0900)]
clients: support ivi-application.xml for clients/window.c

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoclients: support ivi-application.xml for clients/simple-egl.c
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:24:42 +0000 (13:24 +0900)]
clients: support ivi-application.xml for clients/simple-egl.c

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoclients: support ivi-application.xml for clients/simple-shm.c
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:24:29 +0000 (13:24 +0900)]
clients: support ivi-application.xml for clients/simple-shm.c

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: a reference of weston.ini for ivi-shell and ivi-hmi-controller.
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:24:16 +0000 (13:24 +0900)]
ivi-shell: a reference of weston.ini for ivi-shell and ivi-hmi-controller.

- introduces ivi-shell/weston.ini.in

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agodata: add reference image files for weston-ivi-shell-user-interface
Nobuhiko Tanibata [Tue, 11 Mar 2014 02:54:45 +0000 (11:54 +0900)]
data: add reference image files for weston-ivi-shell-user-interface

- introduces reference images used by weston-ivi-shell-user-interface.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoclients: a reference implementation of UI client how to use ivi-hmi-controller.
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:23:32 +0000 (13:23 +0900)]
clients: a reference implementation of UI client how to use ivi-hmi-controller.

- introduces ivi-shell-user-interface.c

This is launched from hmi-controller by launch_hmi_client_process and
invoke a
client process.

The basic flow is as followed,
1/ process invoked
2/ read configuration from weston.ini.
3/ draw png file to surface according to configuration of weston.ini
4/ all parts of UI are ready. request "UI_ready" to draw UI.
5/ Enter event loop
6/ If a surface receives touch/pointer event, followings are invoked
according
   to type of event and surface
6-1/ If a surface to launch ivi_application receive touch up, it execs
     ivi-application configured in weston.ini.
6-2/ If a surface to switch layout mode receive touch up, it sends a
request,
     ivi_hmi_controller_switch_mode, to hmi-controller.
6-3/ If a surface to show workspace having launchers, it sends a
request,
     ivi_hmi_controller_home, to hmi-controller.
6-4/ If touch down events happens in workspace,
     ivi_hmi_controller_workspace_control is sent to slide workspace.
     When control finished, event:
ivi_hmi_controller_workspace_end_control
     is received.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: a reference implementation how to use ivi-layout internal APIs
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:23:12 +0000 (13:23 +0900)]
ivi-shell: a reference implementation how to use ivi-layout internal APIs

- hmi-controller.so
- introduces hmi-controller.so

The library is used to manage layout of surfaces/layers. Layout change
is triggered by ivi-hmi-controller protocol, ivi-hmi-controller.xml. A
reference how to use the protocol, see ivi-shell-user-interface.c.

In-Vehicle Infotainment system usually manages properties of
surfaces/layers by only a central component which decide where
surfaces/layers shall be. This is differenct use case from desktop
style; each application can request property of its window via xdg-shell
protocol, like fullscreen and set its to top level. In-Vehicle
Infortainment system doesn't allow each application to chagen them from
its application because of safty reasons. The concept of layer is
simillar with a use case of cursor layer of Destop. For In-Vehicle
Infortainment system, it is extended to all applications. For example,
rearview camera application is assigned to a layer to group several
surfaces, e.g. captured image and drawing lines separately. Central
manaegr can control property of the layer of rearview camera.

This reference show examples to implement the central component as a
module of weston.

Default Scene graph of UI is defined in hmi_controller_create. It
consists of
- In the bottom, a base layer to group surfaces of background, panel,
  and buttons
- Next, a application layer to show application surfaces.
- Workspace background layer to show a surface of background image.
- Workspace layer to show launcher to launch application with icons.
  Paths to binary and icon are defined in weston.ini. The width of
  this layer is longer than the size of screen because a workspace
  has several pages and is controlled by motion of input.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoprotocol: ivi hmi controller protocol to set up IVI style UI
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:22:53 +0000 (13:22 +0900)]
protocol: ivi hmi controller protocol to set up IVI style UI

- introduces ivi-hmi-controller.xml

This protocol realizes following features,
- UI ready
- changing modes; tiling, side by side, full_screen, and random
- Give control a surface; workspace to be controlled by using ivi layout
  APIs
- Display/undisplay a surface; home contains sevaral workspaces to
  launch applications

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: add the shell plugin for In-Vehicle Infotainment system
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:22:37 +0000 (13:22 +0900)]
ivi-shell: add the shell plugin for In-Vehicle Infotainment system

- ivi-shell.so
- introduces ivi-shell/ivi-shell.[ch]

In-Vehicle Infotainment system traditionally manages surfaces with
global identification. A protocol, ivi_application, supports such a
feature by implementing a request, ivi_application::surface_creation
defined in ivi_application.xml.

The ivi-shell explicitly loads ivi-layout.so and a module to add
business logic like how to layout surfaces by using ivi-layout APIs.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: add IVI layout APIs
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:22:00 +0000 (13:22 +0900)]
ivi-shell: add IVI layout APIs

- ivi-layout.so
- introduces ivi-layout-export.h, ivi-layout.[ch]

API set of controlling properties of surface and layer which groups
surfaces. An unique ID whose type is integer is required to create
surface and layer. With the unique ID, surface and layer are identified
to control them. The API set consists of APIs to control properties of
surface and layers about followings,

- visibility.
- opacity.
- clipping (x,y,width,height).
- position and size of it to be displayed.
- orientation per 90 degree.
- add or remove surfaces to a layer.
- order of surfaces/layers in layer/screen to be displayed.
- commit to apply property changes.
- notifications of property change.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Acked-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoprotocol: add interface ivi_application extension
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:21:34 +0000 (13:21 +0900)]
protocol: add interface ivi_application extension

- introduces ivi-application.xml

Many applications in an IVI-system are special single-purpose
applications that have a very specific role in the whole IVI UI, for
example a rear camera, speedometer, map, etc. The IVI system vendor
specifies what these are and how they integrate into the UI. They also
vary between particular IVI systems. This is why we use (system-)global,
unique, pre-determined ID numbers to tell what wl_surface is which
application, instead of writing specific shell requests for each one.
Using ID numbers allows vendors to easily invent new component
applications without extending or breaking the actual Wayland protocol.
In IVI-systems, the ID is a standard concept already used in several
APIs, with a vendor-specified global definition of ID assignments.

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoivi-shell: add README for ivi-shell
Nobuhiko Tanibata [Thu, 27 Nov 2014 04:19:23 +0000 (13:19 +0900)]
ivi-shell: add README for ivi-shell

Signed-off-by: Nobuhiko Tanibata <NOBUHIKO_TANIBATA@xddp.denso.co.jp>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agofbdev: Remove unnecessary semicolon
nerdopolis [Wed, 3 Dec 2014 15:53:03 +0000 (15:53 +0000)]
fbdev: Remove unnecessary semicolon

[daniels: removed extraneous changes]

9 years agoinput: send focus events to the focused client when running a key binding
Giulio Camuffo [Sat, 22 Nov 2014 09:16:56 +0000 (11:16 +0200)]
input: send focus events to the focused client when running a key binding

When running a key binding we don't send the key press to the client
via the wl_keyboard.key event. Instead, send a wl_keyboard.leave/enter
pair so that the client knows the actual state of the keyboard.

Reviewed-by: Daniel Stone <daniel@fooishbar.org>
9 years agorpi-renderer: don't pass a box to pixman_region32_contains_point()
Derek Foreman [Fri, 21 Nov 2014 18:31:04 +0000 (12:31 -0600)]
rpi-renderer: don't pass a box to pixman_region32_contains_point()

We don't care which box contained the point, so don't pass one in.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
9 years agoUse zalloc instead of calloc(1, ...)
Bryce Harrington [Fri, 21 Nov 2014 06:21:57 +0000 (22:21 -0800)]
Use zalloc instead of calloc(1, ...)

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
9 years agoSetting members to 0/NULL after a zalloc or calloc is redundant
Bryce Harrington [Fri, 21 Nov 2014 06:21:56 +0000 (22:21 -0800)]
Setting members to 0/NULL after a zalloc or calloc is redundant

calloc (and zalloc) set the allocated memory to 0, so there's really no
need to do it manually.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
[Pekka: dropped the src/evdev.c hunk.]
Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoUse zalloc rather than malloc and manually setting members to 0
Bryce Harrington [Fri, 21 Nov 2014 06:21:55 +0000 (22:21 -0800)]
Use zalloc rather than malloc and manually setting members to 0

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoclients: Use xmalloc in a few more places
Derek Foreman [Thu, 20 Nov 2014 21:42:35 +0000 (15:42 -0600)]
clients: Use xmalloc in a few more places

Just changes some places where a malloc failure is unhandled
to our xmalloc function that exit()s a little more gracefully.

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Bryce Harrington <b.harrington@samsung.com>
9 years agotests: Use one shared xzalloc implementation
Bryce Harrington [Thu, 20 Nov 2014 01:18:36 +0000 (17:18 -0800)]
tests: Use one shared xzalloc implementation

Since this is an inlined function, move it to a common header file.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
9 years agotests: Move ARRAY_LENGTH to a shared header for reuse
Bryce Harrington [Thu, 20 Nov 2014 01:18:35 +0000 (17:18 -0800)]
tests: Move ARRAY_LENGTH to a shared header for reuse

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
9 years agotests: Cleanup superfluous headers
Bryce Harrington [Thu, 20 Nov 2014 01:18:34 +0000 (17:18 -0800)]
tests: Cleanup superfluous headers

Mostly remove headers that aren't actually needed for anything.
Add stdint.h to permit dropping xf86drm.h, which is otherwise unneeded.

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Acked-by: Marek Chalupa <mchqwerty@gmail.com>
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agotests: Include "config.h" as first header
Bryce Harrington [Thu, 20 Nov 2014 01:18:33 +0000 (17:18 -0800)]
tests: Include "config.h" as first header

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
9 years agodnd: Fix some mouse cursor issues
Derek Foreman [Thu, 20 Nov 2014 21:32:40 +0000 (15:32 -0600)]
dnd: Fix some mouse cursor issues

When ending a drag in the window the cursor will be wrong until the mouse
is moved again.  This is because the item being dragged isn't added
until after the enter event.

Also, when picking up an item while moving the mouse the cursor can switch
back to a non-drag cursor before the drag begins.  This is because of a
slight delay between button click and drag start.

Finally picking up or dropping an item under a second pointer could cause
that pointer to have the wrong cursor.

Closes one of the issues in bug 56298
https://bugs.freedesktop.org/show_bug.cgi?id=56298

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agoinput: Use slightly less obscure logic in evdev_notify_keyboard_focus()
Derek Foreman [Wed, 19 Nov 2014 17:04:12 +0000 (11:04 -0600)]
input: Use slightly less obscure logic in evdev_notify_keyboard_focus()

While the test is actually correct (for non-negative numbers), it's not
at all clear and seems to be an accidental order of operations mistake.

Also, add an assert() to make sure this number is never negative.

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

Signed-off-by: Derek Foreman <derekf@osg.samsung.com>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
9 years agosimple-shm: explain two initial roundtrips
Pekka Paalanen [Tue, 25 Nov 2014 07:56:53 +0000 (09:56 +0200)]
simple-shm: explain two initial roundtrips

Explain carefully why we need two roundtrips, not just one, not just
dispatch and roundtrip, but two roundtrips after creating the
wl_registry object.

v2: Explain what initial events are, and that this is a general
technique.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Reviewed-by: Marek Chalupa <mchqwerty@gmail.com>
9 years agoconfigure: remove input backend result
Pekka Paalanen [Wed, 26 Nov 2014 11:48:29 +0000 (13:48 +0200)]
configure: remove input backend result

Don't print a line with empty value.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agocompositor: Drop legacy backends in favor of libinput
Peter Hutterer [Tue, 25 Nov 2014 21:06:31 +0000 (07:06 +1000)]
compositor: Drop legacy backends in favor of libinput

Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
9 years agodesktop-shell: don't crash input-panel if no kbd focus
Pekka Paalanen [Thu, 20 Nov 2014 08:15:07 +0000 (10:15 +0200)]
desktop-shell: don't crash input-panel if no kbd focus

If a keyboard exists but it has no current focus, yet something asks the
input-panel to come up, we would crash here. Check that there is a focus
before attempting to use it.

Maybe there should not even exist a case where input-panel tries to come
up without a keyboard focus, but I am not sure there is no race where it
could happen.

In any case, this fix was brought up by the ivi-shell work, where I
suppose you can somehow hit it.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
Cc: Tanibata, Nobuhiko <ntanibata@jp.adit-jv.com>
9 years agoinput: don't run the key bindings on focus in
Giulio Camuffo [Thu, 20 Nov 2014 21:03:22 +0000 (23:03 +0200)]
input: don't run the key bindings on focus in

When getting the focus we get the list of pressed keys, but we are
not supposed to run the key binding on them.

Reviewed-by: Daniel Stone <daniel@fooishbar.org>
9 years agotests: Allow tests to use customized command line parameters
Derek Foreman [Wed, 19 Nov 2014 23:06:20 +0000 (15:06 -0800)]
tests: Allow tests to use customized command line parameters

Tests will now return the extra command line parameters they need
when run with --params

Signed-off-by: Bryce Harrington <bryce@osg.samsung.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>