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-12-22 16:21:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/picom (Old)
 and      /work/SRC/openSUSE:Factory/.picom.new.1835 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "picom"

Thu Dec 22 16:21:59 2022 rev:7 rq:1044090 version:10.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/picom/picom.changes      2022-11-23 
09:48:38.175207321 +0100
+++ /work/SRC/openSUSE:Factory/.picom.new.1835/picom.changes    2022-12-22 
16:22:12.429730226 +0100
@@ -1,0 +2,8 @@
+Wed Dec 21 14:31:20 UTC 2022 - Mia Herkt <[email protected]>
+
+- Update to version 10.2
+Fixes:
+  * Window border not being considered when calculating its mask
+    gh#yshui/picom#950
+
+-------------------------------------------------------------------

Old:
----
  v10.1.tar.gz

New:
----
  v10.2.tar.gz

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

Other differences:
------------------
++++++ picom.spec ++++++
--- /var/tmp/diff_new_pack.3U19To/_old  2022-12-22 16:22:13.053733814 +0100
+++ /var/tmp/diff_new_pack.3U19To/_new  2022-12-22 16:22:13.061733860 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           picom
-Version:        10.1
+Version:        10.2
 Release:        0
 Summary:        Stand-alone compositor for X11
 License:        MIT AND MPL-2.0

++++++ v10.1.tar.gz -> v10.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10.1/src/backend/gl/egl.c 
new/picom-10.2/src/backend/gl/egl.c
--- old/picom-10.1/src/backend/gl/egl.c 2022-11-22 17:29:57.000000000 +0100
+++ new/picom-10.2/src/backend/gl/egl.c 2022-11-30 20:20:01.000000000 +0100
@@ -37,6 +37,10 @@
 };
 
 static PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC glEGLImageTargetTexStorage = NULL;
+static PFNEGLCREATEIMAGEKHRPROC eglCreateImageProc = NULL;
+static PFNEGLDESTROYIMAGEKHRPROC eglDestroyImageProc = NULL;
+static PFNEGLGETPLATFORMDISPLAYPROC eglGetPlatformDisplayProc = NULL;
+static PFNEGLCREATEPLATFORMWINDOWSURFACEPROC 
eglCreatePlatformWindowSurfaceProc = NULL;
 
 /**
  * Free a glx_texture_t.
@@ -46,7 +50,7 @@
        struct egl_pixmap *p = tex->user_data;
        // Release binding
        if (p->image != EGL_NO_IMAGE) {
-               eglDestroyImage(gd->display, p->image);
+               eglDestroyImageProc(gd->display, p->image);
                p->image = EGL_NO_IMAGE;
        }
 
@@ -103,6 +107,21 @@
  * Initialize OpenGL.
  */
 static backend_t *egl_init(session_t *ps) {
+       bool success = false;
+       struct egl_data *gd = NULL;
+
+#define get_proc(name, type)                                                   
          \
+       name##Proc = (type)eglGetProcAddress(#name);                            
         \
+       if (!name##Proc) {                                                      
         \
+               log_error("Failed to get EGL function " #name);                 
         \
+               goto end;                                                       
         \
+       }
+       get_proc(eglCreateImage, PFNEGLCREATEIMAGEKHRPROC);
+       get_proc(eglDestroyImage, PFNEGLDESTROYIMAGEKHRPROC);
+       get_proc(eglGetPlatformDisplay, PFNEGLGETPLATFORMDISPLAYPROC);
+       get_proc(eglCreatePlatformWindowSurface, 
PFNEGLCREATEPLATFORMWINDOWSURFACEPROC);
+#undef get_proc
+
        // Check if we have the X11 platform
        const char *exts = eglQueryString(EGL_NO_DISPLAY, EGL_EXTENSIONS);
        if (strstr(exts, "EGL_EXT_platform_x11") == NULL) {
@@ -110,14 +129,13 @@
                return NULL;
        }
 
-       bool success = false;
-       auto gd = ccalloc(1, struct egl_data);
-       gd->display = eglGetPlatformDisplay(EGL_PLATFORM_X11_EXT, ps->dpy,
-                                           (EGLAttrib[]){
-                                               EGL_PLATFORM_X11_SCREEN_EXT,
-                                               ps->scr,
-                                               EGL_NONE,
-                                           });
+       gd = ccalloc(1, struct egl_data);
+       gd->display = eglGetPlatformDisplayProc(EGL_PLATFORM_X11_EXT, ps->dpy,
+                                               (EGLAttrib[]){
+                                                   EGL_PLATFORM_X11_SCREEN_EXT,
+                                                   ps->scr,
+                                                   EGL_NONE,
+                                               });
        if (gd->display == EGL_NO_DISPLAY) {
                log_error("Failed to get EGL display.");
                goto end;
@@ -129,6 +147,11 @@
                goto end;
        }
 
+       if (major < 1 || (major == 1 && minor < 5)) {
+               log_error("EGL version too old, need at least 1.5.");
+               goto end;
+       }
+
        // Check if EGL supports OpenGL
        const char *apis = eglQueryString(gd->display, EGL_CLIENT_APIS);
        if (strstr(apis, "OpenGL") == NULL) {
@@ -172,7 +195,7 @@
        EGLConfig target_cfg = cfgs[0];
        free(cfgs);
 
-       gd->target_win = eglCreatePlatformWindowSurface(
+       gd->target_win = eglCreatePlatformWindowSurfaceProc(
            gd->display, target_cfg, 
(xcb_window_t[]){session_get_target_window(ps)}, NULL);
        if (gd->target_win == EGL_NO_SURFACE) {
                log_error("Failed to create EGL surface.");
@@ -227,7 +250,9 @@
 
 end:
        if (!success) {
-               egl_deinit(&gd->gl.base);
+               if (gd != NULL) {
+                       egl_deinit(&gd->gl.base);
+               }
                return NULL;
        }
 
@@ -260,8 +285,8 @@
 
        eglpixmap = cmalloc(struct egl_pixmap);
        eglpixmap->pixmap = pixmap;
-       eglpixmap->image = eglCreateImage(gd->display, gd->ctx, 
EGL_NATIVE_PIXMAP_KHR,
-                                         (EGLClientBuffer)(uintptr_t)pixmap, 
NULL);
+       eglpixmap->image = eglCreateImageProc(gd->display, gd->ctx, 
EGL_NATIVE_PIXMAP_KHR,
+                                             
(EGLClientBuffer)(uintptr_t)pixmap, NULL);
        eglpixmap->owned = owned;
 
        if (eglpixmap->image == EGL_NO_IMAGE) {
@@ -287,7 +312,7 @@
        return wd;
 err:
        if (eglpixmap && eglpixmap->image) {
-               eglDestroyImage(gd->display, eglpixmap->image);
+               eglDestroyImageProc(gd->display, eglpixmap->image);
        }
        free(eglpixmap);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/picom-10.1/src/win.c new/picom-10.2/src/win.c
--- old/picom-10.1/src/win.c    2022-11-22 17:29:57.000000000 +0100
+++ new/picom-10.2/src/win.c    2022-11-30 20:20:01.000000000 +0100
@@ -350,7 +350,7 @@
        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(
-           b, (geometry_t){.width = w->g.width, .height = w->g.height}, 
&reg_bound_local);
+           b, (geometry_t){.width = w->widthb, .height = w->heightb}, 
&reg_bound_local);
        pixman_region32_fini(&reg_bound_local);
 
        if (!w->mask_image) {

Reply via email to