diff --git a/calmwm.c b/calmwm.c index 7fd7f90..419585d 100644 --- a/calmwm.c +++ b/calmwm.c @@ -45,6 +45,7 @@ struct conf Conf; static char gray_bits[] = {0x02, 0x01}; static void _sigchld_cb(int); +static void dpy_init(const char *); int main(int argc, char **argv) @@ -78,10 +79,11 @@ main(int argc, char **argv) group_init(); Starting = 1; + dpy_init(display_name); bzero(&Conf, sizeof(Conf)); conf_setup(&Conf, conf_file); client_setup(); - x_setup(display_name); + x_setup(); Starting = 0; xev_init(); @@ -106,21 +108,27 @@ main(int argc, char **argv) } void -x_setup(char *display_name) +dpy_init(const char *dpyname) { - struct screen_ctx *sc; - int i; + int i; - TAILQ_INIT(&Screenq); - - if ((X_Dpy = XOpenDisplay(display_name)) == NULL) + if ((X_Dpy = XOpenDisplay(dpyname)) == NULL) errx(1, "unable to open display \"%s\"", - XDisplayName(display_name)); + XDisplayName(dpyname)); XSetErrorHandler(x_errorhandler); Doshape = XShapeQueryExtension(X_Dpy, &Shape_ev, &i); + TAILQ_INIT(&Screenq); +} + +void +x_setup(void) +{ + struct screen_ctx *sc; + int i; + Nscreens = ScreenCount(X_Dpy); for (i = 0; i < (int)Nscreens; i++) { XMALLOC(sc, struct screen_ctx); diff --git a/calmwm.h b/calmwm.h index 93d99f7..91cce4b 100644 --- a/calmwm.h +++ b/calmwm.h @@ -309,7 +309,7 @@ int input_keycodetrans(KeyCode, u_int, enum ctltype *, char *); int x_errorhandler(Display *, XErrorEvent *); -void x_setup(char *display_name); +void x_setup(void); char *x_screenname(int); void x_setupscreen(struct screen_ctx *, u_int); __dead void usage(void);