Store desktop dimensions in screenInfo.

For Zaphod mode screen crossing handling we need to know the size of all
screens together (i.e. the whole desktop size). Store that in the screenInfo to
have it readily available in events.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer
2011-09-07 14:04:10 +10:00
parent 9cbfa4739a
commit 8bebb4b489
8 changed files with 142 additions and 0 deletions

View File

@@ -628,6 +628,30 @@ point_on_screen(ScreenPtr pScreen, int x, int y)
}
/**
* Update desktop dimensions on the screenInfo struct.
*/
void
update_desktop_dimensions(void)
{
int i;
int x1 = INT_MAX, y1 = INT_MAX; /* top-left */
int x2 = INT_MIN, y2 = INT_MIN; /* bottom-right */
for (i = 0; i < screenInfo.numScreens; i++) {
ScreenPtr screen = screenInfo.screens[i];
x1 = min(x1, screen->x);
y1 = min(y1, screen->y);
x2 = max(x2, screen->x + screen->width);
y2 = max(y2, screen->y + screen->height);
}
screenInfo.x = x1;
screenInfo.y = y1;
screenInfo.width = x2 - x1;
screenInfo.height = y2 - y1;
}
/*
* Delete the element with the key from the list, freeing all memory
* associated with the element..
*/