- int n;
- XineramaScreenInfo *info = NULL;
- if (XineramaIsActive(win->sys->dpy))
- info = XineramaQueryScreens(win->sys->dpy, &n);
- if (!info) {
- win_t *screen = new0(win_t);
- *screen = *win;
- return list_insert(NULL, screen);
- }
- list_t *screens = NULL;
- for (int i = 0; i < n; i++) {
- win_t *screen = new0(win_t);
- screen->x = info[i].x_org;
- screen->y = info[i].y_org;
- screen->w = info[i].width;
- screen->h = info[i].height;
- screens = list_append(screens, screen);
+ /* Use global copy of screens so we can add struts */
+ if (screens == NULL) {
+ int n;
+ XineramaScreenInfo *info = NULL;
+ if (XineramaIsActive(win->sys->dpy))
+ info = XineramaQueryScreens(win->sys->dpy, &n);
+ if (!info) {
+ win_t *screen = new0(win_t);
+ *screen = *win;
+ return list_insert(NULL, screen);
+ }
+ for (int i = 0; i < n; i++) {
+ win_t *screen = new0(win_t);
+ screen->x = info[i].x_org;
+ screen->y = info[i].y_org;
+ screen->w = info[i].width;
+ screen->h = info[i].height;
+ screens = list_append(screens, screen);
+ }