diff options
Diffstat (limited to 'hw/xfree86/common/xf86xvmc.c')
-rw-r--r-- | hw/xfree86/common/xf86xvmc.c | 218 |
1 files changed, 105 insertions, 113 deletions
diff --git a/hw/xfree86/common/xf86xvmc.c b/hw/xfree86/common/xf86xvmc.c index e6464a582..e58465289 100644 --- a/hw/xfree86/common/xf86xvmc.c +++ b/hw/xfree86/common/xf86xvmc.c @@ -47,103 +47,94 @@ XvMCScreenInitProcPtr XvMCScreenInitProc = NULL; - typedef struct { - CloseScreenProcPtr CloseScreen; - int num_adaptors; - XF86MCAdaptorPtr *adaptors; - XvMCAdaptorPtr dixinfo; + CloseScreenProcPtr CloseScreen; + int num_adaptors; + XF86MCAdaptorPtr *adaptors; + XvMCAdaptorPtr dixinfo; } xf86XvMCScreenRec, *xf86XvMCScreenPtr; static DevPrivateKeyRec XF86XvMCScreenKeyRec; + #define XF86XvMCScreenKey (&XF86XvMCScreenKeyRec) #define XF86XVMC_GET_PRIVATE(pScreen) (xf86XvMCScreenPtr) \ dixLookupPrivate(&(pScreen)->devPrivates, XF86XvMCScreenKey) - -static int -xf86XvMCCreateContext ( - XvPortPtr pPort, - XvMCContextPtr pContext, - int *num_priv, - CARD32 **priv -) +static int +xf86XvMCCreateContext(XvPortPtr pPort, + XvMCContextPtr pContext, int *num_priv, CARD32 **priv) { xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen); ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum]; - pContext->port_priv = (XvPortRecPrivatePtr)(pPort->devPriv.ptr); + pContext->port_priv = (XvPortRecPrivatePtr) (pPort->devPriv.ptr); - return (*pScreenPriv->adaptors[pContext->adapt_num]->CreateContext)( - pScrn, pContext, num_priv, priv); + return (*pScreenPriv->adaptors[pContext->adapt_num]->CreateContext) (pScrn, + pContext, + num_priv, + priv); } -static void -xf86XvMCDestroyContext ( XvMCContextPtr pContext) +static void +xf86XvMCDestroyContext(XvMCContextPtr pContext) { xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen); ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum]; - (*pScreenPriv->adaptors[pContext->adapt_num]->DestroyContext)( - pScrn, pContext); + (*pScreenPriv->adaptors[pContext->adapt_num]->DestroyContext) (pScrn, + pContext); } -static int -xf86XvMCCreateSurface ( - XvMCSurfacePtr pSurface, - int *num_priv, - CARD32 **priv -) +static int +xf86XvMCCreateSurface(XvMCSurfacePtr pSurface, int *num_priv, CARD32 **priv) { XvMCContextPtr pContext = pSurface->context; xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen); ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum]; - return (*pScreenPriv->adaptors[pContext->adapt_num]->CreateSurface)( - pScrn, pSurface, num_priv, priv); + return (*pScreenPriv->adaptors[pContext->adapt_num]->CreateSurface) (pScrn, + pSurface, + num_priv, + priv); } -static void -xf86XvMCDestroySurface (XvMCSurfacePtr pSurface) +static void +xf86XvMCDestroySurface(XvMCSurfacePtr pSurface) { XvMCContextPtr pContext = pSurface->context; xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen); ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum]; - (*pScreenPriv->adaptors[pContext->adapt_num]->DestroySurface)( - pScrn, pSurface); + (*pScreenPriv->adaptors[pContext->adapt_num]->DestroySurface) (pScrn, + pSurface); } -static int -xf86XvMCCreateSubpicture ( - XvMCSubpicturePtr pSubpicture, - int *num_priv, - CARD32 **priv -) +static int +xf86XvMCCreateSubpicture(XvMCSubpicturePtr pSubpicture, + int *num_priv, CARD32 **priv) { XvMCContextPtr pContext = pSubpicture->context; xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen); ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum]; - return (*pScreenPriv->adaptors[pContext->adapt_num]->CreateSubpicture)( - pScrn, pSubpicture, num_priv, priv); + return (*pScreenPriv->adaptors[pContext->adapt_num]-> + CreateSubpicture) (pScrn, pSubpicture, num_priv, priv); } static void -xf86XvMCDestroySubpicture (XvMCSubpicturePtr pSubpicture) +xf86XvMCDestroySubpicture(XvMCSubpicturePtr pSubpicture) { XvMCContextPtr pContext = pSubpicture->context; xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pContext->pScreen); ScrnInfoPtr pScrn = xf86Screens[pContext->pScreen->myNum]; - (*pScreenPriv->adaptors[pContext->adapt_num]->DestroySubpicture)( - pScrn, pSubpicture); + (*pScreenPriv->adaptors[pContext->adapt_num]->DestroySubpicture) (pScrn, + pSubpicture); } - static Bool -xf86XvMCCloseScreen (int i, ScreenPtr pScreen) +xf86XvMCCloseScreen(int i, ScreenPtr pScreen) { xf86XvMCScreenPtr pScreenPriv = XF86XVMC_GET_PRIVATE(pScreen); @@ -152,81 +143,82 @@ xf86XvMCCloseScreen (int i, ScreenPtr pScreen) free(pScreenPriv->dixinfo); free(pScreenPriv); - return (*pScreen->CloseScreen)(i, pScreen); + return (*pScreen->CloseScreen) (i, pScreen); } -Bool xf86XvMCScreenInit( - ScreenPtr pScreen, - int num_adaptors, - XF86MCAdaptorPtr *adaptors -) +Bool +xf86XvMCScreenInit(ScreenPtr pScreen, + int num_adaptors, XF86MCAdaptorPtr * adaptors) { - XvMCAdaptorPtr pAdapt; - xf86XvMCScreenPtr pScreenPriv; - XvScreenPtr pxvs = (XvScreenPtr)dixLookupPrivate(&pScreen->devPrivates, - XF86XvScreenKey); - int i, j; - - if(!XvMCScreenInitProc) return FALSE; - - if(!(pAdapt = malloc(sizeof(XvMCAdaptorRec) * num_adaptors))) - return FALSE; - - if (!dixRegisterPrivateKey(&XF86XvMCScreenKeyRec, PRIVATE_SCREEN, 0)) - return FALSE; - - if(!(pScreenPriv = malloc(sizeof(xf86XvMCScreenRec)))) { - free(pAdapt); - return FALSE; - } - - dixSetPrivate(&pScreen->devPrivates, XF86XvMCScreenKey, pScreenPriv); - - pScreenPriv->CloseScreen = pScreen->CloseScreen; - pScreen->CloseScreen = xf86XvMCCloseScreen; - - pScreenPriv->num_adaptors = num_adaptors; - pScreenPriv->adaptors = adaptors; - pScreenPriv->dixinfo = pAdapt; - - for(i = 0; i < num_adaptors; i++) { - pAdapt[i].xv_adaptor = NULL; - for(j = 0; j < pxvs->nAdaptors; j++) { - if(!strcmp((*adaptors)->name, pxvs->pAdaptors[j].name)) { - pAdapt[i].xv_adaptor = &(pxvs->pAdaptors[j]); - break; - } - } - if(!pAdapt[i].xv_adaptor) { - /* no adaptor by that name */ - free(pAdapt); - return FALSE; - } - pAdapt[i].num_surfaces = (*adaptors)->num_surfaces; - pAdapt[i].surfaces = (XvMCSurfaceInfoPtr*)((*adaptors)->surfaces); - pAdapt[i].num_subpictures = (*adaptors)->num_subpictures; - pAdapt[i].subpictures = (XvImagePtr*)((*adaptors)->subpictures); - pAdapt[i].CreateContext = xf86XvMCCreateContext; - pAdapt[i].DestroyContext = xf86XvMCDestroyContext; - pAdapt[i].CreateSurface = xf86XvMCCreateSurface; - pAdapt[i].DestroySurface = xf86XvMCDestroySurface; - pAdapt[i].CreateSubpicture = xf86XvMCCreateSubpicture; - pAdapt[i].DestroySubpicture = xf86XvMCDestroySubpicture; - adaptors++; - } - - if(Success != (*XvMCScreenInitProc)(pScreen, num_adaptors, pAdapt)) - return FALSE; - - return TRUE; + XvMCAdaptorPtr pAdapt; + xf86XvMCScreenPtr pScreenPriv; + XvScreenPtr pxvs = (XvScreenPtr) dixLookupPrivate(&pScreen->devPrivates, + XF86XvScreenKey); + int i, j; + + if (!XvMCScreenInitProc) + return FALSE; + + if (!(pAdapt = malloc(sizeof(XvMCAdaptorRec) * num_adaptors))) + return FALSE; + + if (!dixRegisterPrivateKey(&XF86XvMCScreenKeyRec, PRIVATE_SCREEN, 0)) + return FALSE; + + if (!(pScreenPriv = malloc(sizeof(xf86XvMCScreenRec)))) { + free(pAdapt); + return FALSE; + } + + dixSetPrivate(&pScreen->devPrivates, XF86XvMCScreenKey, pScreenPriv); + + pScreenPriv->CloseScreen = pScreen->CloseScreen; + pScreen->CloseScreen = xf86XvMCCloseScreen; + + pScreenPriv->num_adaptors = num_adaptors; + pScreenPriv->adaptors = adaptors; + pScreenPriv->dixinfo = pAdapt; + + for (i = 0; i < num_adaptors; i++) { + pAdapt[i].xv_adaptor = NULL; + for (j = 0; j < pxvs->nAdaptors; j++) { + if (!strcmp((*adaptors)->name, pxvs->pAdaptors[j].name)) { + pAdapt[i].xv_adaptor = &(pxvs->pAdaptors[j]); + break; + } + } + if (!pAdapt[i].xv_adaptor) { + /* no adaptor by that name */ + free(pAdapt); + return FALSE; + } + pAdapt[i].num_surfaces = (*adaptors)->num_surfaces; + pAdapt[i].surfaces = (XvMCSurfaceInfoPtr *) ((*adaptors)->surfaces); + pAdapt[i].num_subpictures = (*adaptors)->num_subpictures; + pAdapt[i].subpictures = (XvImagePtr *) ((*adaptors)->subpictures); + pAdapt[i].CreateContext = xf86XvMCCreateContext; + pAdapt[i].DestroyContext = xf86XvMCDestroyContext; + pAdapt[i].CreateSurface = xf86XvMCCreateSurface; + pAdapt[i].DestroySurface = xf86XvMCDestroySurface; + pAdapt[i].CreateSubpicture = xf86XvMCCreateSubpicture; + pAdapt[i].DestroySubpicture = xf86XvMCDestroySubpicture; + adaptors++; + } + + if (Success != (*XvMCScreenInitProc) (pScreen, num_adaptors, pAdapt)) + return FALSE; + + return TRUE; } -XF86MCAdaptorPtr xf86XvMCCreateAdaptorRec (void) +XF86MCAdaptorPtr +xf86XvMCCreateAdaptorRec(void) { - return calloc(1, sizeof(XF86MCAdaptorRec)); + return calloc(1, sizeof(XF86MCAdaptorRec)); } -void xf86XvMCDestroyAdaptorRec(XF86MCAdaptorPtr adaptor) +void +xf86XvMCDestroyAdaptorRec(XF86MCAdaptorPtr adaptor) { - free(adaptor); + free(adaptor); } |