From 5fd5eaedbc9ac441168e2ccedf328c1daf4fad94 Mon Sep 17 00:00:00 2001 From: Oskari Alaranta Date: Fri, 31 Jul 2026 17:11:19 +0300 Subject: [PATCH] Add dummy GLXCreateContextAttribsARB --- xbanan/ExtGLX.cpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/xbanan/ExtGLX.cpp b/xbanan/ExtGLX.cpp index 5cf94ec..60d1958 100644 --- a/xbanan/ExtGLX.cpp +++ b/xbanan/ExtGLX.cpp @@ -401,6 +401,40 @@ BAN::ErrorOr extension_glx(Client& client_info, BAN::ConstByteSpan packet) break; } + case X_GLXCreateContextAttribsARB: + { + auto request = decode(packet).value(); + + dprintln("GLXCreateContextAttribsARB"); + dprintln(" context: {}", request.context); + dprintln(" fbconfig: {}", request.fbconfig); + dprintln(" screen: {}", request.screen); + dprintln(" shareList: {}", request.shareList); + dprintln(" isDirect: {}", request.isDirect); + dprintln(" numAttribs: {}", request.numAttribs); + + auto* object = new MyGLXContext({ + .fbconfig = request.fbconfig, + .is_direct = request.isDirect, + }); + ASSERT(object); + + TRY(client_info.objects.insert(request.context)); + TRY(g_objects.insert( + request.context, + TRY(BAN::UniqPtr::create(Object { + .type = Object::Type::Extension, + .object = Object::Extension { + .type_major = s_glx_major_opcode, + .type_minor = GLXBadContext, + .c_private = object, + .destructor = [](Object::Extension& ext) { delete static_cast(ext.c_private); }, + }, + })) + )); + + break; + } default: dwarnln("unsupported glx minor opcode {}", packet[1]); break;