From def3dd44469cb4f074788cd542497a3ed67b34a2 Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Thu, 22 Dec 2011 16:48:59 +0000 Subject: add stop tracking support --- src/nv_drv_driver.c | 15 +++++++++++++-- 1 file 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; + } -- cgit v1.2.3