fix(xrandr): Ignore harmless extension errors

Closes jaagr/lemonbuddy#106
This commit is contained in:
Michael Carlberg 2016-10-18 17:31:56 +02:00
parent 65b921ecd9
commit 5323167b1e

View File

@ -38,26 +38,26 @@ namespace randr_util {
auto outputs = conn.get_screen_resources(root).outputs(); auto outputs = conn.get_screen_resources(root).outputs();
for (auto it = outputs.begin(); it != outputs.end(); it++) { for (auto it = outputs.begin(); it != outputs.end(); it++) {
auto info = conn.get_output_info(*it); try {
auto info = conn.get_output_info(*it);
if (info->connection != XCB_RANDR_CONNECTION_CONNECTED) if (info->connection != XCB_RANDR_CONNECTION_CONNECTED)
continue; continue;
auto crtc = conn.get_crtc_info(info->crtc);
auto crtc = conn.get_crtc_info(info->crtc); string name{info.name().begin(), info.name().end()};
string name{info.name().begin(), info.name().end()}; monitors.emplace_back(make_monitor(name, crtc->width, crtc->height, crtc->x, crtc->y));
} catch (const xpp::randr::error::bad_crtc&) {
monitors.emplace_back(make_monitor(name, crtc->width, crtc->height, crtc->x, crtc->y)); } catch (const xpp::randr::error::bad_output&) {
}
} }
// use the same sort algo as lemonbar, to match the defaults // use the same sort algo as lemonbar, to match the defaults
sort(monitors.begin(), monitors.end(), sort(monitors.begin(), monitors.end(), [](monitor_t& m1, monitor_t& m2) -> bool {
[](monitor_t& m1, monitor_t& m2) -> bool { if (m1->x < m2->x || m1->y + m1->h <= m2->y)
if (m1->x < m2->x || m1->y + m1->h <= m2->y) return 1;
return 1; if (m1->x > m2->x || m1->y + m1->h > m2->y)
if (m1->x > m2->x || m1->y + m1->h > m2->y) return -1;
return -1; return 0;
return 0; });
});
return monitors; return monitors;
} }