diff --git a/configure.ac b/configure.ac index 2d2e3773dc..373ea6dc53 100644 --- a/configure.ac +++ b/configure.ac @@ -2875,9 +2875,7 @@ if test "x${want_x11_xlib}" = "xyes" ; then ECORE_CHECK_X_EXTENSION([Xtest], [XTest.h], [Xtst], [XTestFakeKeyEvent]) ECORE_CHECK_X_EXTENSION([Xss], [scrnsaver.h], [Xss], [XScreenSaverSelectInput]) - if test echo "$ECORE_X_LIBS" | grep -q Xrandr ; then - PKG_CHECK_EXISTS([xrandr > 1.3.1], [], [AC_MSG_ERROR([Xrandr >= 1.3.1 required])]) - fi + PKG_CHECK_EXISTS([xrandr > 1.3.2], [AC_DEFINE([XRANDR_GOOD], [1], [good xrandr])], []) if test "${want_xpresent}" = "yes"; then ECORE_CHECK_X_EXTENSION([Xpresent], [Xpresent.h], [Xpresent], [XPresentQueryExtension]) diff --git a/src/lib/ecore_x/xlib/ecore_x_randr.c b/src/lib/ecore_x/xlib/ecore_x_randr.c index b4777772a3..db1f10968c 100644 --- a/src/lib/ecore_x/xlib/ecore_x_randr.c +++ b/src/lib/ecore_x/xlib/ecore_x_randr.c @@ -2206,10 +2206,17 @@ ecore_x_randr_output_name_get(Ecore_X_Window root, Ecore_X_Randr_Output output, { if (info->name) { - ret = malloc(info->nameLen + 1); - memcpy(ret, info->name, info->nameLen); - ret[info->nameLen] = 0; - if (len) *len = info->nameLen; + size_t s; +#ifdef XRANDR_GOOD + s = info->nameLen; +#else + /* pre 1.4.0 does not fill in info->nameLen */ + s = strlen(info->name); +#endif + ret = malloc(s + 1); + memcpy(ret, info->name, s); + ret[s] = 0; + if (len) *len = s; } /* free the output info */