Workaround an xcb-dri2 bug.
xcb_dri2_connect_device_name generated by xcb-proto 1.6 is broken. It only works when the length of the driver name is a multiple of 4.
This commit is contained in:
parent
4d8ba216c5
commit
1b6c0ed95a
|
@ -16,6 +16,10 @@
|
|||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -152,9 +156,22 @@ dri2_connect(struct x11_compositor *c)
|
|||
return -1;
|
||||
}
|
||||
|
||||
#ifdef XCB_DRI2_CONNECT_DEVICE_NAME_BROKEN
|
||||
{
|
||||
char *driver_name, *device_name;
|
||||
|
||||
driver_name = xcb_dri2_connect_driver_name (connect);
|
||||
device_name = driver_name +
|
||||
((connect->driver_name_length + 3) & ~3);
|
||||
snprintf(path, sizeof path, "%.*s",
|
||||
xcb_dri2_connect_device_name_length (connect),
|
||||
device_name);
|
||||
}
|
||||
#else
|
||||
snprintf(path, sizeof path, "%.*s",
|
||||
xcb_dri2_connect_device_name_length (connect),
|
||||
xcb_dri2_connect_device_name (connect));
|
||||
#endif
|
||||
free(connect);
|
||||
|
||||
fd = open(path, O_RDWR);
|
||||
|
|
|
@ -34,6 +34,11 @@ AC_CHECK_LIB(expat, XML_ParserCreate, [EXPAT_LIBS="-lexpat"],
|
|||
[AC_MSG_ERROR([Can't find expat library. Please install expat.])])
|
||||
AC_SUBST(EXPAT_LIBS)
|
||||
|
||||
# workaround a bug in xcb-dri2 generated by xcb-proto 1.6
|
||||
AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
|
||||
[AC_DEFINE([XCB_DRI2_CONNECT_DEVICE_NAME_BROKEN], [1],
|
||||
[Define to 1 if xcb_dri2_connect_device_name is broken])])
|
||||
|
||||
AC_CONFIG_FILES([wayland/wayland-server.pc
|
||||
wayland/wayland-client.pc
|
||||
Makefile
|
||||
|
|
Loading…
Reference in New Issue