🥅 Clean exit if XOpenDisplay fails
This commit is contained in:
parent
e2830d6659
commit
599610fd6f
1 changed files with 10 additions and 5 deletions
|
@ -17,14 +17,20 @@
|
|||
Aswm _aswm;
|
||||
|
||||
void aswm_open(const char* zlog_conf) {
|
||||
atexit(aswm_close);
|
||||
|
||||
set_up_logger(zlog_conf);
|
||||
|
||||
XSetErrorHandler(aswm_error_handler);
|
||||
|
||||
_aswm.display = XOpenDisplay(NULL);
|
||||
_aswm.desktops = malloc(0);
|
||||
_aswm.desktops_count = 0;
|
||||
|
||||
XSetErrorHandler(aswm_error_handler);
|
||||
|
||||
if(_aswm.display == NULL) {
|
||||
aswm_error("Cannot open X Display. Check the DISPLAY environement variable, and ensure an X server is running for the corresponding DISPLAY.");
|
||||
exit(1);
|
||||
}
|
||||
Window x_root_window = DefaultRootWindow(_aswm.display);
|
||||
XWindowAttributes x_root_attributes;
|
||||
XGetWindowAttributes(_aswm.display, x_root_window, &x_root_attributes);
|
||||
|
@ -50,8 +56,6 @@ void aswm_open(const char* zlog_conf) {
|
|||
aswm_debug("ASWM Root window %lu", _aswm.root_window);
|
||||
|
||||
aswm_log_tree(aswm_debug, &_aswm, DefaultRootWindow(_aswm.display), 1);
|
||||
|
||||
atexit(aswm_close);
|
||||
}
|
||||
|
||||
void aswm_create_workspace() {
|
||||
|
@ -153,6 +157,7 @@ void aswm_event_loop() {
|
|||
void aswm_close() {
|
||||
free(_aswm.desktops);
|
||||
tear_down_logger();
|
||||
if(_aswm.display != NULL)
|
||||
XCloseDisplay(_aswm.display);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue