diff options
author | Dave Airlie <airlied@redhat.com> | 2011-12-22 16:48:59 +0000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2011-12-22 16:48:59 +0000 |
commit | def3dd44469cb4f074788cd542497a3ed67b34a2 (patch) | |
tree | 8f7dfded36df53ddfb00bac4295321c038ea6e40 | |
parent | 689ddb6fcd5d8735e41a97fb6eafe1a82008acd3 (diff) |
add stop tracking supportdrvmodel
-rw-r--r-- | src/nv_drv_driver.c | 15 |
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; + } |