commit picom for openSUSE:Factory
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 <mia@0x0.st> + +- 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(®_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}, ®_bound_local); + b, (geometry_t){.width = w->widthb, .height = w->heightb}, ®_bound_local); pixman_region32_fini(®_bound_local); if (!w->mask_image) {
participants (1)
-
Source-Sync