Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package wlroots for openSUSE:Factory checked 
in at 2022-12-28 10:54:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/wlroots (Old)
 and      /work/SRC/openSUSE:Factory/.wlroots.new.1563 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "wlroots"

Wed Dec 28 10:54:30 2022 rev:24 rq:1045488 version:0.16.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/wlroots/wlroots.changes  2022-12-02 
13:13:10.933866709 +0100
+++ /work/SRC/openSUSE:Factory/.wlroots.new.1563/wlroots.changes        
2022-12-28 10:54:37.868140838 +0100
@@ -1,0 +2,24 @@
+Sun Dec 25 16:51:41 UTC 2022 - llyyr <llyyr.pub...@gmail.com>
+
+- Update to 0.16.1:
+  * backend: error out when missing DRM and libinput in 
wlr_backend_autocreate()
+  * backend/drm: only request page-flip if active
+  * backend/drm: log refresh rate in Hz
+  * backend/drm: log modesetting commits
+  * backend/drm: fix FPE when disabling output
+  * backend/drm: fix VRR test
+  * backend/wayland: ensure buffers are released on shutdown
+  * backend/x11: ensure buffers are released on shutdown
+  * render/egl: fix uninitialized pointers in init_dmabuf_formats
+  * scene/layer_shell_v1.c: set exclusive zone correctly
+  * scene/layer_shell_v1.c: remove redundant comment
+  * types/wlr_seat: finish keyboard_state during wlr_seat_destroy
+  * seat/pointer: Initialize low_res_value
+  * cursor: compare to scaled coords
+  * wlr_drm: Add missing wlr_buffer import
+  * wlr_seat: clear `drag->seat_client` when destroyed
+  * xwayland: fix wlr_xwayland_surface_from_wlr_surface() docs
+  * scene: fix output damage expansion condition
+  * build: exclude <wlr/types/wlr_drm_lease_v1.h> without DRM backend
+
+-------------------------------------------------------------------

Old:
----
  wlroots-0.16.0.tar.gz
  wlroots-0.16.0.tar.gz.sig

New:
----
  wlroots-0.16.1.tar.gz
  wlroots-0.16.1.tar.gz.sig

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

Other differences:
------------------
++++++ wlroots.spec ++++++
--- /var/tmp/diff_new_pack.nMFkOi/_old  2022-12-28 10:54:38.384143517 +0100
+++ /var/tmp/diff_new_pack.nMFkOi/_new  2022-12-28 10:54:38.392143559 +0100
@@ -24,7 +24,7 @@
 %bcond_without  xcb_errors
 
 Name:           wlroots
-Version:        0.16.0
+Version:        0.16.1
 Release:        0
 Summary:        Modular Wayland compositor library
 License:        MIT

++++++ wlroots-0.16.0.tar.gz -> wlroots-0.16.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/backend/backend.c 
new/wlroots-0.16.1/backend/backend.c
--- old/wlroots-0.16.0/backend/backend.c        2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/backend/backend.c        2022-12-25 16:50:12.000000000 
+0100
@@ -346,6 +346,11 @@
        }
 #endif
 
+#if !(WLR_HAS_LIBINPUT_BACKEND || WLR_HAS_DRM_BACKEND)
+       wlr_log(WLR_ERROR, "Neither DRM nor libinput backend support is 
compiled in");
+       goto error;
+#endif
+
        // Attempt DRM+libinput
        multi->session = session_create_and_wait(display);
        if (!multi->session) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/backend/drm/drm.c 
new/wlroots-0.16.1/backend/drm/drm.c
--- old/wlroots-0.16.0/backend/drm/drm.c        2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/backend/drm/drm.c        2022-12-25 16:50:12.000000000 
+0100
@@ -459,12 +459,6 @@
                }
        }
 
-       if ((state->committed & WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED) &&
-                       state->adaptive_sync_enabled &&
-                       !drm_connector_supports_vrr(conn)) {
-               return false;
-       }
-
        struct wlr_drm_connector_state pending = {0};
        drm_connector_state_init(&pending, conn, state);
 
@@ -484,6 +478,12 @@
                }
        }
 
+       if ((state->committed & WLR_OUTPUT_ADAPTIVE_SYNC_ENABLED) &&
+                       state->adaptive_sync_enabled &&
+                       !drm_connector_supports_vrr(conn)) {
+               return false;
+       }
+
        if (conn->backend->parent) {
                // If we're running as a secondary GPU, we can't perform an 
atomic
                // commit without blitting a buffer.
@@ -577,10 +577,20 @@
                        return false;
                }
        }
-       if (pending.modeset) {
+       if (pending.modeset && pending.active) {
                flags |= DRM_MODE_PAGE_FLIP_EVENT;
        }
 
+       if (pending.modeset) {
+               if (pending.active) {
+                       wlr_drm_conn_log(conn, WLR_INFO, "Modesetting with 
%dx%d @ %.3f Hz",
+                               pending.mode.hdisplay, pending.mode.vdisplay,
+                               (float)calculate_refresh_rate(&pending.mode) / 
1000);
+               } else {
+                       wlr_drm_conn_log(conn, WLR_INFO, "Turning off");
+               }
+       }
+
        if (!drm_crtc_commit(conn, &pending, flags, false)) {
                return false;
        }
@@ -1302,9 +1312,9 @@
                        wlr_conn->crtc->mode_id = mode_id;
                }
 
-               wlr_log(WLR_INFO, "  %"PRId32"x%"PRId32"@%"PRId32" %s",
+               wlr_log(WLR_INFO, "  %"PRId32"x%"PRId32" @ %.3f Hz %s",
                        mode->wlr_mode.width, mode->wlr_mode.height,
-                       mode->wlr_mode.refresh,
+                       (float)mode->wlr_mode.refresh / 1000,
                        mode->wlr_mode.preferred ? "(preferred)" : "");
 
                wl_list_insert(wlr_conn->output.modes.prev, 
&mode->wlr_mode.link);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/backend/wayland/output.c 
new/wlroots-0.16.1/backend/wayland/output.c
--- old/wlroots-0.16.0/backend/wayland/output.c 2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/backend/wayland/output.c 2022-12-25 16:50:12.000000000 
+0100
@@ -116,6 +116,9 @@
        wl_list_remove(&buffer->buffer_destroy.link);
        wl_list_remove(&buffer->link);
        wl_buffer_destroy(buffer->wl_buffer);
+       if (!buffer->released) {
+               wlr_buffer_unlock(buffer->buffer);
+       }
        free(buffer);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/backend/x11/output.c 
new/wlroots-0.16.1/backend/x11/output.c
--- old/wlroots-0.16.0/backend/x11/output.c     2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/backend/x11/output.c     2022-12-25 16:50:12.000000000 
+0100
@@ -140,6 +140,9 @@
        wl_list_remove(&buffer->buffer_destroy.link);
        wl_list_remove(&buffer->link);
        xcb_free_pixmap(buffer->x11->xcb, buffer->pixmap);
+       for (size_t i = 0; i < buffer->n_busy; i++) {
+               wlr_buffer_unlock(buffer->buffer);
+       }
        free(buffer);
 }
 
@@ -263,6 +266,7 @@
        wl_list_for_each(buffer, &output->buffers, link) {
                if (buffer->buffer == wlr_buffer) {
                        wlr_buffer_lock(buffer->buffer);
+                       buffer->n_busy++;
                        return buffer;
                }
        }
@@ -675,6 +679,8 @@
                        return;
                }
 
+               assert(buffer->n_busy > 0);
+               buffer->n_busy--;
                wlr_buffer_unlock(buffer->buffer); // may destroy buffer
                break;
        case XCB_PRESENT_COMPLETE_NOTIFY:;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/include/backend/x11.h 
new/wlroots-0.16.1/include/backend/x11.h
--- old/wlroots-0.16.0/include/backend/x11.h    2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/include/backend/x11.h    2022-12-25 16:50:12.000000000 
+0100
@@ -113,6 +113,7 @@
        xcb_pixmap_t pixmap;
        struct wl_list link; // wlr_x11_output::buffers
        struct wl_listener buffer_destroy;
+       size_t n_busy;
 };
 
 struct wlr_x11_format {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/include/meson.build 
new/wlroots-0.16.1/include/meson.build
--- old/wlroots-0.16.0/include/meson.build      2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/include/meson.build      2022-12-25 16:50:12.000000000 
+0100
@@ -3,6 +3,7 @@
 exclude_files = ['meson.build', 'config.h.in', 'version.h.in']
 if not features.get('drm-backend')
        exclude_files += 'backend/drm.h'
+       exclude_files += 'types/wlr_drm_lease_v1.h'
 endif
 if not features.get('libinput-backend')
        exclude_files += 'backend/libinput.h'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/include/wlr/types/wlr_drm.h 
new/wlroots-0.16.1/include/wlr/types/wlr_drm.h
--- old/wlroots-0.16.0/include/wlr/types/wlr_drm.h      2022-11-11 
18:22:17.000000000 +0100
+++ new/wlroots-0.16.1/include/wlr/types/wlr_drm.h      2022-12-25 
16:50:12.000000000 +0100
@@ -10,6 +10,7 @@
 #define WLR_TYPES_WLR_DRM_H
 
 #include <wayland-server-protocol.h>
+#include <wlr/types/wlr_buffer.h>
 
 struct wlr_renderer;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/include/wlr/xwayland/xwayland.h 
new/wlroots-0.16.1/include/wlr/xwayland/xwayland.h
--- old/wlroots-0.16.0/include/wlr/xwayland/xwayland.h  2022-11-11 
18:22:17.000000000 +0100
+++ new/wlroots-0.16.1/include/wlr/xwayland/xwayland.h  2022-12-25 
16:50:12.000000000 +0100
@@ -232,7 +232,7 @@
  * Get a struct wlr_xwayland_surface from a struct wlr_surface.
  * Asserts that the surface has the xwayland surface role.
  * May return NULL even if the surface has the xwayland surface role if the
- * corresponding xwayland surface has been destroyed.
+ * corresponding xwayland surface has been unmapped or destroyed.
  */
 struct wlr_xwayland_surface *wlr_xwayland_surface_from_wlr_surface(
        struct wlr_surface *surface);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/meson.build 
new/wlroots-0.16.1/meson.build
--- old/wlroots-0.16.0/meson.build      2022-11-11 18:22:17.000000000 +0100
+++ new/wlroots-0.16.1/meson.build      2022-12-25 16:50:12.000000000 +0100
@@ -1,7 +1,7 @@
 project(
        'wlroots',
        'c',
-       version: '0.16.0',
+       version: '0.16.1',
        license: 'MIT',
        meson_version: '>=0.59.0',
        default_options: [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/render/egl.c 
new/wlroots-0.16.1/render/egl.c
--- old/wlroots-0.16.0/render/egl.c     2022-11-11 18:22:17.000000000 +0100
+++ new/wlroots-0.16.1/render/egl.c     2022-12-25 16:50:12.000000000 +0100
@@ -124,8 +124,8 @@
        for (int i = 0; i < formats_len; i++) {
                uint32_t fmt = formats[i];
 
-               uint64_t *modifiers;
-               EGLBoolean *external_only;
+               uint64_t *modifiers = NULL;
+               EGLBoolean *external_only = NULL;
                int modifiers_len = 0;
                if (!no_modifiers) {
                        modifiers_len = get_egl_dmabuf_modifiers(egl, fmt, 
&modifiers, &external_only);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/types/data_device/wlr_drag.c 
new/wlroots-0.16.1/types/data_device/wlr_drag.c
--- old/wlroots-0.16.0/types/data_device/wlr_drag.c     2022-11-11 
18:22:17.000000000 +0100
+++ new/wlroots-0.16.1/types/data_device/wlr_drag.c     2022-12-25 
16:50:12.000000000 +0100
@@ -55,14 +55,14 @@
                goto out;
        }
 
-       if (!drag->source &&
+       if (!drag->source && drag->seat_client &&
                        wl_resource_get_client(surface->resource) !=
                        drag->seat_client->client) {
                goto out;
        }
 
        struct wlr_seat_client *focus_client = wlr_seat_client_for_wl_client(
-               drag->seat_client->seat, 
wl_resource_get_client(surface->resource));
+               drag->seat, wl_resource_get_client(surface->resource));
        if (!focus_client) {
                goto out;
        }
@@ -71,7 +71,7 @@
                drag->source->accepted = false;
 
                uint32_t serial =
-                       
wl_display_next_serial(drag->seat_client->seat->display);
+                       wl_display_next_serial(drag->seat->display);
 
                struct wl_resource *device_resource;
                wl_resource_for_each(device_resource, 
&focus_client->data_devices) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/types/output/cursor.c 
new/wlroots-0.16.1/types/output/cursor.c
--- old/wlroots-0.16.0/types/output/cursor.c    2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/types/output/cursor.c    2022-12-25 16:50:12.000000000 
+0100
@@ -533,6 +533,10 @@
 
 bool wlr_output_cursor_move(struct wlr_output_cursor *cursor,
                double x, double y) {
+       // Scale coordinates for the output
+       x *= cursor->output->scale;
+       y *= cursor->output->scale;
+
        if (cursor->x == x && cursor->y == y) {
                return true;
        }
@@ -541,11 +545,9 @@
                output_cursor_damage_whole(cursor);
        }
 
-       bool was_visible = cursor->visible;
-       x *= cursor->output->scale;
-       y *= cursor->output->scale;
        cursor->x = x;
        cursor->y = y;
+       bool was_visible = cursor->visible;
        output_cursor_update_visible(cursor);
 
        if (!was_visible && !cursor->visible) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/types/scene/layer_shell_v1.c 
new/wlroots-0.16.1/types/scene/layer_shell_v1.c
--- old/wlroots-0.16.0/types/scene/layer_shell_v1.c     2022-11-11 
18:22:17.000000000 +0100
+++ new/wlroots-0.16.1/types/scene/layer_shell_v1.c     2022-12-25 
16:50:12.000000000 +0100
@@ -39,6 +39,7 @@
                struct wlr_layer_surface_v1_state *state,
                struct wlr_box *usable_area) {
        switch (state->anchor) {
+       case ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP:
        case (ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
                        ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT |
                        ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT):
@@ -46,12 +47,14 @@
                usable_area->y += state->exclusive_zone + state->margin.top;
                usable_area->height -= state->exclusive_zone + 
state->margin.top;
                break;
+       case ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM:
        case (ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM |
                        ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT |
                        ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT):
                // Anchor bottom
                usable_area->height -= state->exclusive_zone + 
state->margin.bottom;
                break;
+       case ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT:
        case (ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
                        ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM |
                        ZWLR_LAYER_SURFACE_V1_ANCHOR_LEFT):
@@ -59,9 +62,10 @@
                usable_area->x += state->exclusive_zone + state->margin.left;
                usable_area->width -= state->exclusive_zone + 
state->margin.left;
                break;
+       case ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT:
        case (ZWLR_LAYER_SURFACE_V1_ANCHOR_TOP |
                        ZWLR_LAYER_SURFACE_V1_ANCHOR_BOTTOM |
-                       ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT): // Anchor right
+                       ZWLR_LAYER_SURFACE_V1_ANCHOR_RIGHT):
                // Anchor right
                usable_area->width -= state->exclusive_zone + 
state->margin.right;
                break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/types/scene/wlr_scene.c 
new/wlroots-0.16.1/types/scene/wlr_scene.c
--- old/wlroots-0.16.0/types/scene/wlr_scene.c  2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/types/scene/wlr_scene.c  2022-12-25 16:50:12.000000000 
+0100
@@ -644,21 +644,29 @@
                wlr_region_scale_xy(&output_damage, &trans_damage,
                        output_scale_x, output_scale_y);
 
-               // One buffer pixel will match 
(output_scale_x)x(output_scale_y) output
-               // pixels. If max(output_scale_x, output_scale_y) is bigger 
than 1,
-               // the result will be blurry, and with linear filtering, will 
bleed into
-               // adjacent (output_scale_x / 2) pixels on X axis and 
(output_scale_y / 2)
-               // pixels on Y axis. To fix this, the damage region is expanded 
by largest
-               // distance of the two.
-               float bigger_scale = fmaxf(output_scale_x, output_scale_y);
-               if (bigger_scale > 1.0f) {
-                       wlr_region_expand(&output_damage, &output_damage,
-                               ceilf(bigger_scale / 2.0f));
-               }
+               // One output pixel will match 
(buffer_scale_x)x(buffer_scale_y) buffer pixels.
+               // If the buffer is upscaled on the given axis (output_scale_* 
> 1.0,
+               // buffer_scale_* < 1.0), its contents will bleed into adjacent
+               // (ceil(output_scale_* / 2)) output pixels because of linear 
filtering.
+               // Additionally, if the buffer is downscaled (output_scale_* < 
1.0,
+               // buffer_scale_* > 1.0), and one output pixel matches a 
non-integer number of
+               // buffer pixels, its contents will bleed into neighboring 
output pixels.
+               // Handle both cases by computing buffer_scale_{x,y} and 
checking if they are
+               // integer numbers; ceilf() is used to ensure that the distance 
is at least 1.
+               float buffer_scale_x = 1.0f / output_scale_x;
+               float buffer_scale_y = 1.0f / output_scale_y;
+               int dist_x = floor(buffer_scale_x) != buffer_scale_x ?
+                       (int)ceilf(output_scale_x / 2.0f) : 0;
+               int dist_y = floor(buffer_scale_y) != buffer_scale_y ?
+                       (int)ceilf(output_scale_y / 2.0f) : 0;
+               // TODO: expand with per-axis distances
+               wlr_region_expand(&output_damage, &output_damage,
+                       dist_x >= dist_y ? dist_x : dist_y);
 
                pixman_region32_t cull_region;
                pixman_region32_init(&cull_region);
-               wlr_region_scale(&cull_region, &scene_buffer->node.visible, 
output_scale);
+               pixman_region32_copy(&cull_region, &scene_buffer->node.visible);
+               scale_output_damage(&cull_region, output_scale);
                pixman_region32_translate(&cull_region, -lx * output_scale, -ly 
* output_scale);
                pixman_region32_intersect(&output_damage, &output_damage, 
&cull_region);
                pixman_region32_fini(&cull_region);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/types/seat/wlr_seat.c 
new/wlroots-0.16.1/types/seat/wlr_seat.c
--- old/wlroots-0.16.0/types/seat/wlr_seat.c    2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/types/seat/wlr_seat.c    2022-12-25 16:50:12.000000000 
+0100
@@ -75,6 +75,10 @@
                client->seat->keyboard_state.focused_client = NULL;
        }
 
+       if (client->seat->drag && client == client->seat->drag->seat_client) {
+               client->seat->drag->seat_client = NULL;
+       }
+
        struct wl_resource *resource, *tmp;
        wl_resource_for_each_safe(resource, tmp, &client->pointers) {
                wl_resource_destroy(resource);
@@ -175,6 +179,8 @@
        wlr_seat_pointer_clear_focus(seat);
        wlr_seat_keyboard_clear_focus(seat);
 
+       wlr_seat_set_keyboard(seat, NULL);
+
        struct wlr_touch_point *point;
        wl_list_for_each(point, &seat->touch_state.touch_points, link) {
                wlr_seat_touch_point_clear_focus(seat, 0, point->touch_id);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/types/seat/wlr_seat_pointer.c 
new/wlroots-0.16.1/types/seat/wlr_seat_pointer.c
--- old/wlroots-0.16.0/types/seat/wlr_seat_pointer.c    2022-11-11 
18:22:17.000000000 +0100
+++ new/wlroots-0.16.1/types/seat/wlr_seat_pointer.c    2022-12-25 
16:50:12.000000000 +0100
@@ -326,7 +326,7 @@
                send_source = true;
        }
 
-       double low_res_value;
+       double low_res_value = 0.0;
        int32_t low_res_value_discrete = 0;
        update_value120_accumulators(client, orientation, value, value_discrete,
                &low_res_value, &low_res_value_discrete);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/wlroots-0.16.0/types/wlr_compositor.c 
new/wlroots-0.16.1/types/wlr_compositor.c
--- old/wlroots-0.16.0/types/wlr_compositor.c   2022-11-11 18:22:17.000000000 
+0100
+++ new/wlroots-0.16.1/types/wlr_compositor.c   2022-12-25 16:50:12.000000000 
+0100
@@ -36,14 +36,6 @@
 
 static void surface_handle_destroy(struct wl_client *client,
                struct wl_resource *resource) {
-       struct wlr_surface *surface = wlr_surface_from_resource(resource);
-       if (surface->role_data != NULL) {
-               // TODO: send WL_SURFACE_ERROR_DEFUNCT_ROLE_OBJECT
-               // 
https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/278
-               wl_resource_post_error(resource, -1,
-                       "surface was destroyed before its role object");
-               return;
-       }
        wl_resource_destroy(resource);
 }
 

Reply via email to