xvmc: move some i915 context destroy code to generic function

This commit is contained in:
Zhenyu Wang 2007-11-16 15:49:10 +08:00
parent 7bfbcb4dc7
commit a03a758db0
2 changed files with 16 additions and 16 deletions

View File

@ -1612,23 +1612,10 @@ static void i915_release_resource(Display *display, XvMCContext *context)
driDestroyHashContents(pI915XvMC->drawHash);
drmHashDestroy(pI915XvMC->drawHash);
pthread_mutex_destroy(&xvmc_driver->ctxmutex);
XLockDisplay(display);
uniDRIDestroyContext(display, screen, pI915XvMC->id);
XUnlockDisplay(display);
drmUnmap(xvmc_driver->sarea_address, xvmc_driver->sarea_size);
if (xvmc_driver->fd >= 0)
drmClose(xvmc_driver->fd);
xvmc_driver->fd = -1;
XLockDisplay(display);
uniDRICloseConnection(display, screen);
_xvmc_destroy_context(display, context);
XUnlockDisplay(display);
free(pI915XvMC);
context->privData = NULL;
}

View File

@ -256,6 +256,7 @@ Status XvMCCreateContext(Display *display, XvPortID port,
Status XvMCDestroyContext(Display *display, XvMCContext *context)
{
Status ret;
int screen = DefaultScreen(display);
if (!display || !context)
return XvMCBadContext;
@ -266,9 +267,21 @@ Status XvMCDestroyContext(Display *display, XvMCContext *context)
return ret;
}
/* Pass Control to the X server to destroy the drm_context_t */
//XXX move generic destroy method here
//i915_release_resource(display,context);
ret = _xvmc_destroy_context(display, context);
if (ret != Success) {
XVMC_ERR("_xvmc_destroy_context fail\n");
return ret;
}
uniDRICloseConnection(display, screen);
pthread_mutex_destroy(&xvmc_driver->ctxmutex);
drmUnmap(xvmc_driver->sarea_address, xvmc_driver->sarea_size);
if (xvmc_driver->fd >= 0)
drmClose(xvmc_driver->fd);
xvmc_driver->fd = -1;
intelFiniBatchBuffer();
return Success;
}