fix(client): unsubscribe after receiving xdg_output.done event
Ignore any further xdg_output events. Name and description are constant for the lifetime of wl_output in xdg-output-unstable-v1 version 2 and we don't need other properties. Fixes #990.
This commit is contained in:
parent
ab0f2c13af
commit
7fa1c11833
|
@ -123,14 +123,14 @@ void waybar::Client::handleOutputDone(void *data, struct zxdg_output_v1 * /*xdg_
|
||||||
spdlog::debug("Output detection done: {} ({})", output.name, output.identifier);
|
spdlog::debug("Output detection done: {} ({})", output.name, output.identifier);
|
||||||
|
|
||||||
auto configs = client->getOutputConfigs(output);
|
auto configs = client->getOutputConfigs(output);
|
||||||
if (configs.empty()) {
|
if (!configs.empty()) {
|
||||||
output.xdg_output.reset();
|
|
||||||
} else {
|
|
||||||
wl_display_roundtrip(client->wl_display);
|
wl_display_roundtrip(client->wl_display);
|
||||||
for (const auto &config : configs) {
|
for (const auto &config : configs) {
|
||||||
client->bars.emplace_back(std::make_unique<Bar>(&output, config));
|
client->bars.emplace_back(std::make_unique<Bar>(&output, config));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// unsubscribe
|
||||||
|
output.xdg_output.reset();
|
||||||
} catch (const std::exception &e) {
|
} catch (const std::exception &e) {
|
||||||
std::cerr << e.what() << std::endl;
|
std::cerr << e.what() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue