From 46d09529563127fef0d42a4fb2681ae8d65a856b Mon Sep 17 00:00:00 2001 From: DRC Date: Thu, 7 Jul 2022 17:22:57 -0500 Subject: [PATCH] Build: Fix compilation errors with libX11 1.8.x Fixes #205 --- ChangeLog.md | 2 ++ server/CMakeLists.txt | 10 ++++++++++ server/FakePbuffer.cpp | 2 +- server/faker-sym.h | 6 ++++++ server/faker-x11.cpp | 7 ++++++- server/faker.cpp | 4 ++-- 6 files changed, 27 insertions(+), 4 deletions(-) diff --git a/ChangeLog.md b/ChangeLog.md index 292a5a94..4b9cc36f 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -8,6 +8,8 @@ module when using recent versions of nVidia's proprietary drivers. In some cases, this led to incorrect device permissions for **/dev/nvidia*** after the display manager was restarted. +2. Fixed compilation errors when building with libX11 1.8.x. + 3.0.1 ===== diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index 574521a0..2ce92856 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -91,6 +91,16 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/faker-mapfile > ${CMAKE_CURRENT_BINARY_DIR}/faker-mapfile DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/faker-mapfile.c) +include(CheckPrototypeDefinition) +set(CMAKE_REQUIRED_INCLUDES ${X11_X11_INCLUDE_PATH}) +check_prototype_definition(XkbOpenDisplay + "Display *XkbOpenDisplay(_Xconst char *, int *, int *, int *, int *, int *)" + NULL X11/XKBlib.h LIBX11_18) +unset(CMAKE_REQUIRED_INCLUDES) +if(LIBX11_18) + add_definitions(-DLIBX11_18) +endif() + set(FAKER_SOURCES backend.cpp ContextHash.cpp diff --git a/server/FakePbuffer.cpp b/server/FakePbuffer.cpp index bfa55279..64aab775 100644 --- a/server/FakePbuffer.cpp +++ b/server/FakePbuffer.cpp @@ -10,11 +10,11 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // wxWindows Library License for more details. +#include #include "FakePbuffer.h" #include "TempContextEGL.h" #include "BufferState.h" #include "ContextHashEGL.h" -#include using namespace util; using namespace backend; diff --git a/server/faker-sym.h b/server/faker-sym.h index 0fa1e5cd..3c6f94e8 100644 --- a/server/faker-sym.h +++ b/server/faker-sym.h @@ -704,9 +704,15 @@ FUNCDEF2(int, XNextEvent, Display *, dpy, XEvent *, xe, XNextEvent) FUNCDEF1(Display *, XOpenDisplay, _Xconst char *, name, XOpenDisplay) +#ifdef LIBX11_18 +FUNCDEF6(Display *, XkbOpenDisplay, _Xconst char *, display_name, + int *, event_rtrn, int *, error_rtrn, int *, major_in_out, + int *, minor_in_out, int *, reason_rtrn, XkbOpenDisplay) +#else FUNCDEF6(Display *, XkbOpenDisplay, char *, display_name, int *, event_rtrn, int *, error_rtrn, int *, major_in_out, int *, minor_in_out, int *, reason_rtrn, XkbOpenDisplay) +#endif FUNCDEF5(Bool, XQueryExtension, Display *, dpy, _Xconst char *, name, int *, major_opcode, int *, first_event, int *, first_error, diff --git a/server/faker-x11.cpp b/server/faker-x11.cpp index 99e8bf17..a233f3b1 100644 --- a/server/faker-x11.cpp +++ b/server/faker-x11.cpp @@ -1,6 +1,6 @@ // Copyright (C)2004 Landmark Graphics Corporation // Copyright (C)2005, 2006 Sun Microsystems, Inc. -// Copyright (C)2009, 2011-2016, 2018-2021 D. R. Commander +// Copyright (C)2009, 2011-2016, 2018-2022 D. R. Commander // // This library is free software and may be redistributed and/or modified under // the terms of the wxWindows Library License, Version 3.1 or (at your option) @@ -586,8 +586,13 @@ Display *XOpenDisplay(_Xconst char *name) // within libX11, VirtualGL cannot intercept it on some platforms. Thus we // need to interpose XkbOpenDisplay(). +#ifdef LIBX11_18 +Display *XkbOpenDisplay(_Xconst char *display_name, int *event_rtrn, + int *error_rtrn, int *major_in_out, int *minor_in_out, int *reason_rtrn) +#else Display *XkbOpenDisplay(char *display_name, int *event_rtrn, int *error_rtrn, int *major_in_out, int *minor_in_out, int *reason_rtrn) +#endif { Display *dpy = NULL; diff --git a/server/faker.cpp b/server/faker.cpp index ec537a62..601cfa3e 100644 --- a/server/faker.cpp +++ b/server/faker.cpp @@ -1,6 +1,6 @@ // Copyright (C)2004 Landmark Graphics Corporation // Copyright (C)2005, 2006 Sun Microsystems, Inc. -// Copyright (C)2009, 2011, 2013-2016, 2019-2021 D. R. Commander +// Copyright (C)2009, 2011, 2013-2016, 2019-2022 D. R. Commander // // This library is free software and may be redistributed and/or modified under // the terms of the wxWindows Library License, Version 3.1 or (at your option) @@ -14,6 +14,7 @@ #include #include "Mutex.h" +#include #include "ContextHash.h" #ifdef EGLBACKEND #include "ContextHashEGL.h" @@ -27,7 +28,6 @@ #include "fakerconfig.h" #include "threadlocal.h" #include -#include #include "faker.h"