summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drmmode_display.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 7c1d2bb..2ca1dba 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -410,12 +410,15 @@ drmmode_fbcon_copy(ScreenPtr pScreen)
fallback:
if (pdpix) {
- pNv->EXADriverPtr->PrepareSolid(pdpix, GXclear, ~0, 0);
- pNv->EXADriverPtr->Solid(pdpix, 0, 0, w, h);
- pNv->EXADriverPtr->DoneSolid(pdpix);
- nouveau_bo_wait(pNv->scanout, NOUVEAU_BO_RDWR, pNv->client);
+ if (exa->PrepareSolid(pdpix, GXclear, ~0, 0)) {
+ exa->Solid(pdpix, 0, 0, w, h);
+ exa->DoneSolid(pdpix);
+ PUSH_KICK(pNv->pushbuf);
+ nouveau_bo_wait(pNv->scanout, NOUVEAU_BO_RDWR, pNv->client);
+ pScreen->DestroyPixmap(pdpix);
+ return;
+ }
pScreen->DestroyPixmap(pdpix);
- return;
}
#endif
if (nouveau_bo_map(pNv->scanout, NOUVEAU_BO_WR, pNv->client))