summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* build: bump to version 11.0.2 for the point release11.0.211.0Marius Vlad2023-05-171-1/+1
| | | | Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* libweston/input: Fix assert for valid confine regionSergio Gómez2023-05-161-1/+1
| | | | | | | | | | | We need only check that the region is not empty. If either the input region or the constraint region have degenerate extents, the intersection from the previous instruction will set confine_region->data to pixman_region_empty_data. Fixes: b6423e59 Signed-off-by: Sergio Gómez <sergio.g.delreal@gmail.com> (cherry picked from commit 1ed88f60c0125988cf1d952f0dabf568bfd82a13)
* libweston: Add assert for valid confine region in maybe_warp_confined_pointer()Sergio Gómez2023-05-161-0/+1
| | | | | Signed-off-by: Sergio Gómez <sergio.g.delreal@gmail.com> (cherry picked from commit b6423e59d9116d140e33e925d6dd9bf8324188a7)
* libweston: Add view unmap listener to pointer constraintsSergio Gómez2023-05-163-15/+34
| | | | | | | | | | | | | | | | Since the logic of pointer constraints assumes a valid view throughout, add a signal to disable constraints when its current view is unmapped by Weston. The assumption that a previously unmapped view is valid already leads to the constraints code crashing. This can happen when attaching a NULL buffer to the surface and commiting, which effectively unmaps the view with the side effect of clearing the surface's input region, which is then assumed valid inside maybe_warp_confined_pointer(). Fixes: #721 Signed-off-by: Sergio Gómez <sergio.g.delreal@gmail.com> (cherry picked from commit e3079393c400e3dc6498234d1d092f3072fa8b44)
* libweston/input: Remove redundant surface destroy listener in constraintsSergio Gómez2023-05-162-18/+0
| | | | | | | | | Currently, the surface destroy listener in pointer constraints is redundant, since surface destruction already handles pointer constraints destruction (see libweston/compositor.c:weston_surface_unref()). Signed-off-by: Sergio Gómez <sergio.g.delreal@gmail.com> (cherry picked from commit 64da736d37a7df8b3bd6fd43746ac513bae72748)
* desktop-shell: avoid crashes when a surface disappears during resizeMichael Olbrich2023-05-161-3/+3
| | | | | | | | | The desktop_surface object is destroyed first so it can happen that the shsurf still exists but desktop_surface is already NULL. So expand the check to make sure the desktop_surface is still available in the resize callbacks. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> (cherry picked from commit 06365e602bd7599760a9a1414d12d6c26ca9c445)
* libweston: clear parent_view when the parent view is destroyedMichael Olbrich2023-05-161-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a view is destroyed then the views of subsurfaces remain until the view list is rebuilt for the next repaint. During that time view->parent_view contains an invalid pointer and weston will crash when it tries to access the view. This happens for a surface with subsurfaces with views on two different outputs with the ivi-shell: When the surface is destroyed then the destroy handler of the ivi-shell (shell_handle_surface_destroy()) may be called first. It will (indirectly) destroy the view of the main surface with weston_view_destroy(). Next the surface destroy handler of the subsurfaces (subsurface_handle_parent_destroy() is called. It will unmap the first view of the subsurface. Here weston_surface_assign_output() is called which tries to find the output of the second view and accesses the now invalid view->parent_view in the process. There are probably other ways to trigger similar crashes. To avoid this, clear view->parent_view when the parent view is destroyed. Fixes 0669d4de4f22 ("libweston: Skip views without a layer assignment in output_mask calculations") Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> (cherry picked from commit 39796f88e6ed4a33a42c74b743e999294b3e4651)
* xwayland: Handle shell hint for client to choose dimensionsAlexandros Frantzis2023-05-161-9/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | A config event with width == 0 or height == 0 from the shell is a hint to the client to choose its own dimensions. Since X11 clients don't support such hints we make a best guess by trying to use the last saved dimensions or, as a fallback, the current dimensions. This hint is mainly used by libweston/desktop shells when transitioning to a normal state from maximized, fullscreen or after a resize [1]. Without support for this hint the aforementioned transition causes xwayland surfaces to be configured to a 1x1 size. To be able to use the last saved dimensions with xwayland surface, the shell needs to first set the maximized/fullscreen state and only then set the new size, which is currently the case for desktop-shell. Otherwise, if the new size is set first, then the last saved dimensions will be set to the fullscreen/maximized values and won't be useful when restoring to a normal window size. [1] Recently we've introduced ba82af938a87ff088b4aacff3b8ac1b6bb461be2 "desktop-shell: do not forget to reset pending config size after resizes". As we were not handling the 0x0 size hint, resizing X applications started to fail. This patch fixes that. Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com> Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com> Co-authored-by: Leandro Ribeiro <leandro.ribeiro@collabora.com> (cherry picked from commit 2acd2c74891cd0548c1ff410ccfe81952bed27b3)
* desktop-shell: do not forget to reset pending config size after resizesLeandro Ribeiro2023-05-161-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | During interactive resizes, we progressively change the size of the client surface and send config events with these sizes to the client. After that, the toplevel->pending.size keeps the size of the last config event that we've sent, i.e. the surface size after the resize is over. Later, if the client spontaneously resize (by attaching a buffer with a different size or setting the viewport destination, for instance), their surface size will change, but toplevel->pending.size continues being that old size from after the resize. If something happens and Weston decides to send a config event, clients may re-allocate to that old size, resulting in a sudden resize. This does not happen when a client goes from fullscreen/maximized to windowed mode because in such cases we are resetting toplevel->pending.size to zero. So in the next config event that clients receive they are allowed to attach buffers with the size that they prefer. So do the same after a resize: set the pending config size to zero. Signed-off-by: Leandro Ribeiro <leandro.ribeiro@collabora.com> (cherry picked from commit ba82af938a87ff088b4aacff3b8ac1b6bb461be2)
* backend-drm: Do not overwrite plane's index when creating virtual planeMarius Vlad2023-05-161-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | Starting with commit 4cde507be6a116 "backend-drm: fix plane sorting" the plane list will have a descending order of the planes rather than ascending. This reversed order had the side-effect of exposing the fact that we don't set-up a plane index when creating the drm_plane using the DRM virtual API. Without settting a plane index for that drm_plane we effectively overwrite the plane index which has the 0 (zero) entry. This wasn't an issue before commit 4cde507be6a116 "backend-drm: fix plane sorting" as it seems we never picked up that plane index as being a suitable one due to the fact that those were assigned to primary planes, but after that commit, the cursor plane will be one getting the 0 (zero) plane index. Finally, this would trip over because we attempt to place a (cursor) view on a primary plane (where it would've normally be a cursor plane) and we end up with no framebuffer ref. This is fixed trivially by assigning a plane index, different than the ones already created by create_spirtes(). Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit 27ce9dadd8865b266f72f848b784d61aeaf8b228)
* pipewire-plugin: Check virtual outputs/remoting instanceMarius Vlad2023-05-161-0/+13
| | | | | | | | | | | | Similarly to remoting plug-in in commit "Check virtual outputs/remoting instance" this avoids touching the pipewire instance, and with it, the pipewire output. Includes a note to point up what should be done about by checking out https://gitlab.freedesktop.org/wayland/weston/-/issues/591. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit 6617deebec5586c4d8c61097b7e51dd53c4e4624)
* pipewire: Destroy the pipewire outputs at shutdownMarius Vlad2023-05-161-0/+4
| | | | | | | | Seems like we are missing destroying the pipewire outputs on the shutdown path; this follow-ups with remoting plug-in as well. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit 278fe4d7d47c7828d42047f4c910f1d815d32b80)
* pipewire: Fix memleak upon compositor shutdownMarius Vlad2023-05-161-0/+2
| | | | | | | | This happens when shutting the compositor, and follows-up with the remoting plug-in. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit aa78da24659a97b82bcf1e28b985ea4f9fce4499)
* pipewire: Follow-up with remoting pluging when releasing the headMarius Vlad2023-05-161-1/+2
| | | | | | | | | | | Similarily to what the remoting plug-in does, explicitly call weston_release_head() before removing the output list entry. We do that to avoid lookup_pipewire_output() returning NULL and still find out the pipewire_output. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit 5db6d19e6bb4c72085104fcae9abf2f632d5f45a)
* remoting-plugin: Check virtual outputs/remoting instanceMarius Vlad2023-05-161-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | With commit aab722bb, "backend-drm: prepare virtual output API for heterogeneous outputs", we now call the virtual destroy function, but when shutting the compositor we no longer have a remoting instance available. When searching out for a remoting output verify if the remoting instance is still available before attempting to search for a remoting output. Addresses the following crash at shutdown: 0x00007fd430a1d347 in lookup_remoted_output (output=0x557163d5dad0) at ../remoting/remoting-plugin.c:515 0x00007fd430a1d746 in remoting_output_destroy (output=0x557163d5dad0) at ../remoting/remoting-plugin.c:635 0x00007fd439e11ab9 in drm_virtual_output_destroy (base=0x557163d5dad0) at ../libweston/backend-drm/drm-virtual.c:265 0x00007fd43a8635d0 in weston_compositor_shutdown (ec=0x557163239530) at ../libweston/compositor.c:8271 0x00007fd439e029d4 in drm_destroy (backend=0x557163240ae0) at ../libweston/backend-drm/drm.c:2713 0x00007fd43a863e07 in weston_compositor_destroy (compositor=0x557163239530) at ../libweston/compositor.c:8626 Includes a note to point up what should be done about by checking out https://gitlab.freedesktop.org/wayland/weston/-/issues/591. Fixes aab722bb "backend-drm: prepare virtual output API for heterogeneous outputs" Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit ca52c79c51088ca4c724b34e54c3bb97a9a51c67)
* remoting-plugin: Release and detach the headMarius Vlad2023-05-161-1/+2
| | | | | | | | | | | | | This re-orders the disable/destroy shutdown sequence such that lookup_remoted_output(), in remoting_output_disable(), would find a remoting output. Otherwise, without this, lookup_remoted_output() wouldn't find a remoting output available when shutting down the compositor, ultimately leading to a crash. Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit c3270e887bc07bb9c7d0e58e25d25e3a65145d2e)
* build: bump to version 11.0.1 for the point release11.0.1Marius Vlad2022-12-141-1/+1
| | | | Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* xwm: Propagate selection ownership immediatelyDerek Foreman2022-12-121-0/+2
| | | | | | | | | | | | | | | | | | | | | | | If we don't xcb_flush() when we set the selection owner, we end up with a ridiculous corner case where we can run use a command line X client like 'xclip -i -selection clipboard' to crash weston. Start weston, ensure Xwayland is running (set a selection with xclip), set the clipboard from a wayland client, then set the clipboard with xclip again. Since xclip doesn't do anything xwm notices except set the clipboard, it won't provoke a flush on our selection ownership change. xclip will take ownership, then we call xcb_convert_selection(), and THEN we flush, sending out our pending ownership change and the xcb_convert_selection() request. The ownership change takes place first, we attempt to get our own selection and weston explodes in a mess. Stop this from happening with a flush when changing selection ownership. Signed-off-by: Derek Foreman <derek.foreman@collabora.com> (cherry picked from commit 11bcad116f5cc1eb76c2de83d8c39af0cdb71a81)
* xwm: Don't crash when setting selection with no seatDerek Foreman2022-12-121-0/+6
| | | | | | | | | | | | | It's possible to set the clipboard with no seat present - one way is to use the RDP backend and then run 'xclip -i -selection clipboard' locally without making an RDP connection. Check if seat is NULL to prevent this from crashing. Fixes #698 Signed-off-by: Derek Foreman <derek.foreman@collabora.com> (cherry picked from commit bb993df236766178df95579217171bce5b166031)
* ivi-shell: Move out weston_desktop_shell at the endMarius Vlad2022-11-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | To avoid the following UAF: Invalid read of size 8 at 0x4AE5EFF: weston_desktop_get_display (libweston-desktop.c:110) by 0x4AEB2C9: weston_desktop_xdg_surface_schedule_configure (xdg-shell.c:1160) by 0x4AEA77A: weston_desktop_xdg_toplevel_set_size (xdg-shell.c:711) by 0x4AE839D: weston_desktop_surface_set_size (surface.c:504) by 0x63F7D43: ivi_layout_surface_set_size (ivi-layout.c:1599) by 0x63F949F: transition_move_resize_view_destroy (ivi-layout-transition.c:311) by 0x63F9397: layout_transition_destroy (ivi-layout-transition.c:259) by 0x63F8E0B: ivi_layout_remove_all_surface_transitions (ivi-layout-transition.c:121) by 0x63F4BC1: ivi_layout_surface_destroy (ivi-layout.c:258) by 0x63F38AF: layout_surface_cleanup (ivi-shell.c:162) by 0x63F3D2D: shell_destroy (ivi-shell.c:359) by 0x4AF059A: weston_signal_emit_mutable (signal.c:62) Address 0x174202d0 is 0 bytes inside a block of size 152 free'd at 0x484617B: free (vg_replace_malloc.c:872) by 0x4AE5EDC: weston_desktop_destroy (libweston-desktop.c:97) by 0x63F3CF2: shell_destroy (ivi-shell.c:355) by 0x4AF059A: weston_signal_emit_mutable (signal.c:62) by 0x4ACBC2C: weston_compositor_destroy (compositor.c:8629) by 0x4864A4B: wet_main (main.c:3908) by 0x10915D: main (executable.c:33) Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit eb755cd81aad6f958629475a0429272aef3147b0)
* hmi-controller: Add missing removal of destroy listenerMarius Vlad2022-11-211-0/+2
| | | | | | | | | | | | | | | | | | | | | Shutting down the compositor gives us: Invalid write of size 8 at 0x4B1AEDB: wl_list_remove (wayland-util.c:56) by 0x4AF05BF: weston_signal_emit_mutable (signal.c:66) by 0x4ACBC2C: weston_compositor_destroy (compositor.c:8629) by 0x4864A4B: wet_main (main.c:3908) by 0x10915D: main (executable.c:33) Address 0x17435f20 is 224 bytes inside a block of size 384 free'd at 0x484617B: free (vg_replace_malloc.c:872) by 0x17718C7E: hmi_controller_destroy (hmi-controller.c:761) by 0x4AF059A: weston_signal_emit_mutable (signal.c:62) by 0x4ACBC2C: weston_compositor_destroy (compositor.c:8629) by 0x4864A4B: wet_main (main.c:3908) by 0x10915D: main (executable.c:33) Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit cfbf2b0ab2ac7c50d8a1ea7645be3a9f3927825b)
* kiosk-shell: Don't use a modifier for surface activation bindingsAlexandros Frantzis2022-11-211-3/+3
| | | | | | | | | | The mouse button and touch bindings to activate a surface shouldn't use the binding modifier. Fixes: https://gitlab.freedesktop.org/wayland/weston/-/issues/679 Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com> (cherry picked from commit 723709aa073fb740c3443fae8e370306d0738675)
* ivi-shell: fix cleanup of desktop surfacesMichael Tretter2022-11-211-0/+8
| | | | | | | | | | | | | | | | | | | | | | | The ivi-shell keeps track of its surfaces by adding them to the ivi_surface_list to be able to remove them on shutdown. It also creates an ivi_layout_surface for a desktop surface, but does not keep track of these surfaces. During compositor shutdown, libweston prints the following message: BUG: finalizing a layer with views still on it. Fix it by adding the created ivi_layout_surface to the ivi_surface_list to remove the surfaces from the layer during shutdown. Furthermore, remove the ivi_layout_surface from the desktop surface and free it when the desktop surface is destroyed. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> (cherry picked from commit 266e2e1d4866ef7c39cff0b77f1e404d0dc96b55) Resolved small conflict which arose due to commit cbf476f208fbdcefe. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* ivi-shell: fix free in get_layers_under_surfaceMichael Tretter2022-11-211-5/+4
| | | | | | | | | | | | | | | If a controller requests the layers under a surface that has no views attached, Weston crashes since it tries to free the array that would be used to return the found layers, but has not been allocated before. Free the ppArray only if it was allocated in ivi_layout_get_layers_under_surface before and no layers were found. While at it, make it obvious that checking the length is an integer comparison by comparing it to 0. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> (cherry picked from commit c56e69bc850540f243ebb87c5bcc38713ef1862a)
* kiosk-shell: Update view transform after activation.Alexandros Frantzis2022-11-211-0/+1
| | | | | | | | | | | | | The activation of a view implies, among other things, a change in the associated view layer which is initially unset. In order for this change to be reflected in the corresponding surface's output mask, and hence allow surface damage to trigger output repaints, we need to update the view transform. Fixes #674 Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com> (cherry picked from commit 341d09d232d652c0001441cce55beb874fb3ba36)
* screenshooter: Add SHM buffer destroy listener to avoid invalid memcpyPaul Kocialkowski2022-11-211-4/+29
| | | | | | | | | | This adds a destroy listener on the SHM buffer provided by our client. It will unregister the frame notify listener in case our buffer is destroyed before the frame signal is emitted and thus avoid a memcpy to invalid memory. Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> (cherry picked from commit 0afd3428dc899c426d37650192f828541f70e390)
* xwm: Check size hints in weston_wm_window_is_positioned()Derek Foreman2022-11-211-0/+3
| | | | | | | | | | | Currently we can't tell the difference between a window intentionally created at 0,0 and a window that we can place anywhere. Check the size hints to see if the flags indicating the placement is intentional are present. Signed-off-by: Derek Foreman <derek.foreman@collabora.com> (cherry picked from commit 1cb46994e3808e8000300ed9ae9dcaa0b76bff28)
* compositor/shared: Suppress write(2) warningsMarius Vlad2022-11-213-10/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes the following warnings when building with _FORTIFY_SOURCE and optimizations enabled: ../shared/xalloc.h:49:9: error: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result] 49 | write(STDERR_FILENO, oommsg, strlen(oommsg)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ or ../compositor/main.c:427:25: error: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result] 427 | write(STDERR_FILENO, fail_seteuid, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 428 | strlen(fail_seteuid)); | ~~~~~~~~~~~~~~~~~~~~~ ../compositor/main.c:434:25: error: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result] 434 | write(STDERR_FILENO, fail_cloexec, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 435 | strlen(fail_cloexec)); | ~~~~~~~~~~~~~~~~~~~~~ ../compositor/main.c:442:25: error: ignoring return value of ‘write’ declared with attribute ‘warn_unused_result’ [-Werror=unused-result] 442 | write(STDERR_FILENO, fail_exec, strlen(fail_exec)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit 8c4cdd782e17aa587bfccb6746998571ddc90dd7)
* backend-rdp/rdpclip: Avoid printing negative indexMarius Vlad2022-11-211-2/+2
| | | | | | | | | | | | | | | | | | | | | As clipboard_find_supported_format_by_mime_type() can return -1 if it can't find out an index avoid trying to print outside of the array. Fixes the following warnings triggered when enabling FORTIFY_SOURCE combined with optimizations (-O) ../libweston/backend-rdp/rdpclip.c:1114:17: error: array subscript -1 is below array bounds of ‘uint32_t[5]’ {aka ‘unsigned int[5]’} [-Werror=array-bounds] 1114 | weston_log("RDP %s (%p:%s) specified format \"%s\" index:%d formatId:%d is not supported by client\n", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1115 | __func__, source, clipboard_data_source_state_to_string(source), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1116 | mime_type, index, source->client_format_id_table[index]); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../libweston/backend-rdp/rdpclip.c:131:18: note: while referencing ‘client_format_id_table’ 131 | uint32_t client_format_id_table[RDP_NUM_CLIPBOARD_FORMATS]; Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit 9455ad7c7c07fdb8218330f449c97be73f695742)
* doc/sphinx: Make doxygen warn as error depend on meson werror flagMarius Vlad2022-11-212-1/+2
| | | | | | | | | | | | | | | | As seen previous times, with newer doxygen version we seem to be generating warnings and with it to stop generating documentation entirely as we have enabled warning as error in the doxygen configuration file. By default meson werror build option is not enabled, so users can still generate documentation when building regularly, and when we'll update to the same doxygen version we should be able to catch those errors up if any of them will pile up in between. Suggested-by: Pekka Paalanen <pekka.paalanen@collabora.com> Signed-off-by: Marius Vlad <marius.vlad@collabora.com> (cherry picked from commit 402d9a81c9a42b0dcfc457c80382c36f5cecc6e6)
* Don't change the max_bpc connector prop if mode=current.vanfanel2022-11-216-13/+36
| | | | | | | | | | | | | | | | | As things are, even when mode=current is specified on the .ini file, a full modeset is needed (and done), which causes a very noticeable screen blinking. That is because setting the max_bpc on a connector needs full modesetting. The idea here is that if mode=current on the .ini, no modesetting should be done, so the current max_bpc is programmed into the connector. But if a custom max-bpc=... is specified, that will be used instead, even if mode=current on the .ini Fixes: https://gitlab.freedesktop.org/wayland/weston/-/issues/660 Signed-off-by: vanfanel <redwindwanderer@gmail.com> (cherry picked from commit 3240ccc69d1488003c1cfc36d23750145d4f13f7)
* backend-wayland: always propagate touch frame eventMichael Olbrich2022-11-211-4/+5
| | | | | Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> (cherry picked from commit 631b60b38bf03a41515c4cdc9294f5b21ca719a5)
* input: send touch frame event after up eventMichael Olbrich2022-11-211-2/+61
| | | | | | | | | | | | | | | | | | Currently the frame event gets lost: The touch focus is removed in the 'up' event. So the focus is gone when the frame event arrives so it is never sent to the clients. To avoid this, keep the touch focus until the frame is handled. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> (cherry picked from commit 5448580111b5ff992ce2603cb6e99b9f54db7ad8) This has undergone a change to avoid an ABI break, so rather than hooking up a pending_touch boolean in weston_touch, keep a local list of weston_touch_devices and have a pending_touch with each device to check upon. Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* build: bump to version 11.0.0 for the official release11.0.0Simon Ser2022-09-221-1/+1
|
* build: bump to version 10.0.94 for the RC2 release10.0.94Simon Ser2022-09-151-1/+1
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>
* libweston: Skip views without a layer assignment in output_mask calculationsAlexandros Frantzis2022-09-141-9/+11
| | | | | | | | | | | | | | | Surface views that are not assigned to a layer are not going to be rendered, and thus should not participate in determining the outputs the surface is on. There are other view properties that may determine if the view should be considered in output_mask calculations, e.g., is_mapped, but checking for this currently breaks tests. Such additional checks are left for future fixes or reworkings of the view infrastructure. Fixes #646 Signed-off-by: Alexandros Frantzis <alexandros.frantzis@collabora.com>
* clients/eventdemo: Remove duplicated param entriesMarius Vlad2022-09-141-2/+0
| | | | | | | | Removes doxygen warning. Fixes #664 Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* doc: remove directives deprecated in Doxygen 1.9.5Pekka Paalanen2022-09-131-40/+0
| | | | | | | | | | | | | | | | | | | | | | All these Doxygen configuration directives raise a deprecation warning with Doxygen 1.9.5. Since we have WARN_AS_ERROR = YES, this causes the build to fail. Remove these deprecated directives. I have checked the differences by first building from scratch without this patch, and then building from scratch with this patch, and in the latter builddir checking $ diff -ru -x '*.md5' -x '*.pdf' ~/tmp/weston-doc-before doc The only differences are the Doxygen config file and one .pickle file. So it seems the generated docs are identical with Doxygen 1.9.1. Fixes: https://gitlab.freedesktop.org/wayland/weston/-/issues/661 Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
* clients: Fix cursors when compositor gives wl_seat before wl_compositorDerek Foreman2022-09-121-2/+11
| | | | | | | | | | | | | We have no guarantee that we can create a surface for the pointer at the instant we receive a seat that will (probably eventually) need one. Hold off until we receive an enter event before creating this - at that point we know with certainty that wl_compositor is available, since we've used it to create the surface that was entered. Fixes #659 Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
* build: bump to version 10.0.93 for the RC1 release10.0.93Simon Ser2022-09-061-1/+1
|
* libweston/input: Assert if we're still having a notify listener installedMarius Vlad2022-09-021-0/+1
| | | | | | | | | | Tracking correctly previous events shouldn't corrupt the surface destroy signal list. This enforces that by ensuring that we wouldn't have a .notify wl_listener still being set (which shouldn't happen if we do eventually get a focus_in event that clears it out). Suggested-by: Alexandros Frantzis <alexandros.frantzis@collabora.com> Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* libweston/backend-x11: Tracking previous events over multiple callsMarius Vlad2022-09-021-18/+18
| | | | | | | | | | | | | | | Rather than doing it with a local variable, track any previous events by hanging it out of the x11 backend and use it to handle keymap notify events. In this way we avoid corrupting the surface destroy signal list, in notify_keyboard_focus_out(), ultimately leading to a crash. Fixes #649, #650 Suggested-by: Daniel Stone <daniel.stone@collabora.com> Reported-by: Alexandros Frantzis <alexandros.frantzis@collabora.com> Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* backend-drm: fix plane sortingMichael Olbrich2022-08-311-2/+2
| | | | | | | | | | | | | | The planes in the plane_list must be sorted from largest zpos_max to smallest. Currently the plane order is only correct when the planes are already ordered and added starting with the smallest zpos_max. This works accidentally in most cases because the primary plane is usually first and there is often only one overlay plane or the zpos is sufficiantly configurable. To fix this, insert a new plane before the first plane with a smaller zpos_max. And if none is found, insert it at the end of the list. Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
* build: bump to version 10.0.92 for the beta release10.0.92Simon Ser2022-08-231-1/+1
|
* simple-egl: Update buffer_size dimensions when starting as maximizedMarius Vlad2022-08-221-83/+89
| | | | | | | | | | | | | | With commit 62ab6891db9763dd44228, 'clients/simple-egl: Handle buffer scale and transform' we changed the way we resized the client, by encapsulating the resize in update_buffer_geometry() function. we didn't correct that when creating the EGL window, which might be problematic if you attempt to start the window with different a different state, like maximized. Fixes 62ab6891db9763dd4 Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
* clients/simple-egl: call eglSwapInterval after eglMakeCurrentErik Kurzinger2022-08-121-3/+3
| | | | | | | | | | | If weston-simple-egl is run with the "-b" flag, it will attempt to set the swap interval to 0 during create_surface. However, at that point, it will not have made its EGLContext current yet, causing the eglSwapInterval call to have no effect. To fix this, wait until the EGLContext has been made current in init_gl before updating the swap interval. Signed-off-by: Erik Kurzinger <ekurzinger@nvidia.com>
* clients: Set the hotspot with attach if we already have a valid cursorDerek Foreman2022-08-101-5/+24
| | | | | | | | We want atomic hotspot updates - this can't happen with wl_pointer_set_cursor. So if we have a surface that already has a cursor role, just update the hotspot when attaching new content. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
* Revert "clients/window: atomically update pointer cursor"Derek Foreman2022-08-101-14/+5
| | | | | | | | | | This reverts commit 992ee045f1b59c037165ecdd752c2f2d78f16ee4. Recreating the surface for every cursor change causes flickering cursors on some compositors, and is not the best way to achieve atomic cursor updates Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
* Revert "clients/window: Fix animated cursors"Derek Foreman2022-08-101-8/+17
| | | | | | | | | | | | This reverts commit f079f43658d9cbffa402a84101b31072775d3619. This only partially fixed a problem introduced in 992ee045f1b59c037165ecdd752c2f2d78f16ee4 I'm reverting that commit in favor of a different fix, so this broken fix needs to go first. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
* build: bump to version 10.0.91 for the alpha release10.0.91Simon Ser2022-08-091-1/+1
| | | | Signed-off-by: Simon Ser <contact@emersion.fr>