diff options
| author | nikromen <70757578+nikromen@users.noreply.github.com> | 2025-11-09 00:45:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-08 23:45:53 +0000 |
| commit | 06b37c390715e05f852076a8d1160e27c5cd291c (patch) | |
| tree | b6bdf21fbf5c2e59720122fe8e077c42d70fcd2f /src/protocols/OutputManagement.hpp | |
| parent | 522edc87126a48f3ce4891747b6a92a22385b1e7 (diff) | |
protocols/outputMgmt: fix wlr-randr by defering success event until monitor reloads (#12236)
wlr-randr disconnects immediately after receiving success event, but
before applying the monitor configuration. This causes the state to be
lost when performMonitorReload() is called.
By postponing the success event until the call of the hook
monitorLayoutChanged we ensure the configuration to remain valid during
the reload process.
Diffstat (limited to 'src/protocols/OutputManagement.hpp')
| -rw-r--r-- | src/protocols/OutputManagement.hpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/protocols/OutputManagement.hpp b/src/protocols/OutputManagement.hpp index cb03661e..f26e9c91 100644 --- a/src/protocols/OutputManagement.hpp +++ b/src/protocols/OutputManagement.hpp @@ -141,8 +141,12 @@ class COutputConfiguration { SP<CZwlrOutputConfigurationV1> m_resource; std::vector<WP<COutputConfigurationHead>> m_heads; WP<COutputManager> m_owner; + WP<COutputConfiguration> m_self; bool applyTestConfiguration(bool test); + + friend class COutputManagementProtocol; + friend class COutputManager; }; class COutputManagementProtocol : public IWaylandProtocol { @@ -154,6 +158,8 @@ class COutputManagementProtocol : public IWaylandProtocol { // doesn't have to return one SP<SWlrManagerSavedOutputState> getOutputStateFor(PHLMONITOR pMonitor); + void sendPendingSuccessEvents(); + private: void destroyResource(COutputManager* resource); void destroyResource(COutputHead* resource); @@ -169,6 +175,7 @@ class COutputManagementProtocol : public IWaylandProtocol { std::vector<SP<COutputMode>> m_modes; std::vector<SP<COutputConfiguration>> m_configurations; std::vector<SP<COutputConfigurationHead>> m_configurationHeads; + std::vector<WP<COutputConfiguration>> m_pendingConfigurationSuccessEvents; SP<COutputHead> headFromResource(wl_resource* r); SP<COutputMode> modeFromResource(wl_resource* r); |
