docs: Wayland-only path — no framebuffer workarounds. Add Qt6 instrumentation.
- WAYLAND-IMPLEMENTATION-PLAN.md v2.0: document architecture decision that Wayland is the only supported display path. Remove all framebuffer fallback workarounds (offscreen QPA, redox QPA shim). - qwaylanddisplay.cpp: add fprintf instrumentation for crash diagnosis; skip xkb_context_new on Redox to eliminate potential xkb crash vector. - greeter-ui/main.cpp: remove QT_QPA_PLATFORM=redox workaround. The greeter must use Wayland. Accept the crash until Qt6 is fixed. - Ruled out: relibc calloc (zeroes correctly), libwayland proxy_create (correct), compositor protocol (compliant). Root cause is in Qt6 generated Wayland wrappers passing NULL to wl_proxy_add_listener.
This commit is contained in:
@@ -342,12 +342,17 @@ void QWaylandDisplay::setupConnection()
|
||||
qCritical("QWaylandDisplay: wl_display_get_registry() returned NULL");
|
||||
_exit(1);
|
||||
}
|
||||
// Instrumentation: log the registry pointer before init
|
||||
fprintf(stderr, "QWaylandDisplay: registry=%p mDisplay=%p\n", (void*)registry, (void*)mDisplay);
|
||||
init(registry);
|
||||
|
||||
#if QT_CONFIG(xkbcommon)
|
||||
// Skip xkb on Redox — xkb_context_new may crash without XKB data files
|
||||
#ifndef Q_OS_REDOX
|
||||
mXkbContext.reset(xkb_context_new(XKB_CONTEXT_NO_FLAGS));
|
||||
if (!mXkbContext)
|
||||
qCWarning(lcQpaWayland, "failed to create xkb context");
|
||||
#endif
|
||||
#endif
|
||||
if (mWaylandInputContextRequested)
|
||||
checkTextInputProtocol();
|
||||
|
||||
@@ -12,13 +12,6 @@ int main(int argc, char *argv[]) {
|
||||
qputenv("QT_QUICK_BACKEND", QByteArrayLiteral("software"));
|
||||
QQuickWindow::setGraphicsApi(QSGRendererInterface::Software);
|
||||
|
||||
// Use the Redox-native QPA plugin (libqredox.so) instead of Wayland.
|
||||
// The Qt6 Wayland plugin crashes at null+8 during wl_registry init on Redox.
|
||||
// The redox QPA plugin renders directly to the framebuffer via scheme:display.
|
||||
if (qEnvironmentVariableIsEmpty("QT_QPA_PLATFORM")) {
|
||||
qputenv("QT_QPA_PLATFORM", "redox");
|
||||
}
|
||||
|
||||
QGuiApplication app(argc, argv);
|
||||
QQuickStyle::setStyle(QStringLiteral("Basic"));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user