Fixed segfault w/ broken Xinerama configs.
This commit is contained in:
parent
a815b9b990
commit
73e58adda9
|
@ -576,24 +576,40 @@ xf86InitOrigins(void)
|
||||||
/* force edge lists */
|
/* force edge lists */
|
||||||
if(screen->left) {
|
if(screen->left) {
|
||||||
ref = screen->left->screennum;
|
ref = screen->left->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
pLayout->left = AddEdge(pLayout->left,
|
pLayout->left = AddEdge(pLayout->left,
|
||||||
0, xf86Screens[i]->pScreen->height,
|
0, xf86Screens[i]->pScreen->height,
|
||||||
xf86Screens[ref]->pScreen->width, 0, ref);
|
xf86Screens[ref]->pScreen->width, 0, ref);
|
||||||
}
|
}
|
||||||
if(screen->right) {
|
if(screen->right) {
|
||||||
ref = screen->right->screennum;
|
ref = screen->right->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
pScreen = xf86Screens[i]->pScreen;
|
pScreen = xf86Screens[i]->pScreen;
|
||||||
pLayout->right = AddEdge(pLayout->right,
|
pLayout->right = AddEdge(pLayout->right,
|
||||||
0, pScreen->height, -pScreen->width, 0, ref);
|
0, pScreen->height, -pScreen->width, 0, ref);
|
||||||
}
|
}
|
||||||
if(screen->top) {
|
if(screen->top) {
|
||||||
ref = screen->top->screennum;
|
ref = screen->top->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
pLayout->up = AddEdge(pLayout->up,
|
pLayout->up = AddEdge(pLayout->up,
|
||||||
0, xf86Screens[i]->pScreen->width,
|
0, xf86Screens[i]->pScreen->width,
|
||||||
0, xf86Screens[ref]->pScreen->height, ref);
|
0, xf86Screens[ref]->pScreen->height, ref);
|
||||||
}
|
}
|
||||||
if(screen->bottom) {
|
if(screen->bottom) {
|
||||||
ref = screen->bottom->screennum;
|
ref = screen->bottom->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
pScreen = xf86Screens[i]->pScreen;
|
pScreen = xf86Screens[i]->pScreen;
|
||||||
pLayout->down = AddEdge(pLayout->down,
|
pLayout->down = AddEdge(pLayout->down,
|
||||||
0, pScreen->width, 0, -pScreen->height, ref);
|
0, pScreen->width, 0, -pScreen->height, ref);
|
||||||
|
@ -609,6 +625,10 @@ xf86InitOrigins(void)
|
||||||
break;
|
break;
|
||||||
case PosRelative:
|
case PosRelative:
|
||||||
ref = screen->refscreen->screennum;
|
ref = screen->refscreen->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(screensLeft & (1 << ref)) break;
|
if(screensLeft & (1 << ref)) break;
|
||||||
dixScreenOrigins[i].x = dixScreenOrigins[ref].x + screen->x;
|
dixScreenOrigins[i].x = dixScreenOrigins[ref].x + screen->x;
|
||||||
dixScreenOrigins[i].y = dixScreenOrigins[ref].y + screen->y;
|
dixScreenOrigins[i].y = dixScreenOrigins[ref].y + screen->y;
|
||||||
|
@ -616,6 +636,10 @@ xf86InitOrigins(void)
|
||||||
break;
|
break;
|
||||||
case PosRightOf:
|
case PosRightOf:
|
||||||
ref = screen->refscreen->screennum;
|
ref = screen->refscreen->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(screensLeft & (1 << ref)) break;
|
if(screensLeft & (1 << ref)) break;
|
||||||
pScreen = xf86Screens[ref]->pScreen;
|
pScreen = xf86Screens[ref]->pScreen;
|
||||||
dixScreenOrigins[i].x =
|
dixScreenOrigins[i].x =
|
||||||
|
@ -625,6 +649,10 @@ xf86InitOrigins(void)
|
||||||
break;
|
break;
|
||||||
case PosLeftOf:
|
case PosLeftOf:
|
||||||
ref = screen->refscreen->screennum;
|
ref = screen->refscreen->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(screensLeft & (1 << ref)) break;
|
if(screensLeft & (1 << ref)) break;
|
||||||
pScreen = xf86Screens[i]->pScreen;
|
pScreen = xf86Screens[i]->pScreen;
|
||||||
dixScreenOrigins[i].x =
|
dixScreenOrigins[i].x =
|
||||||
|
@ -634,6 +662,10 @@ xf86InitOrigins(void)
|
||||||
break;
|
break;
|
||||||
case PosBelow:
|
case PosBelow:
|
||||||
ref = screen->refscreen->screennum;
|
ref = screen->refscreen->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(screensLeft & (1 << ref)) break;
|
if(screensLeft & (1 << ref)) break;
|
||||||
pScreen = xf86Screens[ref]->pScreen;
|
pScreen = xf86Screens[ref]->pScreen;
|
||||||
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
|
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
|
||||||
|
@ -643,6 +675,10 @@ xf86InitOrigins(void)
|
||||||
break;
|
break;
|
||||||
case PosAbove:
|
case PosAbove:
|
||||||
ref = screen->refscreen->screennum;
|
ref = screen->refscreen->screennum;
|
||||||
|
if (! xf86Screens[ref] || ! xf86Screens[ref]->pScreen) {
|
||||||
|
ErrorF("Referenced uninitialized screen in Layout!\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
if(screensLeft & (1 << ref)) break;
|
if(screensLeft & (1 << ref)) break;
|
||||||
pScreen = xf86Screens[i]->pScreen;
|
pScreen = xf86Screens[i]->pScreen;
|
||||||
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
|
dixScreenOrigins[i].x = dixScreenOrigins[ref].x;
|
||||||
|
|
Loading…
Reference in New Issue