mirror of
https://git.outfoxxed.me/quickshell/quickshell.git
synced 2026-02-25 03:43:58 +11:00
wayland: check screen isPlaceholder and if wl_output is null
Fixes crashes on disconnected monitors
This commit is contained in:
parent
e7cd1e9982
commit
158db16b93
3 changed files with 4 additions and 3 deletions
|
|
@ -46,6 +46,7 @@ set shell id.
|
||||||
- Fixed asynchronous loaders not working before window creation.
|
- Fixed asynchronous loaders not working before window creation.
|
||||||
- Fixed memory leak in IPC handlers.
|
- Fixed memory leak in IPC handlers.
|
||||||
- Fixed ClippingRectangle related crashes.
|
- Fixed ClippingRectangle related crashes.
|
||||||
|
- Fixed crashes when monitors are unplugged.
|
||||||
|
|
||||||
## Packaging Changes
|
## Packaging Changes
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ QSWaylandSessionLockSurface::QSWaylandSessionLockSurface(QtWaylandClient::QWayla
|
||||||
wl_output* output = nullptr; // NOLINT (include)
|
wl_output* output = nullptr; // NOLINT (include)
|
||||||
auto* waylandScreen = dynamic_cast<QtWaylandClient::QWaylandScreen*>(qwindow->screen()->handle());
|
auto* waylandScreen = dynamic_cast<QtWaylandClient::QWaylandScreen*>(qwindow->screen()->handle());
|
||||||
|
|
||||||
if (waylandScreen != nullptr) {
|
if (waylandScreen != nullptr && !waylandScreen->isPlaceholder() && waylandScreen->output()) {
|
||||||
output = waylandScreen->output();
|
output = waylandScreen->output();
|
||||||
} else {
|
} else {
|
||||||
qFatal() << "Session lock screen does not corrospond to a real screen. Force closing window";
|
qFatal() << "Session lock screen does not corrospond to a real screen. Force closing window";
|
||||||
|
|
|
||||||
|
|
@ -143,11 +143,11 @@ LayerSurface::LayerSurface(LayerShellIntegration* shell, QtWaylandClient::QWayla
|
||||||
auto* waylandScreen =
|
auto* waylandScreen =
|
||||||
dynamic_cast<QtWaylandClient::QWaylandScreen*>(qwindow->screen()->handle());
|
dynamic_cast<QtWaylandClient::QWaylandScreen*>(qwindow->screen()->handle());
|
||||||
|
|
||||||
if (waylandScreen != nullptr) {
|
if (waylandScreen != nullptr && !waylandScreen->isPlaceholder() && waylandScreen->output()) {
|
||||||
output = waylandScreen->output();
|
output = waylandScreen->output();
|
||||||
} else {
|
} else {
|
||||||
qWarning()
|
qWarning()
|
||||||
<< "Layershell screen does not corrospond to a real screen. Letting the compositor pick.";
|
<< "Layershell screen does not correspond to a real screen. Letting the compositor pick.";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue