This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project wmaker-crm.git.
The branch, next has been updated via e1146e56e08af2a66aecedffc6ff31d8ddcb25f3 (commit) via 7d6ecb51f66b65221a5df56f2e4907f7a65f4ee4 (commit) from be1c2a01dc8af1fcef6bf1b80c5a4038603d24b7 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://repo.or.cz/w/wmaker-crm.git/commit/e1146e56e08af2a66aecedffc6ff31d8ddcb25f3 commit e1146e56e08af2a66aecedffc6ff31d8ddcb25f3 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Mon Dec 15 23:49:29 2014 +0100 configure: rewrote the detection for WebP image library Unfortunately, the detection was broken because the header is using a hack on the function name to provide compatibility between different versions of the API, which means the usual link test, which uses a known name of a symbol, cannot work without also using the header to get the hack applied on the function's name. The new detection mechanism now simply check for both header and link at the same time, so we're probably safe until a Major API change is decided, in which case we will also have to update WRaster's code anyway. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/m4/wm_imgfmt_check.m4 b/m4/wm_imgfmt_check.m4 index cad2d727..d07e618f 100644 --- a/m4/wm_imgfmt_check.m4 +++ b/m4/wm_imgfmt_check.m4 @@ -187,14 +187,34 @@ AC_DEFUN_ONCE([WM_IMGFMT_CHECK_TIFF], # the variable 'supported_gfx' # When not found, append info to variable 'unsupported' AC_DEFUN_ONCE([WM_IMGFMT_CHECK_WEBP], -[WM_LIB_CHECK([WEBP], ["-lwebp"], [VP8DecodeLayer], [$XLFLAGS $XLIBS], - [wm_save_CFLAGS="$CFLAGS" - AS_IF([wm_fn_lib_try_compile "webp/decode.h" "" "return 0" ""], - [], - [AC_MSG_ERROR([found $CACHEVAR but could not find appropriate header - are you missing libwebp-dev package?])]) - CFLAGS="$wm_save_CFLAGS"], - [supported_gfx], [GFXLIBS])dnl -]) dnl AC_DEFUN +[AS_IF([test "x$enable_webp" = "xno"], + [unsupported="$unsupported WebP"], + [AC_CACHE_CHECK([for WebP support library], [wm_cv_imgfmt_webp], + [wm_cv_imgfmt_webp=no + dnl + dnl The library is using a special trick on the functions to provide + dnl compatibility between versions, so we cannot try linking against + dnl a symbol without first using the header to handle it + wm_save_LIBS="$LIBS" + LIBS="$LIBS -lwebp" + AC_TRY_LINK( + [@%:@include <webp/decode.h>], + [WebPGetFeatures(NULL, 1024, NULL);], + [wm_cv_imgfmt_webp="-lwebp"]) + LIBS="$wm_save_LIBS" + AS_IF([test "x$enable_webp$wm_cv_imgfmt_webp" = "xyesno"], + [AC_MSG_ERROR([explicit WebP support requested but no library found])])dnl + ]) + AS_IF([test "x$wm_cv_imgfmt_webp" = "xno"], + [unsupported="$unsupported WebP" + enable_webp="no"], + [supported_gfx="$supported_gfx WebP" + WM_APPEND_ONCE([$wm_cv_imgfmt_webp], [GFXLIBS])dnl + AC_DEFINE([USE_WEBP], [1], + [defined when valid Webp library with header was found])])dnl + ]) +AM_CONDITIONAL([USE_WEBP], [test "x$enable_webp" != "xno"])dnl +]) # WM_IMGFMT_CHECK_XPM http://repo.or.cz/w/wmaker-crm.git/commit/7d6ecb51f66b65221a5df56f2e4907f7a65f4ee4 commit 7d6ecb51f66b65221a5df56f2e4907f7a65f4ee4 Author: Christophe CURIS <christophe.cu...@free.fr> Date: Mon Dec 15 23:22:21 2014 +0100 wmaker: rewrote the update of _NET_WORKAREA property As reported by Moritz, the Qt toolkit (and maybe a few other ones) are using the content of this property, but WindowMaker did not set it properly so for examples the menus in KDE could fail to display in multi-screen configuration (probably because the toolkit is using the property to make sure the menu stays in the visible area). The original code just assumed it was safe to use the usable area of the 1st screen in the list, but unfortunately it is not that simple. The new code calculates a rectangle that contains the usable region from all the screens, so the toolkit gets a more accurate value. Signed-off-by: Christophe CURIS <christophe.cu...@free.fr> diff --git a/src/wmspec.c b/src/wmspec.c index 89d8fac6..9b56f96f 100644 --- a/src/wmspec.c +++ b/src/wmspec.c @@ -702,25 +702,67 @@ void wNETWMUpdateActions(WWindow *wwin, Bool del) void wNETWMUpdateWorkarea(WScreen *scr) { - long *area; - int count, i; + WArea total_usable; + int nb_workspace; - if (!scr->netdata || scr->workspace_count == 0 || !scr->usableArea) + if (!scr->netdata) { + /* If the _NET_xxx were not initialised, it not necessary to do anything */ return; + } - count = scr->workspace_count * 4; - area = wmalloc(sizeof(long) * count); + if (!scr->usableArea) { + /* If we don't have any info, we fall back on using the complete screen area */ + total_usable.x1 = 0; + total_usable.y1 = 0; + total_usable.x2 = scr->scr_width; + total_usable.y2 = scr->scr_height; + + } else { + int i; + + /* + * the _NET_WORKAREA is supposed to contain the total area of the screen that + * is usable, so we merge the areas from all xrandr sub-screens + */ + total_usable = scr->usableArea[0]; + + for (i = 1; i < wXineramaHeads(scr); i++) { + /* The merge is not subtle because _NET_WORKAREA does not need more */ + if (scr->usableArea[i].x1 < total_usable.x1) + total_usable.x1 = scr->usableArea[i].x1; + + if (scr->usableArea[i].y1 < total_usable.y1) + total_usable.y1 = scr->usableArea[i].y1; + + if (scr->usableArea[i].x2 > total_usable.x2) + total_usable.x2 = scr->usableArea[i].x2; + + if (scr->usableArea[i].y2 > total_usable.y2) + total_usable.y2 = scr->usableArea[i].y2; + } - for (i = 0; i < scr->workspace_count; i++) { - area[4 * i + 0] = scr->usableArea[0].x1; - area[4 * i + 1] = scr->usableArea[0].y1; - area[4 * i + 2] = scr->usableArea[0].x2 - scr->usableArea[0].x1; - area[4 * i + 3] = scr->usableArea[0].y2 - scr->usableArea[0].y1; } - XChangeProperty(dpy, scr->root_win, net_workarea, XA_CARDINAL, 32, - PropModeReplace, (unsigned char *)area, count); - wfree(area); + /* We are expected to repeat the information for each workspace */ + if (scr->workspace_count == 0) + nb_workspace = 1; + else + nb_workspace = scr->workspace_count; + + { + long property_value[nb_workspace * 4]; + int i; + + for (i = 0; i < nb_workspace; i++) { + property_value[4 * i + 0] = total_usable.x1; + property_value[4 * i + 1] = total_usable.y1; + property_value[4 * i + 2] = total_usable.x2 - total_usable.x1; + property_value[4 * i + 3] = total_usable.y2 - total_usable.y1; + } + + XChangeProperty(dpy, scr->root_win, net_workarea, XA_CARDINAL, 32, PropModeReplace, + (unsigned char *) property_value, nb_workspace * 4); + } } Bool wNETWMGetUsableArea(WScreen *scr, int head, WArea *area) ----------------------------------------------------------------------- Summary of changes: m4/wm_imgfmt_check.m4 | 36 ++++++++++++++++++++------ src/wmspec.c | 68 +++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 83 insertions(+), 21 deletions(-) repo.or.cz automatic notification. Contact project admin crma...@gmail.com if you want to unsubscribe, or site admin ad...@repo.or.cz if you receive no reply. -- wmaker-crm.git ("The Window Maker window manager") -- To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.