- get_resources ();
- hack_uid_warn ();
- hack_environment ();
- XA_VROOT = XInternAtom (dpy, "__SWM_VROOT", False);
- XA_SCREENSAVER = XInternAtom (dpy, "SCREENSAVER", False);
- XA_SCREENSAVER_VERSION = XInternAtom (dpy, "_SCREENSAVER_VERSION", False);
- XA_SCREENSAVER_ID = XInternAtom (dpy, "_SCREENSAVER_ID", False);
- XA_XSETROOT_ID = XInternAtom (dpy, "_XSETROOT_ID", False);
- XA_ACTIVATE = XInternAtom (dpy, "ACTIVATE", False);
- XA_DEACTIVATE = XInternAtom (dpy, "DEACTIVATE", False);
- XA_RESTART = XInternAtom (dpy, "RESTART", False);
- XA_CYCLE = XInternAtom (dpy, "CYCLE", False);
- XA_NEXT = XInternAtom (dpy, "NEXT", False);
- XA_PREV = XInternAtom (dpy, "PREV", False);
- XA_EXIT = XInternAtom (dpy, "EXIT", False);
- XA_DEMO = XInternAtom (dpy, "DEMO", False);
- XA_LOCK = XInternAtom (dpy, "LOCK", False);
+ get_resources (si);
+#ifndef NO_SETUID
+ hack_uid_warn (si);
+#endif /* NO_SETUID */
+ XA_VROOT = XInternAtom (si->dpy, "__SWM_VROOT", False);
+ XA_SCREENSAVER = XInternAtom (si->dpy, "SCREENSAVER", False);
+ XA_SCREENSAVER_VERSION = XInternAtom (si->dpy, "_SCREENSAVER_VERSION",False);
+ XA_SCREENSAVER_ID = XInternAtom (si->dpy, "_SCREENSAVER_ID", False);
+ XA_SCREENSAVER_TIME = XInternAtom (si->dpy, "_SCREENSAVER_TIME", False);
+ XA_XSETROOT_ID = XInternAtom (si->dpy, "_XSETROOT_ID", False);
+ XA_ACTIVATE = XInternAtom (si->dpy, "ACTIVATE", False);
+ XA_DEACTIVATE = XInternAtom (si->dpy, "DEACTIVATE", False);
+ XA_RESTART = XInternAtom (si->dpy, "RESTART", False);
+ XA_CYCLE = XInternAtom (si->dpy, "CYCLE", False);
+ XA_NEXT = XInternAtom (si->dpy, "NEXT", False);
+ XA_PREV = XInternAtom (si->dpy, "PREV", False);
+ XA_EXIT = XInternAtom (si->dpy, "EXIT", False);
+ XA_DEMO = XInternAtom (si->dpy, "DEMO", False);
+ XA_LOCK = XInternAtom (si->dpy, "LOCK", False);
+
+ si->nscreens = ScreenCount(si->dpy);
+ si->screens = (saver_screen_info *)
+ calloc(sizeof(saver_screen_info), si->nscreens);
+
+ si->default_screen = &si->screens[DefaultScreen(si->dpy)];
+
+ for (i = 0; i < si->nscreens; i++)
+ {
+ saver_screen_info *ssi = &si->screens[i];
+ ssi->global = si;
+ ssi->screen = ScreenOfDisplay (si->dpy, i);
+
+ /* Note: we can't use the resource ".visual" because Xt is SO FUCKED. */
+ ssi->default_visual =
+ get_visual_resource (ssi->screen, "visualID", "VisualID", False);
+
+ ssi->current_visual = ssi->default_visual;
+ ssi->current_depth = visual_depth (ssi->screen, ssi->current_visual);
+
+ if (ssi == si->default_screen)
+ /* Since this is the default screen, use the one already created. */
+ ssi->toplevel_shell = toplevel_shell;
+ else
+ /* Otherwise, each screen must have its own unmapped root widget. */
+ ssi->toplevel_shell =
+ XtVaAppCreateShell(progname, progclass, applicationShellWidgetClass,
+ si->dpy,
+ XtNscreen, ssi->screen,
+ XtNvisual, ssi->current_visual,
+ XtNdepth, visual_depth(ssi->screen,
+ ssi->current_visual),
+ 0);
+ }