Abort when we don't have permission for either input or x11 display

This commit is contained in:
loki
2020-01-18 11:10:39 +01:00
parent a104862830
commit 19f3bc3a5b
3 changed files with 19 additions and 5 deletions

View File

@@ -134,7 +134,15 @@ void blend_cursor(Display *display, std::uint8_t *img_data, int width, int heigh
}
}
struct x11_attr_t : public display_t {
x11_attr_t() : xdisplay {XOpenDisplay(nullptr) }, xwindow {DefaultRootWindow(xdisplay.get()) }, xattr {} {
x11_attr_t() : xdisplay {XOpenDisplay(nullptr) }, xwindow { }, xattr {} {
if(!xdisplay) {
BOOST_LOG(fatal) << "Could not open x11 display"sv;
log_flush();
std::abort();
}
xwindow = DefaultRootWindow(xdisplay.get());
refresh();
}

View File

@@ -421,16 +421,22 @@ input_t input() {
auto &gp = *(input_raw_t*)result.get();
gp.keyboard.reset(XOpenDisplay(nullptr));
// If we do not have a keyboard, gamepad or mouse, no input is possible and we should abort
if(!gp.keyboard) {
return nullptr;
BOOST_LOG(fatal) << "Could not open x11 display for keyboard"sv;
log_flush();
std::abort();
}
if(gamepad(gp)) {
return nullptr;
log_flush();
std::abort();
}
if(mouse(gp)) {
return nullptr;
log_flush();
std::abort();
}
std::filesystem::path mouse_path { "sunshine_mouse" };