diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c index aa17a58fd..058d09f56 100644 --- a/hw/xfree86/common/xf86Init.c +++ b/hw/xfree86/common/xf86Init.c @@ -920,6 +920,9 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv) #endif } + for (i = 0; i < xf86NumGPUScreens; i++) + AttachUnboundGPU(xf86Screens[0]->pScreen, xf86GPUScreens[i]->pScreen); + xf86VGAarbiterWrapFunctions(); OsReleaseSIGIO(); diff --git a/hw/xfree86/modes/xf86Crtc.c b/hw/xfree86/modes/xf86Crtc.c index a2cd85652..0bf14eb5c 100644 --- a/hw/xfree86/modes/xf86Crtc.c +++ b/hw/xfree86/modes/xf86Crtc.c @@ -736,6 +736,11 @@ xf86CrtcCloseScreen(ScreenPtr screen) crtc->randr_crtc = NULL; } + /* detach any providers */ + if (config->randr_provider) { + if (screen->current_master) + DetachUnboundGPU(screen); + } xf86RandR12CloseScreen(screen); free(config->name);