mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-07-31 20:21:54 -07:00
@@ -51,6 +51,8 @@ void CXDGOutputProtocol::onManagerGetXDGOutput(CZxdgOutputManagerV1* mgr, uint32
|
||||
#endif
|
||||
pXDGOutput->client = CLIENT;
|
||||
|
||||
pXDGOutput->outputProto = OUTPUT->owner;
|
||||
|
||||
if (!pXDGOutput->resource->resource()) {
|
||||
m_vXDGOutputs.pop_back();
|
||||
mgr->noMemory();
|
||||
@@ -104,7 +106,7 @@ CXDGOutput::CXDGOutput(SP<CZxdgOutputV1> resource_, SP<CMonitor> monitor_) : mon
|
||||
void CXDGOutput::sendDetails() {
|
||||
static auto PXWLFORCESCALEZERO = CConfigValue<Hyprlang::INT>("xwayland:force_zero_scaling");
|
||||
|
||||
if (!monitor)
|
||||
if (!monitor || !outputProto || outputProto->isDefunct())
|
||||
return;
|
||||
|
||||
const auto POS = isXWayland ? monitor->vecXWaylandPosition : monitor->vecPosition;
|
||||
|
@@ -6,6 +6,7 @@
|
||||
|
||||
class CMonitor;
|
||||
class CXDGOutputProtocol;
|
||||
class CWLOutputProtocol;
|
||||
|
||||
class CXDGOutput {
|
||||
public:
|
||||
@@ -16,6 +17,7 @@ class CXDGOutput {
|
||||
private:
|
||||
WP<CMonitor> monitor;
|
||||
SP<CZxdgOutputV1> resource;
|
||||
WP<CWLOutputProtocol> outputProto;
|
||||
|
||||
std::optional<Vector2D> overridePosition;
|
||||
|
||||
|
@@ -47,7 +47,7 @@ SP<CWlOutput> CWLOutputResource::getResource() {
|
||||
}
|
||||
|
||||
void CWLOutputResource::updateState() {
|
||||
if (!monitor || (owner && owner->defunct))
|
||||
if (!monitor || !owner || owner->defunct)
|
||||
return;
|
||||
|
||||
if (resource->version() >= 2)
|
||||
@@ -119,6 +119,9 @@ bool CWLOutputProtocol::isDefunct() {
|
||||
}
|
||||
|
||||
void CWLOutputProtocol::sendDone() {
|
||||
if (defunct)
|
||||
return;
|
||||
|
||||
for (auto const& r : m_vOutputs) {
|
||||
r->resource->sendDone();
|
||||
}
|
||||
|
Reference in New Issue
Block a user