Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package xwayland for openSUSE:Factory 
checked in at 2022-04-04 19:25:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xwayland (Old)
 and      /work/SRC/openSUSE:Factory/.xwayland.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xwayland"

Mon Apr  4 19:25:48 2022 rev:11 rq:966177 version:22.1.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/xwayland/xwayland.changes        2022-02-17 
23:40:44.423700809 +0100
+++ /work/SRC/openSUSE:Factory/.xwayland.new.1900/xwayland.changes      
2022-04-04 19:25:50.952910972 +0200
@@ -1,0 +2,9 @@
+Thu Mar 31 09:21:36 UTC 2022 - Stefan Dirsch <sndir...@suse.com>
+
+- Update to version 22.1.1
+  * xwayland: Clear timer_armed in xwl_present_unrealize_window
+  * xwayland: Always hook up frame_callback_list in xwl_present_queue_vblank
+  * Xwayland: Do not map the COW by default when rootless
+  * xwayland/present: Fix use-after-free in xwl_unrealize_window()
+
+-------------------------------------------------------------------

Old:
----
  xwayland-22.1.0.tar.xz
  xwayland-22.1.0.tar.xz.sig

New:
----
  xwayland-22.1.1.tar.xz
  xwayland-22.1.1.tar.xz.sig

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

Other differences:
------------------
++++++ xwayland.spec ++++++
--- /var/tmp/diff_new_pack.GEp0WE/_old  2022-04-04 19:25:51.408905744 +0200
+++ /var/tmp/diff_new_pack.GEp0WE/_new  2022-04-04 19:25:51.412905698 +0200
@@ -24,7 +24,7 @@
 %endif
 
 Name:           xwayland
-Version:        22.1.0
+Version:        22.1.1
 Release:        0
 URL:            http://xorg.freedesktop.org/
 Summary:        X

++++++ xwayland-22.1.0.tar.xz -> xwayland-22.1.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xwayland-22.1.0/hw/xwayland/xwayland-present.c 
new/xwayland-22.1.1/hw/xwayland/xwayland-present.c
--- old/xwayland-22.1.0/hw/xwayland/xwayland-present.c  2022-02-16 
14:18:05.153603300 +0100
+++ new/xwayland-22.1.1/hw/xwayland/xwayland-present.c  2022-03-31 
09:57:25.658587000 +0200
@@ -66,6 +66,7 @@
         if (!xwl_present_window)
             return NULL;
 
+        xwl_present_window->window = window;
         xwl_present_window->msc = 1;
         xwl_present_window->ust = GetTimeInMicros();
 
@@ -127,14 +128,16 @@
            !xorg_list_is_empty(&xwl_present_window->wait_list);
 }
 
-static void
+void
 xwl_present_reset_timer(struct xwl_present_window *xwl_present_window)
 {
     if (xwl_present_has_pending_events(xwl_present_window)) {
+        struct xwl_window *xwl_window = 
xwl_window_from_window(xwl_present_window->window);
         CARD32 now = GetTimeInMillis();
         CARD32 timeout;
 
-        if (!xorg_list_is_empty(&xwl_present_window->frame_callback_list))
+        if (xwl_window && xwl_window->frame_callback &&
+            !xorg_list_is_empty(&xwl_present_window->frame_callback_list))
             timeout = TIMER_LEN_FLIP;
         else
             timeout = TIMER_LEN_COPY;
@@ -505,8 +508,8 @@
     xorg_list_del(&event->vblank.event_queue);
     xorg_list_append(&event->vblank.event_queue, 
&xwl_present_window->wait_list);
 
-    /* If there's a pending frame callback, use that */
-    if (xwl_window && xwl_window->frame_callback &&
+    /* Hook up to frame callback */
+    if (xwl_window &&
         xorg_list_is_empty(&xwl_present_window->frame_callback_list)) {
         xorg_list_add(&xwl_present_window->frame_callback_list,
                       &xwl_window->frame_callback_list);
@@ -700,14 +703,14 @@
     /* We can flip directly to the main surface (full screen window without 
clips) */
     wl_surface_attach(xwl_window->surface, buffer, 0, 0);
 
-    if (!xwl_window->frame_callback)
-        xwl_window_create_frame_callback(xwl_window);
-
     if (xorg_list_is_empty(&xwl_present_window->frame_callback_list)) {
         xorg_list_add(&xwl_present_window->frame_callback_list,
                       &xwl_window->frame_callback_list);
     }
 
+    if (!xwl_window->frame_callback)
+        xwl_window_create_frame_callback(xwl_window);
+
     xwl_surface_damage(xwl_window->xwl_screen, xwl_window->surface,
                        damage_box->x1 - present_window->drawable.x,
                        damage_box->y1 - present_window->drawable.y,
@@ -942,6 +945,9 @@
      * the frame timer interval.
      */
     xorg_list_del(&xwl_present_window->frame_callback_list);
+
+    /* Make sure the timer callback doesn't get called */
+    xwl_present_window->timer_armed = 0;
     xwl_present_reset_timer(xwl_present_window);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xwayland-22.1.0/hw/xwayland/xwayland-present.h 
new/xwayland-22.1.1/hw/xwayland/xwayland-present.h
--- old/xwayland-22.1.0/hw/xwayland/xwayland-present.h  2022-02-16 
14:18:05.153603300 +0100
+++ new/xwayland-22.1.1/hw/xwayland/xwayland-present.h  2022-03-31 
09:57:25.658587000 +0200
@@ -35,6 +35,8 @@
 
 #ifdef GLAMOR_HAS_GBM
 struct xwl_present_window {
+    WindowPtr window;
+
     struct xorg_list frame_callback_list;
 
     uint64_t msc;
@@ -59,6 +61,7 @@
     PixmapPtr pixmap;
 };
 
+void xwl_present_reset_timer(struct xwl_present_window *xwl_present_window);
 void xwl_present_frame_callback(struct xwl_present_window *xwl_present_window);
 Bool xwl_present_init(ScreenPtr screen);
 void xwl_present_cleanup(WindowPtr window);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xwayland-22.1.0/hw/xwayland/xwayland-window.c 
new/xwayland-22.1.1/hw/xwayland/xwayland-window.c
--- old/xwayland-22.1.0/hw/xwayland/xwayland-window.c   2022-02-16 
14:18:05.153603300 +0100
+++ new/xwayland-22.1.1/hw/xwayland/xwayland-window.c   2022-03-31 
09:57:25.659587000 +0200
@@ -522,6 +522,7 @@
 xwl_realize_window(WindowPtr window)
 {
     ScreenPtr screen = window->drawable.pScreen;
+    CompScreenPtr comp_screen = GetCompScreen(screen);
     struct xwl_screen *xwl_screen;
     Bool ret;
 
@@ -535,12 +536,20 @@
     if (!ret)
         return FALSE;
 
-    if (xwl_screen->rootless && !window->parent) {
-        BoxRec box = { 0, 0, xwl_screen->width, xwl_screen->height };
+    if (xwl_screen->rootless) {
+        /* We do not want the COW to be mapped when rootless in Xwayland */
+        if (window == comp_screen->pOverlayWin) {
+            window->mapped = FALSE;
+            return TRUE;
+        }
+
+        if (!window->parent) {
+            BoxRec box = { 0, 0, xwl_screen->width, xwl_screen->height };
 
-        RegionReset(&window->winSize, &box);
-        RegionNull(&window->clipList);
-        RegionNull(&window->borderClip);
+            RegionReset(&window->winSize, &box);
+            RegionNull(&window->clipList);
+            RegionNull(&window->borderClip);
+        }
     }
 
     if (xwl_screen->rootless ?
@@ -596,16 +605,6 @@
     if (xwl_window_has_viewport_enabled(xwl_window))
         xwl_window_disable_viewport(xwl_window);
 
-    wl_surface_destroy(xwl_window->surface);
-    xorg_list_del(&xwl_window->link_damage);
-    xorg_list_del(&xwl_window->link_window);
-    unregister_damage(window);
-
-    xwl_window_buffers_dispose(xwl_window);
-
-    if (xwl_window->frame_callback)
-        wl_callback_destroy(xwl_window->frame_callback);
-
 #ifdef GLAMOR_HAS_GBM
     if (xwl_screen->present) {
         struct xwl_present_window *xwl_present_window, *tmp;
@@ -618,6 +617,16 @@
     }
 #endif
 
+    wl_surface_destroy(xwl_window->surface);
+    xorg_list_del(&xwl_window->link_damage);
+    xorg_list_del(&xwl_window->link_window);
+    unregister_damage(window);
+
+    xwl_window_buffers_dispose(xwl_window);
+
+    if (xwl_window->frame_callback)
+        wl_callback_destroy(xwl_window->frame_callback);
+
     free(xwl_window);
     dixSetPrivate(&window->devPrivates, &xwl_window_private_key, NULL);
 
@@ -756,6 +765,18 @@
     xwl_window->frame_callback = wl_surface_frame(xwl_window->surface);
     wl_callback_add_listener(xwl_window->frame_callback, &frame_listener,
                              xwl_window);
+
+#ifdef GLAMOR_HAS_GBM
+    if (xwl_window->xwl_screen->present) {
+        struct xwl_present_window *xwl_present_window, *tmp;
+
+        xorg_list_for_each_entry_safe(xwl_present_window, tmp,
+                                      &xwl_window->frame_callback_list,
+                                      frame_callback_list) {
+            xwl_present_reset_timer(xwl_present_window);
+        }
+    }
+#endif
 }
 
 Bool
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/xwayland-22.1.0/meson.build 
new/xwayland-22.1.1/meson.build
--- old/xwayland-22.1.0/meson.build     2022-02-16 14:18:05.160603500 +0100
+++ new/xwayland-22.1.1/meson.build     2022-03-31 09:57:25.668587000 +0200
@@ -3,7 +3,7 @@
             'buildtype=debugoptimized',
             'c_std=gnu99',
         ],
-        version: '22.1.0',
+        version: '22.1.1',
         meson_version: '>= 0.47.0',
 )
 release_date = '2021-07-05'

Reply via email to