fix: comprehensive boot hardening — crashes, warnings, sensors, bare-metal PS/2
- firmware-loader: handle missing INIT_NOTIFY gracefully (Option<RawFd>) - driver-params: suppress ENODEV (19) on missing driver-manager scheme - compositor: add wl_seat.name + pointer capabilities for Qt6 compat - greeter: use redox QPA (libqredox.so) instead of broken Qt6 Wayland - greeter: reduce DRM wait 10s→2s, kded6 offscreen QPA to avoid crash - thermald: add CPU die temperature via MSR IA32_THERM_STATUS (Linux coretemp) - pcid: diagnostic MCFG warning with Q35 guidance, address validation - dhcpd: auto-interface detection (P0-dhcpd-auto-iface.patch wired) - procmgr: SIGCHLD EPERM→debug (kernel limitation, not a bug) - ps2d LED: warn→debug on modern hw without real PS/2 controller - ps2d mouse: 10×1s→3×250ms retry, fast-fail on unknown response - i2c RON: handle empty response from i2cd when no adapters present - base recipe: wire 6 new/improved patches - config: remove INIT_SKIP, enable all 14 previously-suppressed daemons
This commit is contained in:
@@ -338,6 +338,10 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration)
|
||||
void QWaylandDisplay::setupConnection()
|
||||
{
|
||||
struct ::wl_registry *registry = wl_display_get_registry(mDisplay);
|
||||
if (!registry) {
|
||||
qCritical("QWaylandDisplay: wl_display_get_registry() returned NULL");
|
||||
_exit(1);
|
||||
}
|
||||
init(registry);
|
||||
|
||||
#if QT_CONFIG(xkbcommon)
|
||||
@@ -525,6 +529,13 @@ void QWaylandDisplay::reconnect()
|
||||
|
||||
void QWaylandDisplay::flushRequests()
|
||||
{
|
||||
#ifdef Q_OS_REDOX
|
||||
if (!m_eventThread) {
|
||||
wl_display_dispatch_pending(mDisplay);
|
||||
wl_display_flush(mDisplay);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
m_eventThread->readAndDispatchEvents();
|
||||
}
|
||||
|
||||
@@ -533,6 +544,11 @@ void QWaylandDisplay::flushRequests()
|
||||
// polling.
|
||||
void QWaylandDisplay::initEventThread()
|
||||
{
|
||||
#ifdef Q_OS_REDOX
|
||||
if (!m_frameEventQueue)
|
||||
m_frameEventQueue = wl_display_create_queue(mDisplay);
|
||||
return;
|
||||
#endif
|
||||
m_eventThread.reset(
|
||||
new EventThread(mDisplay, /* default queue */ nullptr, EventThread::EmitToDispatch));
|
||||
connect(m_eventThread.get(), &EventThread::needReadAndDispatch, this,
|
||||
|
||||
Reference in New Issue
Block a user