diff --git a/autotests/libkwineffects/CMakeLists.txt b/autotests/libkwineffects/CMakeLists.txt
index 0c87dfb5c1..e175cca7aa 100644
--- a/autotests/libkwineffects/CMakeLists.txt
+++ b/autotests/libkwineffects/CMakeLists.txt
@@ -15,5 +15,5 @@ kwineffects_unit_tests(
add_executable(kwinglplatformtest kwinglplatformtest.cpp mock_gl.cpp ../../libkwineffects/kwinglplatform.cpp)
add_test(kwineffects-kwinglplatformtest kwinglplatformtest)
-target_link_libraries(kwinglplatformtest Qt5::Test Qt5::Gui Qt5::X11Extras KF5::ConfigCore)
+target_link_libraries(kwinglplatformtest Qt5::Test Qt5::Gui Qt5::X11Extras KF5::ConfigCore XCB::XCB)
ecm_mark_as_test(kwinglplatformtest)
diff --git a/libkwineffects/kwinglplatform.cpp b/libkwineffects/kwinglplatform.cpp
index 6e52a3c105..49758dd732 100644
--- a/libkwineffects/kwinglplatform.cpp
+++ b/libkwineffects/kwinglplatform.cpp
@@ -27,7 +27,6 @@ along with this program. If not, see .
#include
#include
-#include
#include
#include
@@ -62,17 +61,19 @@ static qint64 parseVersionString(const QByteArray &version)
static qint64 getXServerVersion()
{
qint64 major, minor, patch;
+ major = 0;
+ minor = 0;
+ patch = 0;
- Display *dpy = display();
- if (dpy && strstr(ServerVendor(dpy), "X.Org")) {
- const int release = VendorRelease(dpy);
- major = (release / 10000000);
- minor = (release / 100000) % 100;
- patch = (release / 1000) % 100;
- } else {
- major = 0;
- minor = 0;
- patch = 0;
+ if (xcb_connection_t *c = connection()) {
+ auto setup = xcb_get_setup(c);
+ const QByteArray vendorName(xcb_setup_vendor(setup), xcb_setup_vendor_length(setup));
+ if (vendorName.contains("X.Org")) {
+ const int release = setup->release_number;
+ major = (release / 10000000);
+ minor = (release / 100000) % 100;
+ patch = (release / 1000) % 100;
+ }
}
return kVersionNumber(major, minor, patch);