summaryrefslogtreecommitdiff
path: root/src/protocols/core/Output.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-06-15 17:56:44 +0200
committerVaxry <vaxry@vaxry.net>2024-06-15 17:56:44 +0200
commit77f44bfcab6c3e553d26a776c011613efbfe6cfd (patch)
treee4e3feb48ae708e55681658b7b2581ae28c98bf8 /src/protocols/core/Output.cpp
parent6c24dc0bb147d60cc5c7e44cc3e257a737ead828 (diff)
output: avoid crashes when binding a defunct wl_output global
ref #6508
Diffstat (limited to 'src/protocols/core/Output.cpp')
-rw-r--r--src/protocols/core/Output.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/protocols/core/Output.cpp b/src/protocols/core/Output.cpp
index 90358fa5..10daa15e 100644
--- a/src/protocols/core/Output.cpp
+++ b/src/protocols/core/Output.cpp
@@ -9,6 +9,9 @@ CWLOutputResource::CWLOutputResource(SP<CWlOutput> resource_, SP<CMonitor> pMoni
pClient = resource->client();
+ if (!monitor)
+ return;
+
resource->setOnDestroy([this](CWlOutput* r) {
if (monitor && PROTO::outputs.contains(monitor->szName))
PROTO::outputs.at(monitor->szName)->destroyResource(this);
@@ -69,6 +72,9 @@ CWLOutputProtocol::CWLOutputProtocol(const wl_interface* iface, const int& ver,
}
void CWLOutputProtocol::bindManager(wl_client* client, void* data, uint32_t ver, uint32_t id) {
+ if (defunct)
+ Debug::log(WARN, "[wl_output] Binding a wl_output that's inert?? Possible client bug.");
+
const auto RESOURCE = m_vOutputs.emplace_back(makeShared<CWLOutputResource>(makeShared<CWlOutput>(client, ver, id), monitor.lock()));
if (!RESOURCE->good()) {