xf86: call enter/leave VT for gpu screens as well
Otherwise we can't do fast user switch properly for multiple GPUs. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
parent
18deac48db
commit
0db936a5b7
@ -460,6 +460,8 @@ xf86VTSwitch(void)
|
|||||||
OsBlockSIGIO();
|
OsBlockSIGIO();
|
||||||
for (i = 0; i < xf86NumScreens; i++)
|
for (i = 0; i < xf86NumScreens; i++)
|
||||||
xf86Screens[i]->LeaveVT(xf86Screens[i]);
|
xf86Screens[i]->LeaveVT(xf86Screens[i]);
|
||||||
|
for (i = 0; i < xf86NumGPUScreens; i++)
|
||||||
|
xf86GPUScreens[i]->LeaveVT(xf86GPUScreens[i]);
|
||||||
|
|
||||||
xf86AccessLeave(); /* We need this here, otherwise */
|
xf86AccessLeave(); /* We need this here, otherwise */
|
||||||
|
|
||||||
@ -474,6 +476,10 @@ xf86VTSwitch(void)
|
|||||||
if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
|
if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
|
||||||
FatalError("EnterVT failed for screen %d\n", i);
|
FatalError("EnterVT failed for screen %d\n", i);
|
||||||
}
|
}
|
||||||
|
for (i = 0; i < xf86NumGPUScreens; i++) {
|
||||||
|
if (!xf86GPUScreens[i]->EnterVT(xf86GPUScreens[i]))
|
||||||
|
FatalError("EnterVT failed for gpu screen %d\n", i);
|
||||||
|
}
|
||||||
if (!(dispatchException & DE_TERMINATE)) {
|
if (!(dispatchException & DE_TERMINATE)) {
|
||||||
for (i = 0; i < xf86NumScreens; i++) {
|
for (i = 0; i < xf86NumScreens; i++) {
|
||||||
if (xf86Screens[i]->EnableDisableFBAccess)
|
if (xf86Screens[i]->EnableDisableFBAccess)
|
||||||
@ -530,6 +536,11 @@ xf86VTSwitch(void)
|
|||||||
if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
|
if (!xf86Screens[i]->EnterVT(xf86Screens[i]))
|
||||||
FatalError("EnterVT failed for screen %d\n", i);
|
FatalError("EnterVT failed for screen %d\n", i);
|
||||||
}
|
}
|
||||||
|
for (i = 0; i < xf86NumGPUScreens; i++) {
|
||||||
|
xf86GPUScreens[i]->vtSema = TRUE;
|
||||||
|
if (!xf86GPUScreens[i]->EnterVT(xf86GPUScreens[i]))
|
||||||
|
FatalError("EnterVT failed for gpu screen %d\n", i);
|
||||||
|
}
|
||||||
for (i = 0; i < xf86NumScreens; i++) {
|
for (i = 0; i < xf86NumScreens; i++) {
|
||||||
if (xf86Screens[i]->EnableDisableFBAccess)
|
if (xf86Screens[i]->EnableDisableFBAccess)
|
||||||
(*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], TRUE);
|
(*xf86Screens[i]->EnableDisableFBAccess) (xf86Screens[i], TRUE);
|
||||||
|
Loading…
Reference in New Issue
Block a user