Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package picom for openSUSE:Factory checked 
in at 2022-11-23 09:48:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/picom (Old)
 and      /work/SRC/openSUSE:Factory/.picom.new.1597 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "picom"

Wed Nov 23 09:48:19 2022 rev:6 rq:1037427 version:10.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/picom/picom.changes      2022-11-15 
13:21:36.888859406 +0100
+++ /work/SRC/openSUSE:Factory/.picom.new.1597/picom.changes    2022-11-23 
09:48:38.175207321 +0100
@@ -1,0 +2,12 @@
+Wed Nov 23 01:35:55 UTC 2022 - Mia Herkt <m...@0x0.st>
+
+- Update to version 10.1
+Fixes:
+  * A GL texture leak, related to
+    gh#yshui/picom#892
+  * A crash when shadow radius is set to 0
+    gh#yshui/picom#927
+  * An undefined symbol error
+    gh#yshui/picom#932
+
+-------------------------------------------------------------------

Old:
----
  v10.tar.gz

New:
----
  v10.1.tar.gz

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

Other differences:
------------------
++++++ picom.spec ++++++
--- /var/tmp/diff_new_pack.qLEpQT/_old  2022-11-23 09:48:39.195212643 +0100
+++ /var/tmp/diff_new_pack.qLEpQT/_new  2022-11-23 09:48:39.199212664 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           picom
-Version:        10
+Version:        10.1
 Release:        0
 Summary:        Stand-alone compositor for X11
 License:        MIT AND MPL-2.0

++++++ v10.tar.gz -> v10.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/man/picom.1.asciidoc 
new/picom-10.1/man/picom.1.asciidoc
--- old/picom-10/man/picom.1.asciidoc   2022-11-11 16:57:29.000000000 +0100
+++ new/picom-10.1/man/picom.1.asciidoc 2022-11-22 17:29:57.000000000 +0100
@@ -230,7 +230,7 @@
        GLX backend: Avoid rebinding pixmap on window damage. Probably could 
improve performance on rapid window content changes, but is known to break 
things on some drivers (LLVMpipe, xf86-video-intel, etc.). Recommended if it 
works.
 
 *--no-use-damage*::
-       Disable the use of damage information. This cause the whole screen to 
be redrawn everytime, instead of the part of the screen has actually changed. 
Potentially degrades the performance, but might fix some artifacts.
+       Disable the use of damage information. This cause the whole screen to 
be redrawn every time, instead of the part of the screen has actually changed. 
Potentially degrades the performance, but might fix some artifacts.
 
 *--xrender-sync-fence*::
        Use X Sync fence to sync clients' draw calls, to make sure all draw 
calls are finished before picom starts drawing. Needed on nvidia-drivers with 
GLX backend for some users.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/picom.sample.conf 
new/picom-10.1/picom.sample.conf
--- old/picom-10/picom.sample.conf      2022-11-11 16:57:29.000000000 +0100
+++ new/picom-10.1/picom.sample.conf    2022-11-22 17:29:57.000000000 +0100
@@ -308,7 +308,7 @@
 # glx-no-rebind-pixmap = false
 
 # Disable the use of damage information.
-# This cause the whole screen to be redrawn everytime, instead of the part of 
the screen
+# This cause the whole screen to be redrawn every time, instead of the part of 
the screen
 # has actually changed. Potentially degrades the performance, but might fix 
some artifacts.
 # The opposing option is use-damage
 #
@@ -409,7 +409,7 @@
 #     transparent, and you want shadows in those areas.
 #
 #   clip-shadow-above:::
-#     Controls wether shadows that would have been drawn above the window 
should
+#     Controls whether shadows that would have been drawn above the window 
should
 #     be clipped. Useful for dock windows that should have no shadow painted 
on top.
 #
 #   redir-ignore:::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/src/backend/gl/egl.c 
new/picom-10.1/src/backend/gl/egl.c
--- old/picom-10/src/backend/gl/egl.c   2022-11-11 16:57:29.000000000 +0100
+++ new/picom-10.1/src/backend/gl/egl.c 2022-11-22 17:29:57.000000000 +0100
@@ -36,6 +36,8 @@
        EGLContext ctx;
 };
 
+static PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC glEGLImageTargetTexStorage = NULL;
+
 /**
  * Free a glx_texture_t.
  */
@@ -202,6 +204,14 @@
                goto end;
        }
 
+       glEGLImageTargetTexStorage =
+           
(PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC)eglGetProcAddress("glEGLImageTargetTexS"
+                                                                   
"torageEXT");
+       if (glEGLImageTargetTexStorage == NULL) {
+               log_error("Failed to get glEGLImageTargetTexStorageEXT.");
+               goto end;
+       }
+
        gd->gl.decouple_texture_user_data = egl_decouple_user_data;
        gd->gl.release_user_data = egl_release_image;
 
@@ -270,7 +280,7 @@
        wd->dim = 0;
        wd->inner->refcount = 1;
        glBindTexture(GL_TEXTURE_2D, inner->texture);
-       glEGLImageTargetTexStorageEXT(GL_TEXTURE_2D, eglpixmap->image, NULL);
+       glEGLImageTargetTexStorage(GL_TEXTURE_2D, eglpixmap->image, NULL);
        glBindTexture(GL_TEXTURE_2D, 0);
 
        gl_check_err();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/src/backend/gl/gl_common.c 
new/picom-10.1/src/backend/gl/gl_common.c
--- old/picom-10/src/backend/gl/gl_common.c     2022-11-11 16:57:29.000000000 
+0100
+++ new/picom-10.1/src/backend/gl/gl_common.c   2022-11-22 17:29:57.000000000 
+0100
@@ -1174,18 +1174,28 @@
 struct backend_shadow_context *gl_create_shadow_context(backend_t *base, 
double radius) {
        auto ctx = ccalloc(1, struct gl_shadow_context);
        ctx->radius = radius;
+       ctx->blur_context = NULL;
 
-       struct gaussian_blur_args args = {
-           .size = (int)radius,
-           .deviation = gaussian_kernel_std_for_size(radius, 0.5 / 256.0),
-       };
-       ctx->blur_context = gl_create_blur_context(base, BLUR_METHOD_GAUSSIAN, 
&args);
+       if (radius > 0) {
+               struct gaussian_blur_args args = {
+                   .size = (int)radius,
+                   .deviation = gaussian_kernel_std_for_size(radius, 0.5 / 
256.0),
+               };
+               ctx->blur_context = gl_create_blur_context(base, 
BLUR_METHOD_GAUSSIAN, &args);
+               if (!ctx->blur_context) {
+                       log_error("Failed to create shadow context");
+                       free(ctx);
+                       return NULL;
+               }
+       }
        return (struct backend_shadow_context *)ctx;
 }
 
 void gl_destroy_shadow_context(backend_t *base attr_unused, struct 
backend_shadow_context *ctx) {
        auto ctx_ = (struct gl_shadow_context *)ctx;
-       gl_destroy_blur_context(base, (struct backend_blur_context 
*)ctx_->blur_context);
+       if (ctx_->blur_context) {
+               gl_destroy_blur_context(base, (struct backend_blur_context 
*)ctx_->blur_context);
+       }
        free(ctx_);
 }
 
@@ -1246,27 +1256,32 @@
 
        gl_check_err();
 
-       glActiveTexture(GL_TEXTURE0);
-       auto tmp_texture = gl_new_texture(GL_TEXTURE_2D);
-       glBindTexture(GL_TEXTURE_2D, tmp_texture);
-       glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, new_inner->width, 
new_inner->height, 0,
-                    GL_RED, GL_UNSIGNED_BYTE, NULL);
-       glBindTexture(GL_TEXTURE_2D, 0);
-
-       glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
-       glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 
GL_TEXTURE_2D,
-                              tmp_texture, 0);
-
-       region_t reg_blur;
-       pixman_region32_init_rect(&reg_blur, 0, 0, (unsigned 
int)new_inner->width,
-                                 (unsigned int)new_inner->height);
-       // gl_blur expects reg_blur to be in X coordinate system (i.e. y 
flipped), but we
-       // are covering the whole texture so we don't need to worry about that.
-       gl_blur_impl(1.0, gsctx->blur_context, NULL, (coord_t){0}, &reg_blur, 
NULL,
-                    source_texture,
-                    (geometry_t){.width = new_inner->width, .height = 
new_inner->height},
-                    fbo, gd->default_mask_texture);
-       pixman_region32_fini(&reg_blur);
+       auto tmp_texture = source_texture;
+       if (gsctx->blur_context != NULL) {
+               glActiveTexture(GL_TEXTURE0);
+               tmp_texture = gl_new_texture(GL_TEXTURE_2D);
+               glBindTexture(GL_TEXTURE_2D, tmp_texture);
+               glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, new_inner->width,
+                            new_inner->height, 0, GL_RED, GL_UNSIGNED_BYTE, 
NULL);
+               glBindTexture(GL_TEXTURE_2D, 0);
+
+               glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo);
+               glFramebufferTexture2D(GL_DRAW_FRAMEBUFFER, 
GL_COLOR_ATTACHMENT0,
+                                      GL_TEXTURE_2D, tmp_texture, 0);
+
+               region_t reg_blur;
+               pixman_region32_init_rect(&reg_blur, 0, 0, (unsigned 
int)new_inner->width,
+                                         (unsigned int)new_inner->height);
+               // gl_blur expects reg_blur to be in X coordinate system (i.e. 
y flipped),
+               // but we are covering the whole texture so we don't need to 
worry about
+               // that.
+               gl_blur_impl(
+                   1.0, gsctx->blur_context, NULL, (coord_t){0}, &reg_blur, 
NULL,
+                   source_texture,
+                   (geometry_t){.width = new_inner->width, .height = 
new_inner->height},
+                   fbo, gd->default_mask_texture);
+               pixman_region32_fini(&reg_blur);
+       }
 
        // Colorize the shadow with color.
        log_debug("Colorize shadow");
@@ -1318,7 +1333,10 @@
        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
        glDeleteBuffers(2, bo);
 
-       glDeleteTextures(1, (GLuint[]){source_texture, tmp_texture});
+       glDeleteTextures(1, (GLuint[]){source_texture});
+       if (tmp_texture != source_texture) {
+               glDeleteTextures(1, (GLuint[]){tmp_texture});
+       }
        glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0);
        glDeleteFramebuffers(1, &fbo);
        gl_check_err();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/src/common.h new/picom-10.1/src/common.h
--- old/picom-10/src/common.h   2022-11-11 16:57:29.000000000 +0100
+++ new/picom-10.1/src/common.h 2022-11-22 17:29:57.000000000 +0100
@@ -150,7 +150,7 @@
        /// Use an ev_idle callback for drawing
        /// So we only start drawing when events are processed
        ev_idle draw_idle;
-       /// Called everytime we have timeouts or new data on socket,
+       /// Called every time we have timeouts or new data on socket,
        /// so we can be sure if xcb read from X socket at anytime during event
        /// handling, we will not left any event unhandled in the queue
        ev_prepare event_check;
@@ -240,7 +240,7 @@
        /// Whether we need to redraw the screen
        bool redraw_needed;
 
-       /// Cache a xfixes region so we don't need to allocate it everytime.
+       /// Cache a xfixes region so we don't need to allocate it every time.
        /// A workaround for yshui/picom#301
        xcb_xfixes_region_t damaged_region;
        /// The region needs to painted on next paint.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/src/options.c new/picom-10.1/src/options.c
--- old/picom-10/src/options.c  2022-11-11 16:57:29.000000000 +0100
+++ new/picom-10.1/src/options.c        2022-11-22 17:29:57.000000000 +0100
@@ -139,7 +139,7 @@
     {"log-file"                    , required_argument, 322, NULL          , 
"Path to the log file."},
     {"use-damage"                  , no_argument      , 323, NULL          , 
"Render only the damaged (changed) part of the screen"},
     {"no-use-damage"               , no_argument      , 324, NULL          , 
"Disable the use of damage information. This cause the whole screen to be"
-                                                                             
"redrawn everytime, instead of the part of the screen that has actually "
+                                                                             
"redrawn every time, instead of the part of the screen that has actually "
                                                                              
"changed. Potentially degrades the performance, but might fix some artifacts."},
     {"no-vsync"                    , no_argument      , 325, NULL          , 
"Disable VSync"},
     {"max-brightness"              , required_argument, 326, NULL          , 
"Dims windows which average brightness is above this threshold. Requires "
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/src/picom.c new/picom-10.1/src/picom.c
--- old/picom-10/src/picom.c    2022-11-11 16:57:29.000000000 +0100
+++ new/picom-10.1/src/picom.c  2022-11-22 17:29:57.000000000 +0100
@@ -539,8 +539,8 @@
                                } else {
                                        shader->attributes = 0;
                                }
-                               log_debug("Shader %s has attributes %ld", 
shader->key,
-                                         shader->attributes);
+                               log_debug("Shader %s has attributes %" PRIu64,
+                                         shader->key, shader->attributes);
                        }
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/src/win.c new/picom-10.1/src/win.c
--- old/picom-10/src/win.c      2022-11-11 16:57:29.000000000 +0100
+++ new/picom-10.1/src/win.c    2022-11-22 17:29:57.000000000 +0100
@@ -346,6 +346,7 @@
 }
 
 bool win_bind_mask(struct backend_base *b, struct managed_win *w) {
+       assert(!w->mask_image);
        auto reg_bound_local = win_get_bounding_shape_global_by_val(w);
        pixman_region32_translate(&reg_bound_local, -w->g.x, -w->g.y);
        w->mask_image = b->ops->make_mask(
@@ -2139,6 +2140,7 @@
                        assert(mw->shadow_image != NULL);
                        win_release_shadow(ps->backend_data, mw);
                }
+               win_release_mask(ps->backend_data, mw);
 
                // Invalidate reg_ignore of windows below this one
                // TODO(yshui) what if next_w is not mapped??
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10/tests/configs/parsing_test.conf 
new/picom-10.1/tests/configs/parsing_test.conf
--- old/picom-10/tests/configs/parsing_test.conf        2022-11-11 
16:57:29.000000000 +0100
+++ new/picom-10.1/tests/configs/parsing_test.conf      2022-11-22 
17:29:57.000000000 +0100
@@ -311,7 +311,7 @@
 # glx-no-rebind-pixmap = false
 
 # Disable the use of damage information.
-# This cause the whole screen to be redrawn everytime, instead of the part of 
the screen
+# This cause the whole screen to be redrawn every time, instead of the part of 
the screen
 # has actually changed. Potentially degrades the performance, but might fix 
some artifacts.
 # The opposing option is use-damage
 #
@@ -400,7 +400,7 @@
 #     transparent, and you want shadows in those areas.
 #
 #   clip-shadow-above:::
-#     Controls wether shadows that would have been drawn above the window 
should
+#     Controls whether shadows that would have been drawn above the window 
should
 #     be clipped. Useful for dock windows that should have no shadow painted 
on top.
 #
 #   redir-ignore:::

Reply via email to