mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-26 01:05:58 +01:00
parent
ac658500fb
commit
bc299928ad
3 changed files with 9 additions and 2 deletions
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue