/** Call before exiting. */ void awesome_atexit(bool restart) { int screen_nbr, nscreens; if(globalconf.hooks.exit != LUA_REFNIL) luaA_dofunction_from_registry(globalconf.L, globalconf.hooks.exit, 0, 0); lua_pushboolean(globalconf.L, restart); signal_object_emit(globalconf.L, &global_signals, "exit", 1); a_dbus_cleanup(); /* do this only for real screen */ const xcb_setup_t *setup = xcb_get_setup(globalconf.connection); nscreens = setup ? xcb_setup_roots_length(setup) : -1; for(screen_nbr = 0; screen_nbr < nscreens; screen_nbr++) systray_cleanup(0, screen_nbr); //FIXME: Clean physical screens /* Close Lua */ lua_close(globalconf.L); xcb_flush(globalconf.connection); /* Disconnect *after* closing lua */ xcb_disconnect(globalconf.connection); ev_default_destroy(); }
/** Call before exiting. */ void awesome_atexit(bool restart) { lua_pushboolean(globalconf.L, restart); signal_object_emit(globalconf.L, &global_signals, "exit", 1); a_dbus_cleanup(); systray_cleanup(); /* Close Lua */ lua_close(globalconf.L); xcb_flush(globalconf.connection); /* Disconnect *after* closing lua */ xcb_disconnect(globalconf.connection); ev_default_destroy(); }