compositor-drm: Fix crash when setting up seat constrained by an output

Commit 58e15865 changed the parameters for udev_get_seat_by_name() to
receive a struct udev_input. However, when this gets called from
create_output_from_connector() during initialization, the input struct
is not yet initialized, leading to a crash. Previously, that function
would take only a pointer to the compositor.

This patch fixes the crash by initializing input before creating any
outputs.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77503
shell: display the input panel on the active output

We now dynamically move the input panel (i.e. virtual
keyboard) surface to the output containing the currently
focused surface.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=71015

Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
libinput-seat: redirect libinput log to weston log

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

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
libinput-seat: allow setting libinput log priority in weston

Look for WESTON_LIBINPUT_LOG_PRIORITY environment variable.  If
it exists then use it to set the libinput log priority.
Otherwise, don't set the priority and get whatever libinput's
default priority is.

Setting WESTON_LIBINPUT_LOG_PRIORITY=0 allows us to log which
input devices are detected at Weston startup and makes it a
little more consistent with Weston's original evdev input setup
log messages... and useful for debugging and testing.

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
libinput-device: break after LIBINPUT_EVENT_TOUCH_UP

We need to break after handling LIBINPUT_EVENT_TOUCH_UP otherwise
we fall into the default case and end up logging that the event
is unknown and then return the wrong "handled" result.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77577

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
input: fix input device map to output if it doesn't exist.

If an input device wants to map to an output that does not
exist, then just map it to the first output.

Also, if a device is mapped to an output that gets unplugged then
it gets default mapped to the first output in the output destroy
listener.  However, the original output destroy listener needs to
be removed before adding the new listener for the first output,
otherwise the list gets corrupted.

Later if the other output is plugged back in, we remap the device
to it.  In that case, we should remove the destroy listener for
the first output.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77341

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
seat: don't break in notify_output_create

If more than one input device maps to the new output, then we need
to map all devices to that output... not just the first device.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77576

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
editor: react on Enter, Tab, and Up-Down arrow keys

The editor will now insert new lines and tabulations when
pressing the corresponding keys on the virtual keyboard.

The Up and Down arrows can be used to navigate through
lines.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77496

Signed-off-by: Manuel Bachmann <manuel.bachmann@open.eurogiciel.org>
editor: Remove unused variables
weston-info: fix log message typo

Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
gl-renderer: Remove gl_renderer_interface from gl-renderer.h

The rationale here is, that this line would create an instance of
gl_renderer_interface in every compilation unit that included
gl-renderer.h. This is not necessary, and it can actually be harmful by
masking the real exported gl_renderer_interface symbol, if you added
another compilation unit to gl-renderer.so, causing a runtime failure in
loading it.

gl-renderer.c already creates the exported symbol.
Check malloc result

This patch checks malloc was successfull and release resources if it
wasn't.
libinput: Forward frame events to clients

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=77353

Signed-off-by: Jonas Ådahl <jadahl@gmail.com>
desktop-shell: Only use default background if no background color is set

Previously we would only use the set background color if the
background-image value was explicitly set to empty or a non-existing
image.  With this change, we only load the default background image
if there's no configure background image or background color.  In case
of both an image and a color, the image takes precedence as before.
Check zalloc return for out of memory situation

Most zalloc calls in weston are checked, this fixes a handful that were
being ignored.  As found by `grep -EIsr "[^x]zalloc\(" . -A1`

Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
xwayland: Check zalloc return for out of memory situation

Signed-off-by: Bryce Harrington <b.harrington@samsung.com>
Use the correct width/height when transforming surfaces with viewports.

Previously, because of the wrong width/height,
weston_surface_to_buffer_* would return the wrong values when
wl_viewport was used in combination with wl_surface.set_buffer_transform.

Reviewed-by: Pekka Paalanen <ppaalanen@gmail.com>
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
pixman-renderer: Use width/height_from_buffer for buffer transforms

This fixes an issue in the pixman renderer where it would not render
surfaces correctly if both wl_viewport and wl_surface.set_buffer_transform
were used.

Reviewed-by: Pekka Paalanen <ppaalanen@gmail.com>
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
libinput: Don't process touch events for devices without a valid output

That would be the case of a touch screen mapped to an output that was
unplugged.
evdev: Discard events from a touchscreen paired with an unplugged output

Commit 17bccaed intended to make the events coming from a touchscreen
paired with an unplugged output to be discarded, while an unpaired one
would just choose a different output. However, the logic was inverted
causing the opposite to happen.

Later in commit 161c6c56, the default behavior was changed to map an
output to a default output if the one specified via udev is not
present. This change is reverted by this patch.

v2: undo the change from commit 161c6c56.

v3: deal with libinput too.