Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package weston for openSUSE:Factory checked 
in at 2022-12-15 19:26:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/weston (Old)
 and      /work/SRC/openSUSE:Factory/.weston.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "weston"

Thu Dec 15 19:26:00 2022 rev:29 rq:1043154 version:11

Changes:
--------
--- /work/SRC/openSUSE:Factory/weston/weston.changes    2022-09-23 
14:15:55.718079877 +0200
+++ /work/SRC/openSUSE:Factory/.weston.new.1835/weston.changes  2022-12-15 
19:26:24.144465000 +0100
@@ -1,0 +2,8 @@
+Thu Dec 15 13:47:26 UTC 2022 - Jan Engelhardt <[email protected]>
+
+- Update to release 11.0.1
+  * A few potential crash fixes for xwm and ivi-shell have been
+    pre-emptively addressed as well some warnings seen with
+    ivi-shell when closing down weston.
+
+-------------------------------------------------------------------

Old:
----
  weston-11.0.0.tar.xz
  weston-11.0.0.tar.xz.sig
  weston.keyring

New:
----
  weston-11.0.1.tar.xz
  weston-11.0.1.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ weston.spec ++++++
--- /var/tmp/diff_new_pack.U5FuwG/_old  2022-12-15 19:26:24.620467709 +0100
+++ /var/tmp/diff_new_pack.U5FuwG/_new  2022-12-15 19:26:24.624467732 +0100
@@ -19,7 +19,7 @@
 Name:           weston
 %define lname  libweston0
 %define major   11
-%define realver        11.0.0
+%define realver        11.0.1
 Version:        11
 Release:        0
 Summary:        Wayland Reference Compositor
@@ -28,9 +28,8 @@
 URL:            https://wayland.freedesktop.org/
 #Git-Clone:    git://anongit.freedesktop.org/wayland/weston
 #Git-Web:      https://cgit.freedesktop.org/wayland/weston/
-Source:         
https://gitlab.freedesktop.org/wayland/weston/-/releases/%realver/downloads/weston-%realver.tar.xz
-Source2:        
https://gitlab.freedesktop.org/wayland/weston/-/releases/%realver/downloads/weston-%realver.tar.xz.sig
-Source3:        %name.keyring
+Source:         
https://gitlab.freedesktop.org/wayland/weston/uploads/f5648c818fba5432edc3ea63c4db4813/weston-11.0.1.tar.xz
+Source2:        
https://gitlab.freedesktop.org/wayland/weston/uploads/bb54e28b5ee47aaccb30a8ffbc31f977/weston-11.0.1.tar.xz.sig
 BuildRequires:  Mesa-libGLESv3-devel
 BuildRequires:  autoconf >= 2.64
 BuildRequires:  automake >= 1.11

++++++ weston-11.0.0.tar.xz -> weston-11.0.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/compositor/main.c 
new/weston-11.0.1/compositor/main.c
--- old/weston-11.0.0/compositor/main.c 2022-09-22 18:16:14.000000000 +0200
+++ new/weston-11.0.1/compositor/main.c 2022-12-14 08:09:30.000000000 +0100
@@ -385,6 +385,7 @@
        sigset_t allsigs;
        pid_t pid;
        bool ret;
+       size_t written __attribute__((unused));
 
        weston_log("launching '%s'\n", path);
        str_printf(&fail_exec, "Error: Couldn't launch client '%s'\n", path);
@@ -424,22 +425,23 @@
 
                /* Launch clients as the user. Do not launch clients with wrong 
euid. */
                if (seteuid(getuid()) == -1) {
-                       write(STDERR_FILENO, fail_seteuid,
-                             strlen(fail_seteuid));
+                       written = write(STDERR_FILENO, fail_seteuid,
+                                       strlen(fail_seteuid));
                        _exit(EXIT_FAILURE);
                }
 
                ret = fdstr_clear_cloexec_fd1(&wayland_socket);
                if (!ret) {
-                       write(STDERR_FILENO, fail_cloexec,
-                             strlen(fail_cloexec));
+                       written = write(STDERR_FILENO, fail_cloexec,
+                                       strlen(fail_cloexec));
                        _exit(EXIT_FAILURE);
                }
 
                execve(argp[0], argp, envp);
 
                if (fail_exec)
-                       write(STDERR_FILENO, fail_exec, strlen(fail_exec));
+                       written = write(STDERR_FILENO, fail_exec,
+                                       strlen(fail_exec));
                _exit(EXIT_FAILURE);
 
        default:
@@ -2051,7 +2053,8 @@
        enum weston_drm_backend_output_mode mode =
                WESTON_DRM_BACKEND_OUTPUT_PREFERRED;
        uint32_t transform = WL_OUTPUT_TRANSFORM_NORMAL;
-       uint32_t max_bpc;
+       uint32_t max_bpc = 0;
+       bool max_bpc_specified = false;
        char *s;
        char *modeline = NULL;
        char *gbm_format = NULL;
@@ -2063,16 +2066,19 @@
                return -1;
        }
 
-       weston_config_section_get_uint(section, "max-bpc", &max_bpc, 16);
-       api->set_max_bpc(output, max_bpc);
-
        weston_config_section_get_string(section, "mode", &s, "preferred");
+       if (weston_config_section_get_uint(section, "max-bpc", &max_bpc, 16) == 
0)
+               max_bpc_specified = true;
 
        if (strcmp(s, "off") == 0) {
                assert(0 && "off was supposed to be pruned");
                return -1;
        } else if (wet->drm_use_current_mode || strcmp(s, "current") == 0) {
                mode = WESTON_DRM_BACKEND_OUTPUT_CURRENT;
+               /* If mode=current and no max-bpc was specfied on the .ini file,
+                  use current max_bpc so full modeset is not done. */
+               if (!max_bpc_specified) 
+                       max_bpc = 0;
        } else if (strcmp(s, "preferred") != 0) {
                modeline = s;
                s = NULL;
@@ -2086,6 +2092,8 @@
        }
        free(modeline);
 
+       api->set_max_bpc(output, max_bpc);
+
        if (count_remaining_heads(output, NULL) == 1) {
                struct weston_head *head = weston_output_get_first_head(output);
                transform = weston_head_get_transform(head);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/compositor/xwayland.c 
new/weston-11.0.1/compositor/xwayland.c
--- old/weston-11.0.0/compositor/xwayland.c     2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/compositor/xwayland.c     2022-12-14 08:09:30.000000000 
+0100
@@ -110,6 +110,7 @@
        char *const *envp;
        char *const *argp;
        bool ret;
+       size_t written __attribute__ ((unused));
 
        if (os_socketpair_cloexec(AF_UNIX, SOCK_STREAM, 0, wayland_socket.fds) 
< 0) {
                weston_log("wl connection socketpair failed\n");
@@ -174,8 +175,8 @@
                /* execve does not return on success, so it failed */
 
                if (exec_failure_msg) {
-                       write(STDERR_FILENO, exec_failure_msg,
-                             strlen(exec_failure_msg));
+                       written = write(STDERR_FILENO, exec_failure_msg,
+                                       strlen(exec_failure_msg));
                }
 
                _exit(EXIT_FAILURE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/doc/sphinx/doxygen.ini.in 
new/weston-11.0.1/doc/sphinx/doxygen.ini.in
--- old/weston-11.0.0/doc/sphinx/doxygen.ini.in 2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/doc/sphinx/doxygen.ini.in 2022-12-14 08:09:30.000000000 
+0100
@@ -759,7 +759,7 @@
 # a warning is encountered.
 # The default value is: NO.
 
-WARN_AS_ERROR          = YES
+WARN_AS_ERROR          = @MESON_WERROR@
 
 # The WARN_FORMAT tag determines the format of the warning messages that 
doxygen
 # can produce. The string should contain the $file, $line, and $text tags, 
which
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/doc/sphinx/meson.build 
new/weston-11.0.1/doc/sphinx/meson.build
--- old/weston-11.0.0/doc/sphinx/meson.build    2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/doc/sphinx/meson.build    2022-12-14 08:09:30.000000000 
+0100
@@ -39,6 +39,7 @@
 doxy_conf_data = configuration_data()
 doxy_conf_data.set('SRC_ROOT', meson.source_root())
 doxy_conf_data.set('OUTPUT_DIR', doxygen_database)
+doxy_conf_data.set('MESON_WERROR', get_option('werror') == true ? 'YES' : 'NO')
 doxygen_conf_weston = configure_file(
                input: 'doxygen.ini.in',
                output: 'doxygen.ini',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/include/libweston/backend-drm.h 
new/weston-11.0.1/include/libweston/backend-drm.h
--- old/weston-11.0.0/include/libweston/backend-drm.h   2022-09-22 
18:16:14.000000000 +0200
+++ new/weston-11.0.1/include/libweston/backend-drm.h   2022-12-14 
08:09:30.000000000 +0100
@@ -84,7 +84,8 @@
         * The property is used for working around faulty sink hardware like
         * monitors or media converters that mishandle the kernel driver
         * chosen bits-per-channel on the physical link. When having trouble,
-        * try a lower value like 8.
+        * try a lower value like 8. A value of 0 means that the current max
+        * bpc will be reprogrammed.
         *
         * The value actually used in KMS is silently clamped to the range the
         * KMS driver claims to support. The default value is 16.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/ivi-shell/hmi-controller.c 
new/weston-11.0.1/ivi-shell/hmi-controller.c
--- old/weston-11.0.0/ivi-shell/hmi-controller.c        2022-09-22 
18:16:14.000000000 +0200
+++ new/weston-11.0.1/ivi-shell/hmi-controller.c        2022-12-14 
08:09:30.000000000 +0100
@@ -738,6 +738,8 @@
        struct hmi_controller *hmi_ctrl =
                container_of(listener, struct hmi_controller, destroy_listener);
 
+       wl_list_remove(&hmi_ctrl->destroy_listener.link);
+
        wl_list_for_each_safe(link, next,
                              &hmi_ctrl->workspace_fade.layer_list, link) {
                wl_list_remove(&link->link);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/ivi-shell/ivi-layout.c 
new/weston-11.0.1/ivi-shell/ivi-layout.c
--- old/weston-11.0.0/ivi-shell/ivi-layout.c    2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/ivi-shell/ivi-layout.c    2022-12-14 08:09:30.000000000 
+0100
@@ -1192,15 +1192,14 @@
                        else
                                length--;
                }
+               if (length == 0) {
+                       free(*ppArray);
+                       *ppArray = NULL;
+               }
        }
 
        *pLength = length;
 
-       if (!length) {
-               free(*ppArray);
-               *ppArray = NULL;
-       }
-
        return IVI_SUCCEEDED;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/ivi-shell/ivi-shell.c 
new/weston-11.0.1/ivi-shell/ivi-shell.c
--- old/weston-11.0.0/ivi-shell/ivi-shell.c     2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/ivi-shell/ivi-shell.c     2022-12-14 08:09:30.000000000 
+0100
@@ -346,7 +346,6 @@
        wl_list_remove(&shell->destroy_listener.link);
        wl_list_remove(&shell->wake_listener.link);
 
-       weston_desktop_destroy(shell->desktop);
 
        wl_list_for_each_safe(ivisurf, next, &shell->ivi_surface_list, link) {
                if (ivisurf->layout_surface != NULL)
@@ -357,6 +356,7 @@
 
        ivi_layout_fini();
 
+       weston_desktop_destroy(shell->desktop);
        free(shell);
 }
 
@@ -507,6 +507,8 @@
        ivisurf->layout_surface = layout_surface;
        ivisurf->surface = weston_surf;
 
+       wl_list_insert(&shell->ivi_surface_list, &ivisurf->link);
+
        weston_desktop_surface_set_user_data(surface, ivisurf);
 }
 
@@ -519,8 +521,14 @@
 
        assert(ivisurf != NULL);
 
+       weston_desktop_surface_set_user_data(surface, NULL);
+
        if (ivisurf->layout_surface)
                layout_surface_cleanup(ivisurf);
+
+       wl_list_remove(&ivisurf->link);
+
+       free(ivisurf);
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/kiosk-shell/kiosk-shell.c 
new/weston-11.0.1/kiosk-shell/kiosk-shell.c
--- old/weston-11.0.0/kiosk-shell/kiosk-shell.c 2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/kiosk-shell/kiosk-shell.c 2022-12-14 08:09:30.000000000 
+0100
@@ -413,6 +413,7 @@
        weston_layer_entry_insert(&shsurf->shell->normal_layer.view_list,
                                  &shsurf->view->layer_link);
        weston_view_geometry_dirty(shsurf->view);
+       weston_view_update_transform(shsurf->view);
        weston_surface_damage(shsurf->view->surface);
 }
 
@@ -1068,13 +1069,13 @@
 
        mod = weston_shell_get_binding_modifier(shell->config, MODIFIER_SUPER);
 
-       weston_compositor_add_button_binding(shell->compositor, BTN_LEFT, mod,
+       weston_compositor_add_button_binding(shell->compositor, BTN_LEFT, 0,
                                             
kiosk_shell_click_to_activate_binding,
                                             shell);
-       weston_compositor_add_button_binding(shell->compositor, BTN_RIGHT, mod,
+       weston_compositor_add_button_binding(shell->compositor, BTN_RIGHT, 0,
                                             
kiosk_shell_click_to_activate_binding,
                                             shell);
-       weston_compositor_add_touch_binding(shell->compositor, mod,
+       weston_compositor_add_touch_binding(shell->compositor, 0,
                                            
kiosk_shell_touch_to_activate_binding,
                                            shell);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/libweston/backend-drm/drm-internal.h 
new/weston-11.0.1/libweston/backend-drm/drm-internal.h
--- old/weston-11.0.0/libweston/backend-drm/drm-internal.h      2022-09-22 
18:16:14.000000000 +0200
+++ new/weston-11.0.1/libweston/backend-drm/drm-internal.h      2022-12-14 
08:09:30.000000000 +0100
@@ -517,6 +517,7 @@
        struct backlight *backlight;
 
        drmModeModeInfo inherited_mode; /**< Original mode on the connector */
+       uint32_t inherited_max_bpc;     /**< Original max_bpc on the connector 
*/
        uint32_t inherited_crtc_id;     /**< Original CRTC assignment */
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/libweston/backend-drm/drm.c 
new/weston-11.0.1/libweston/backend-drm/drm.c
--- old/weston-11.0.0/libweston/backend-drm/drm.c       2022-09-22 
18:16:14.000000000 +0200
+++ new/weston-11.0.1/libweston/backend-drm/drm.c       2022-12-14 
08:09:30.000000000 +0100
@@ -1388,6 +1388,12 @@
                drmModeFreeCrtc(crtc);
        }
 
+       /* Get the current max_bpc that's currently configured to
+        * this connector. */
+       head->inherited_max_bpc = drm_property_get_value(
+               &head->connector.props[WDRM_CONNECTOR_MAX_BPC],
+               head->connector.props_drm, 0);
+
        return 0;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/libweston/backend-drm/kms.c 
new/weston-11.0.1/libweston/backend-drm/kms.c
--- old/weston-11.0.0/libweston/backend-drm/kms.c       2022-09-22 
18:16:14.000000000 +0200
+++ new/weston-11.0.1/libweston/backend-drm/kms.c       2022-12-14 
08:09:30.000000000 +0100
@@ -912,20 +912,29 @@
                          drmModeAtomicReq *req)
 {
        const struct drm_property_info *info;
+       struct drm_head *head;
+       struct drm_backend *backend = output->device->backend;
        uint64_t max_bpc;
        uint64_t a, b;
 
        if (!drm_connector_has_prop(connector, WDRM_CONNECTOR_MAX_BPC))
                return 0;
 
-       info = &connector->props[WDRM_CONNECTOR_MAX_BPC];
-       assert(info->flags & DRM_MODE_PROP_RANGE);
-       assert(info->num_range_values == 2);
-       a = info->range_values[0];
-       b = info->range_values[1];
-       assert(a <= b);
+       if (output->max_bpc == 0) {
+               /* A value of 0 means that the current max_bpc must be 
programmed. */
+               head = drm_head_find_by_connector(backend, 
connector->connector_id);
+               max_bpc = head->inherited_max_bpc;
+       } else {
+               info = &connector->props[WDRM_CONNECTOR_MAX_BPC];
+               assert(info->flags & DRM_MODE_PROP_RANGE);
+               assert(info->num_range_values == 2);
+               a = info->range_values[0];
+               b = info->range_values[1];
+               assert(a <= b);
+
+               max_bpc = MAX(a, MIN(output->max_bpc, b));
+       }
 
-       max_bpc = MAX(a, MIN(output->max_bpc, b));
        return connector_add_prop(req, connector,
                                  WDRM_CONNECTOR_MAX_BPC, max_bpc);
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/libweston/backend-rdp/rdpclip.c 
new/weston-11.0.1/libweston/backend-rdp/rdpclip.c
--- old/weston-11.0.0/libweston/backend-rdp/rdpclip.c   2022-09-22 
18:16:14.000000000 +0200
+++ new/weston-11.0.1/libweston/backend-rdp/rdpclip.c   2022-12-14 
08:09:30.000000000 +0100
@@ -1111,9 +1111,9 @@
                }
        } else {
                source->state = RDP_CLIPBOARD_SOURCE_FAILED;
-               weston_log("RDP %s (%p:%s) specified format \"%s\" index:%d 
formatId:%d is not supported by client\n",
+               weston_log("RDP %s (%p:%s) specified format \"%s\" index:%d is 
not supported by client\n",
                           __func__, source, 
clipboard_data_source_state_to_string(source),
-                          mime_type, index, 
source->client_format_id_table[index]);
+                          mime_type, index);
                goto error_return_close_fd;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/libweston/backend-wayland/wayland.c 
new/weston-11.0.1/libweston/backend-wayland/wayland.c
--- old/weston-11.0.0/libweston/backend-wayland/wayland.c       2022-09-22 
18:16:14.000000000 +0200
+++ new/weston-11.0.1/libweston/backend-wayland/wayland.c       2022-12-14 
08:09:30.000000000 +0100
@@ -2162,10 +2162,6 @@
        timespec_from_msec(&ts, time);
 
        input->touch_points--;
-       if (input->touch_points == 0) {
-               input->touch_focus = NULL;
-               input->touch_active = false;
-       }
 
        if (!output)
                return;
@@ -2228,6 +2224,11 @@
                return;
 
        notify_touch_frame(input->touch_device);
+
+       if (input->touch_points == 0) {
+               input->touch_focus = NULL;
+               input->touch_active = false;
+       }
 }
 
 static void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/libweston/input.c 
new/weston-11.0.1/libweston/input.c
--- old/weston-11.0.0/libweston/input.c 2022-09-22 18:16:14.000000000 +0200
+++ new/weston-11.0.1/libweston/input.c 2022-12-14 08:09:30.000000000 +0100
@@ -75,6 +75,15 @@
        enum motion_direction blocking_dir;
 };
 
+struct pending_touch {
+       struct weston_touch_device *touch_device;
+       bool pending_focus_touch_reset;
+
+       struct wl_list touch_link;
+};
+
+static struct wl_list pending_touch_list;
+
 static void
 maybe_warp_confined_pointer(struct weston_pointer_constraint *constraint);
 
@@ -143,6 +152,7 @@
                                 const struct weston_touch_device_ops *ops)
 {
        struct weston_touch_device *device;
+       struct pending_touch *pt;
 
        assert(syspath);
        if (ops) {
@@ -164,20 +174,55 @@
                return NULL;
        }
 
+       pt = zalloc(sizeof(*pt));
+       if (!pt) {
+               free(device);
+               return NULL;
+       }
+
+
        device->backend_data = backend_data;
        device->ops = ops;
 
+       pt->touch_device = device;
+       pt->pending_focus_touch_reset = false;
+
        device->aggregate = touch;
        wl_list_insert(touch->device_list.prev, &device->link);
+       wl_list_insert(&pending_touch_list, &pt->touch_link);
 
        return device;
 }
 
+static struct pending_touch *
+weston_touch_get_pending(struct weston_touch_device *dev)
+{
+       struct pending_touch *pt_iter = NULL;
+       struct pending_touch *pt = NULL;
+
+       wl_list_for_each(pt_iter, &pending_touch_list, touch_link) {
+               if (pt_iter->touch_device == dev) {
+                       pt = pt_iter;
+                       break;
+               }
+       }
+
+       return pt;
+}
+
 /** Destroy the touch device. */
 WL_EXPORT void
 weston_touch_device_destroy(struct weston_touch_device *device)
 {
+       struct pending_touch *pt = NULL;
+
        wl_list_remove(&device->link);
+       pt = weston_touch_get_pending(device);
+
+       assert(pt);
+       wl_list_remove(&pt->touch_link);
+       free(pt);
+
        wl_signal_emit(&device->destroy_signal, device);
        free(device->syspath);
        free(device);
@@ -2388,6 +2433,7 @@
        struct weston_touch_grab *grab = device->aggregate->grab;
        struct weston_compositor *ec = device->aggregate->seat->compositor;
        struct weston_view *ev;
+       struct pending_touch *pt = NULL;
        wl_fixed_t sx, sy;
        wl_fixed_t x = wl_fixed_from_double(double_x);
        wl_fixed_t y = wl_fixed_from_double(double_y);
@@ -2438,8 +2484,9 @@
                break;
        case WL_TOUCH_UP:
                grab->interface->up(grab, time, touch_id);
-               if (touch->num_tp == 0)
-                       weston_touch_set_focus(touch, NULL);
+               pt = weston_touch_get_pending(device);
+               assert(pt);
+               pt->pending_focus_touch_reset = true;
                break;
        }
 }
@@ -2628,12 +2675,22 @@
 notify_touch_frame(struct weston_touch_device *device)
 {
        struct weston_touch_grab *grab;
+       struct pending_touch *pt;
 
        switch (weston_touch_device_get_mode(device)) {
        case WESTON_TOUCH_MODE_NORMAL:
        case WESTON_TOUCH_MODE_PREP_CALIB:
                grab = device->aggregate->grab;
                grab->interface->frame(grab);
+
+               pt = weston_touch_get_pending(device);
+               assert(pt);
+
+               if (pt->pending_focus_touch_reset) {
+                       if (grab->touch->num_tp == 0)
+                               weston_touch_set_focus(grab->touch, NULL);
+                       pt->pending_focus_touch_reset = false;
+               }
                break;
        case WESTON_TOUCH_MODE_CALIB:
        case WESTON_TOUCH_MODE_PREP_NORMAL:
@@ -5059,6 +5116,8 @@
 int
 weston_input_init(struct weston_compositor *compositor)
 {
+       wl_list_init(&pending_touch_list);
+
        if (!wl_global_create(compositor->wl_display,
                              &zwp_relative_pointer_manager_v1_interface, 1,
                              compositor, bind_relative_pointer_manager))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/libweston/screenshooter.c 
new/weston-11.0.1/libweston/screenshooter.c
--- old/weston-11.0.0/libweston/screenshooter.c 2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/libweston/screenshooter.c 2022-12-14 08:09:30.000000000 
+0100
@@ -45,7 +45,8 @@
 #include "wcap/wcap-decode.h"
 
 struct screenshooter_frame_listener {
-       struct wl_listener listener;
+       struct wl_listener frame_listener;
+       struct wl_listener buffer_destroy_listener;
        struct weston_buffer *buffer;
        struct weston_output *output;
        weston_screenshooter_done_func_t done;
@@ -120,7 +121,8 @@
 {
        struct screenshooter_frame_listener *l =
                container_of(listener,
-                            struct screenshooter_frame_listener, listener);
+                            struct screenshooter_frame_listener,
+                            frame_listener);
        struct weston_output *output = l->output;
        struct weston_compositor *compositor = output->compositor;
        const pixman_format_code_t pixman_format =
@@ -130,6 +132,8 @@
 
        weston_output_disable_planes_decr(output);
        wl_list_remove(&listener->link);
+       wl_list_remove(&l->buffer_destroy_listener.link);
+
        stride = l->buffer->width * (PIXMAN_FORMAT_BPP(pixman_format) / 8);
        pixels = malloc(stride * l->buffer->height);
 
@@ -177,6 +181,22 @@
        free(l);
 }
 
+static void
+buffer_destroy_handle(struct wl_listener *listener, void *data)
+{
+       struct screenshooter_frame_listener *l =
+               container_of(listener,
+                            struct screenshooter_frame_listener,
+                            buffer_destroy_listener);
+
+       weston_output_disable_planes_decr(l->output);
+       wl_list_remove(&listener->link);
+       wl_list_remove(&l->frame_listener.link);
+       l->done(l->data, WESTON_SCREENSHOOTER_BAD_BUFFER);
+
+       free(l);
+}
+
 WL_EXPORT int
 weston_screenshooter_shoot(struct weston_output *output,
                           struct weston_buffer *buffer,
@@ -205,8 +225,13 @@
        l->output = output;
        l->done = done;
        l->data = data;
-       l->listener.notify = screenshooter_frame_notify;
-       wl_signal_add(&output->frame_signal, &l->listener);
+
+       l->frame_listener.notify = screenshooter_frame_notify;
+       wl_signal_add(&output->frame_signal, &l->frame_listener);
+
+       l->buffer_destroy_listener.notify = buffer_destroy_handle;
+       wl_signal_add(&buffer->destroy_signal, &l->buffer_destroy_listener);
+
        weston_output_disable_planes_incr(output);
        weston_output_schedule_repaint(output);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/man/weston-drm.man 
new/weston-11.0.1/man/weston-drm.man
--- old/weston-11.0.0/man/weston-drm.man        2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/man/weston-drm.man        2022-12-14 08:09:30.000000000 
+0100
@@ -172,7 +172,7 @@
 limits the driver chosen link bits-per-channel which may be useful for working
 around sink hardware (e.g. monitor) limitations. The default is 16 which is
 practically unlimited. If you need to work around hardware issues, try a lower
-value like 8.
+value like 8. A value of 0 means that the current max bpc will be reprogrammed.
 
 .SS Section remote-output
 .TP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/meson.build 
new/weston-11.0.1/meson.build
--- old/weston-11.0.0/meson.build       2022-09-22 18:16:14.000000000 +0200
+++ new/weston-11.0.1/meson.build       2022-12-14 08:09:30.000000000 +0100
@@ -1,6 +1,6 @@
 project('weston',
        'c',
-       version: '11.0.0',
+       version: '11.0.1',
        default_options: [
                'warning_level=3',
                'c_std=gnu99',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/shared/xalloc.h 
new/weston-11.0.1/shared/xalloc.h
--- old/weston-11.0.0/shared/xalloc.h   2022-09-22 18:16:14.000000000 +0200
+++ new/weston-11.0.1/shared/xalloc.h   2022-12-14 08:09:30.000000000 +0100
@@ -40,13 +40,14 @@
 abort_oom_if_null(void *p)
 {
        static const char oommsg[] = ": out of memory\n";
+       size_t written __attribute__((unused));
 
        if (p)
                return p;
 
-       write(STDERR_FILENO, program_invocation_short_name,
-             strlen(program_invocation_short_name));
-       write(STDERR_FILENO, oommsg, strlen(oommsg));
+       written = write(STDERR_FILENO, program_invocation_short_name,
+                       strlen(program_invocation_short_name));
+       written = write(STDERR_FILENO, oommsg, strlen(oommsg));
 
        abort();
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/xwayland/selection.c 
new/weston-11.0.1/xwayland/selection.c
--- old/weston-11.0.0/xwayland/selection.c      2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/xwayland/selection.c      2022-12-14 08:09:30.000000000 
+0100
@@ -199,6 +199,9 @@
        char *logstr;
        size_t logsize;
 
+       if (!seat)
+               return;
+
        cookie = xcb_get_property(wm->conn,
                                  1, /* delete */
                                  wm->selection_window,
@@ -631,6 +634,9 @@
               xfixes_selection_notify->owner);
 
        if (xfixes_selection_notify->owner == XCB_WINDOW_NONE) {
+               if (!seat)
+                       return 1;
+
                if (wm->selection_owner != wm->selection_window) {
                        /* A real X client selection went away, not our
                         * proxy selection.  Clear the wayland selection. */
@@ -714,6 +720,8 @@
                                wm->selection_window,
                                wm->atom.clipboard,
                                XCB_TIME_CURRENT_TIME);
+
+       xcb_flush(wm->conn);
 }
 
 void
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/weston-11.0.0/xwayland/window-manager.c 
new/weston-11.0.1/xwayland/window-manager.c
--- old/weston-11.0.0/xwayland/window-manager.c 2022-09-22 18:16:14.000000000 
+0200
+++ new/weston-11.0.1/xwayland/window-manager.c 2022-12-14 08:09:30.000000000 
+0100
@@ -2937,6 +2937,9 @@
                weston_log("XWM warning: win %d did not see map request\n",
                           window->id);
 
+       if (window->size_hints.flags & (USPosition | PPosition))
+               return true;
+
        return window->map_request_x != 0 || window->map_request_y != 0;
 }
 

Reply via email to