summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nv_drv_driver.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/nv_drv_driver.c b/src/nv_drv_driver.c
index 9766e23..6d51cbd 100644
--- a/src/nv_drv_driver.c
+++ b/src/nv_drv_driver.c
@@ -540,7 +540,8 @@ static void nouveau_drv_start_pixmap_tracking(DrvPixmapPtr dst, DrvPixmapPtr src
{
DrvScreenPtr drvscreen = src->pDrvScreen;
DrvScrnInfoPtr drvscrn = XF86DRVSCRNINFO(drvscreen);
- NVPtr pNv = NVPTR(drvscrn);
+ NVPtr pNv = NVPTR(drvscrn);
+
pNv->dirty.dst = dst;
pNv->dirty.src = src;
pNv->dirty.x = x;
@@ -553,7 +554,16 @@ static void nouveau_drv_start_pixmap_tracking(DrvPixmapPtr dst, DrvPixmapPtr src
src->pDrvScreen);
DrvDamageRegister(src, pNv->dirty.damage);
+}
+
+static void nouveau_drv_stop_pixmap_tracking(DrvPixmapPtr pix)
+{
+ DrvScreenPtr drvscreen = pix->pDrvScreen;
+ DrvScrnInfoPtr drvscrn = XF86DRVSCRNINFO(drvscreen);
+ NVPtr pNv = NVPTR(drvscrn);
+ if (pNv->dirty.damage)
+ DrvDamageUnregister(pix, pNv->dirty.damage);
}
static Bool nouveau_drv_screen_init(DrvScrnInfoPtr drvscrn)
@@ -642,6 +652,7 @@ static Bool nouveau_drv_screen_init(DrvScrnInfoPtr drvscrn)
drvscreen->CreateScreenResources = nouveau_drv_create_screen_resources;
drvscreen->StartPixmapTracking = nouveau_drv_start_pixmap_tracking;
+ drvscreen->StopPixmapTracking = nouveau_drv_stop_pixmap_tracking;
drmmode_drv_screen_init(drvscreen);
return TRUE;
}
@@ -665,7 +676,7 @@ void nouveau_init_drvscrn(DrvScrnInfoPtr drvscrn)
drvscrn->PreInit = nouveau_drv_pre_init;
drvscrn->ScreenInit = nouveau_drv_screen_init;
drvscrn->FreeDrvScreen = nouveau_drv_free_screen;
-
drvscrn->roles = DRV_ROLE_MASTER_PREFER | DRV_ROLE_SLAVE_OFFLOAD;
+
}