Lines Matching defs:pViaXvMC
202 ViaXvMCContext *pViaXvMC = (ViaXvMCContext *) context->privData;
204 switch (pViaXvMC->resources) {
206 driDestroyHashContents(pViaXvMC->drawHash);
207 drmHashDestroy(pViaXvMC->drawHash);
209 closeXvMCLowLevel(pViaXvMC->xl);
211 pthread_mutex_destroy(&pViaXvMC->ctxMutex);
214 uniDRIDestroyContext(display, pViaXvMC->screen, pViaXvMC->id);
219 drmUnmap(pViaXvMC->sAreaAddress, pViaXvMC->sAreaSize);
222 drmUnmap(pViaXvMC->fbAddress, pViaXvMC->fbSize);
225 drmUnmap(pViaXvMC->mmioAddress, pViaXvMC->mmioSize);
228 if (pViaXvMC->fd >= 0)
229 drmClose(pViaXvMC->fd);
231 pViaXvMC->fd = -1;
235 uniDRICloseConnection(display, pViaXvMC->screen);
245 free(pViaXvMC);
256 ViaXvMCContext *pViaXvMC;
303 pViaXvMC = (ViaXvMCContext *) context->privData;
304 pViaXvMC->resources = context_none;
311 free(pViaXvMC);
348 pViaXvMC->resources = context_context;
358 pViaXvMC->ctxNo = tmpComm->ctxNo;
359 pViaXvMC->fbOffset = tmpComm->fbOffset;
360 pViaXvMC->fbSize = tmpComm->fbSize;
361 pViaXvMC->mmioOffset = tmpComm->mmioOffset;
362 pViaXvMC->mmioSize = tmpComm->mmioSize;
363 pViaXvMC->sAreaSize = tmpComm->sAreaSize;
364 pViaXvMC->sAreaPrivOffset = tmpComm->sAreaPrivOffset;
365 pViaXvMC->decoderOn = 0;
366 pViaXvMC->xvMCPort = tmpComm->xvmc_port;
367 pViaXvMC->useAGP = tmpComm->useAGP;
368 pViaXvMC->attrib = tmpComm->initAttrs;
369 pViaXvMC->screen = tmpComm->screen;
370 pViaXvMC->depth = tmpComm->depth;
371 pViaXvMC->stride = tmpComm->stride;
372 pViaXvMC->chipId = tmpComm->chipId;
391 uniDRIQueryDirectRenderingCapable(display, pViaXvMC->screen,
400 if (!uniDRIOpenConnection(display, pViaXvMC->screen,
401 &pViaXvMC->sAreaOffset, &curBusID)) {
408 strncpy(pViaXvMC->busIdString, curBusID, 20);
409 pViaXvMC->busIdString[20] = '\0';
412 pViaXvMC->resources = context_driConnection;
414 if ((pViaXvMC->fd = drmOpen("via", pViaXvMC->busIdString)) < 0) {
418 globalFD = pViaXvMC->fd;
419 pViaXvMC->resources = context_fd;
421 if (NULL == (drmVer = drmGetVersion(pViaXvMC->fd))) {
442 drmGetMagic(pViaXvMC->fd, &magic);
445 if (!uniDRIAuthConnection(display, pViaXvMC->screen, magic)) {
457 if (drmMap(pViaXvMC->fd, pViaXvMC->mmioOffset,
458 pViaXvMC->mmioSize, &mmioAddress) < 0) {
463 pViaXvMC->mmioAddress = mmioAddress;
464 pViaXvMC->resources = context_mmioMap;
470 if (drmMap(pViaXvMC->fd, pViaXvMC->fbOffset,
471 pViaXvMC->fbSize, &fbAddress) < 0) {
475 pViaXvMC->fbAddress = fbAddress;
476 pViaXvMC->resources = context_fbMap;
482 if (drmMap(pViaXvMC->fd, pViaXvMC->sAreaOffset,
483 pViaXvMC->sAreaSize, &sAreaAddress) < 0) {
488 pViaXvMC->fd = globalFD;
489 pViaXvMC->mmioAddress = mmioAddress;
490 pViaXvMC->fbAddress = fbAddress;
493 pViaXvMC->sAreaAddress = sAreaAddress;
494 pViaXvMC->resources = context_sAreaMap;
503 ret = XMatchVisualInfo(display, pViaXvMC->screen,
504 (pViaXvMC->depth == 32) ? 24 : pViaXvMC->depth, TrueColor,
505 &pViaXvMC->visualInfo);
513 if (!uniDRICreateContext(display, pViaXvMC->screen,
514 pViaXvMC->visualInfo.visual, &pViaXvMC->id,
515 &pViaXvMC->drmcontext)) {
521 pViaXvMC->resources = context_drmContext;
524 pViaXvMC->rendSurf[i] = 0;
526 pViaXvMC->lastSrfDisplaying = ~0;
527 setupAttribDesc(display, port, &pViaXvMC->attrib, pViaXvMC->attribDesc);
529 pViaXvMC->hwLock = (drmLockPtr) pViaXvMC->sAreaAddress;
530 defaultQMatrices(pViaXvMC);
531 pViaXvMC->chromaIntraLoaded = 1;
532 pViaXvMC->chromaNonIntraLoaded = 1;
533 pViaXvMC->yStride = (width + 31) & ~31;
534 pViaXvMC->haveDecoder = 0;
535 pViaXvMC->attribChanged = 1;
536 pViaXvMC->haveXv = 0;
537 pViaXvMC->port = context->port;
538 pthread_mutex_init(&pViaXvMC->ctxMutex, NULL);
539 pViaXvMC->resources = context_mutex;
540 pViaXvMC->timeStamp = 0;
541 setRegion(0, 0, -1, -1, pViaXvMC->sRegion);
542 setRegion(0, 0, -1, -1, pViaXvMC->dRegion);
544 if (NULL == (pViaXvMC->xl =
545 initXvMCLowLevel(pViaXvMC->fd, &pViaXvMC->drmcontext,
546 pViaXvMC->hwLock, pViaXvMC->mmioAddress,
547 pViaXvMC->fbAddress, pViaXvMC->stride, pViaXvMC->depth,
549 pViaXvMC->useAGP, pViaXvMC->chipId))) {
554 pViaXvMC->resources = context_lowLevel;
555 setAGPSyncLowLevel(pViaXvMC->xl, 1, 0);
557 if (NULL == (pViaXvMC->drawHash = drmHashCreate())) {
561 pViaXvMC->resources = context_drawHash;
564 hwlLock(pViaXvMC->xl, 1);
565 setLowLevelLocking(pViaXvMC->xl, 0);
566 viaVideoSubPictureOffLocked(pViaXvMC->xl);
567 flushXvMCLowLevel(pViaXvMC->xl);
568 setLowLevelLocking(pViaXvMC->xl, 1);
569 hwlUnlock(pViaXvMC->xl, 1);
578 ViaXvMCContext *pViaXvMC;
583 if (NULL == (pViaXvMC = context->privData)) {
592 releaseAttribDesc(pViaXvMC->attrib.numAttr, pViaXvMC->attribDesc);
593 releaseDecoder(pViaXvMC, 1);
601 ViaXvMCContext *pViaXvMC;
612 pViaXvMC = (ViaXvMCContext *) context->privData;
613 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
615 if (pViaXvMC == NULL) {
616 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
623 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
632 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
656 pViaSurface->yStride = pViaXvMC->yStride;
657 pViaSurface->privContext = pViaXvMC;
660 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
691 ViaXvMCContext *pViaXvMC;
697 if (NULL == (pViaXvMC = context->privData)) {
700 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
701 if (!pViaXvMC->haveDecoder) {
703 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
707 viaMpegWriteSlice(pViaXvMC->xl, (CARD8 *) slice, nBytes, sCode);
709 flushPCIXvMCLowLevel(pViaXvMC->xl);
710 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
718 ViaXvMCContext *pViaXvMC;
723 if (NULL == (pViaXvMC = context->privData)) {
726 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
728 if (!pViaXvMC->haveDecoder) {
730 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
734 viaMpegWriteSlice(pViaXvMC->xl, (CARD8 *) slice, nBytes, 0);
735 flushPCIXvMCLowLevel(pViaXvMC->xl);
736 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
741 updateXVOverlay(Display * display, ViaXvMCContext * pViaXvMC,
751 if (!pViaXvMC->haveXv) {
752 pViaXvMC->xvImage =
753 XvCreateImage(display, pViaXvMC->port, FOURCC_XVMC,
755 pViaXvMC->gc = XCreateGC(display, draw, 0, 0);
756 pViaXvMC->haveXv = 1;
758 pViaXvMC->draw = draw;
759 pViaXvMC->xvImage->data = (char *)&buf;
761 buf.command = (pViaXvMC->attribChanged) ?
763 buf.ctxNo = pViaXvMC->ctxNo | VIA_XVMC_VALID;
768 buf.attrib = pViaXvMC->attrib;
772 if ((ret = XvPutImage(display, pViaXvMC->port, draw, pViaXvMC->gc,
773 pViaXvMC->xvImage, srcx, srcy, srcw, srch,
780 pViaXvMC->attribChanged = 0;
803 ViaXvMCContext *pViaXvMC;
819 if (NULL == (pViaXvMC = pViaSurface->privContext)) {
823 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
825 sAPriv = SAREAPTR(pViaXvMC);
830 if ((!regionEqual(sReg, pViaXvMC->sRegion)) ||
831 (!regionEqual(dReg, pViaXvMC->dRegion))) {
837 pViaXvMC->sRegion = sReg;
838 pViaXvMC->dRegion = dReg;
842 hwlLock(pViaXvMC->xl, 1);
844 if (getDRIDrawableInfoLocked(pViaXvMC->drawHash, display,
845 pViaXvMC->screen, draw, 0, pViaXvMC->fd, pViaXvMC->drmcontext,
846 pViaXvMC->sAreaAddress, FALSE, &drawInfo, sizeof(*drawInfo))) {
848 hwlUnlock(pViaXvMC->xl, 1);
849 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
853 setLowLevelLocking(pViaXvMC->xl, 0);
860 dispSurface = sAPriv->XvMCDisplaying[pViaXvMC->xvMCPort];
861 lastSurface = pViaXvMC->lastSrfDisplaying;
862 sAPriv->XvMCDisplaying[pViaXvMC->xvMCPort] =
863 pViaXvMC->lastSrfDisplaying = pViaSurface->srfNo | VIA_XVMC_VALID;
866 viaVideoSetSWFLipLocked(pViaXvMC->xl, yOffs(pViaSurface),
873 flushPCIXvMCLowLevel(pViaXvMC->xl);
874 setLowLevelLocking(pViaXvMC->xl, 1);
875 hwlUnlock(pViaXvMC->xl, 1);
882 updateXVOverlay(display, pViaXvMC, pViaSurface, draw, srcx, srcy,
885 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
889 hwlLock(pViaXvMC->xl, 1);
891 if (getDRIDrawableInfoLocked(pViaXvMC->drawHash, display,
892 pViaXvMC->screen, draw, 0, pViaXvMC->fd, pViaXvMC->drmcontext,
893 pViaXvMC->sAreaAddress, FALSE, &drawInfo,
896 hwlUnlock(pViaXvMC->xl, 1);
897 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
901 setLowLevelLocking(pViaXvMC->xl, 0);
903 dispSurface = sAPriv->XvMCDisplaying[pViaXvMC->xvMCPort];
912 if (sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort]
914 sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] =
916 viaVideoSubPictureLocked(pViaXvMC->xl, pViaSubPic);
919 if (sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] & VIA_XVMC_VALID) {
920 viaVideoSubPictureOffLocked(pViaXvMC->xl);
921 sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] &= ~VIA_XVMC_VALID;
929 viaVideoSWFlipLocked(pViaXvMC->xl, flags,
931 flushXvMCLowLevel(pViaXvMC->xl);
933 setLowLevelLocking(pViaXvMC->xl, 1);
934 hwlUnlock(pViaXvMC->xl, 1);
937 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
946 updateXVOverlay(display, pViaXvMC, pViaSurface, draw, srcx, srcy,
948 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
975 ViaXvMCContext *pViaXvMC;
983 pViaXvMC = context->privData;
985 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
986 if (grabDecoder(pViaXvMC, &hadDecoderLast)) {
987 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
990 pViaXvMC->haveDecoder = 1;
999 if (pViaXvMC->useAGP) {
1000 if (!hadDecoderLast || pViaXvMC->timeStamp == 0) {
1001 timeStamp = viaDMATimeStampLowLevel(pViaXvMC->xl);
1002 if (flushXvMCLowLevel(pViaXvMC->xl)) {
1003 releaseDecoder(pViaXvMC, 0);
1004 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1007 pViaXvMC->timeStamp = timeStamp;
1009 timeStamp = pViaXvMC->timeStamp;
1011 setAGPSyncLowLevel(pViaXvMC->xl, 1, timeStamp);
1014 if (!hadDecoderLast || !pViaXvMC->decoderOn) {
1015 pViaXvMC->intraLoaded = 0;
1016 pViaXvMC->nonIntraLoaded = 0;
1019 viaMpegReset(pViaXvMC->xl);
1025 pViaXvMC->rendSurf[0] = targS->srfNo | VIA_XVMC_VALID;
1039 viaMpegSetSurfaceStride(pViaXvMC->xl, pViaXvMC);
1041 viaMpegSetFB(pViaXvMC->xl, 0, yOffs(targS), uOffs(targS), vOffs(targS));
1043 viaMpegSetFB(pViaXvMC->xl, 1, yOffs(pastS), uOffs(pastS),
1046 viaMpegSetFB(pViaXvMC->xl, 1, 0, 0, 0);
1050 viaMpegSetFB(pViaXvMC->xl, 2, yOffs(futS), uOffs(futS), vOffs(futS));
1052 viaMpegSetFB(pViaXvMC->xl, 2, 0, 0, 0);
1055 viaMpegBeginPicture(pViaXvMC->xl, pViaXvMC, context->width,
1057 flushPCIXvMCLowLevel(pViaXvMC->xl);
1060 pViaXvMC->decoderOn = 1;
1061 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1069 ViaXvMCContext *pViaXvMC;
1080 pViaXvMC = pViaSurface->privContext;
1082 if (pViaXvMC == NULL) {
1086 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1092 if (pViaXvMC->useAGP) {
1095 pViaSurface->timeStamp < pViaXvMC->timeStamp) ?
1098 timeStamp = pViaXvMC->timeStamp;
1101 pViaXvMC->rendSurf[0] != (pViaSurface->srfNo | VIA_XVMC_VALID)) {
1104 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1108 if (syncXvMCLowLevel(pViaXvMC->xl, syncMode, 1,
1110 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1116 if (pViaXvMC->rendSurf[0] == (pViaSurface->srfNo | VIA_XVMC_VALID)) {
1119 pViaXvMC->rendSurf[i] = 0;
1123 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1131 ViaXvMCContext * pViaXvMC;
1136 if (NULL == (pViaXvMC = context->privData)) {
1140 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1142 memcpy(pViaXvMC->intra_quantiser_matrix,
1144 pViaXvMC->intraLoaded = 0;
1148 memcpy(pViaXvMC->non_intra_quantiser_matrix,
1151 pViaXvMC->nonIntraLoaded = 0;
1155 memcpy(pViaXvMC->chroma_intra_quantiser_matrix,
1158 pViaXvMC->chromaIntraLoaded = 0;
1162 memcpy(pViaXvMC->chroma_non_intra_quantiser_matrix,
1165 pViaXvMC->chromaNonIntraLoaded = 0;
1167 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1225 ViaXvMCContext *pViaXvMC;
1235 pViaXvMC = (ViaXvMCContext *) context->privData;
1236 if (pViaXvMC == NULL) {
1246 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1258 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1269 pViaSubPic->privContext = pViaXvMC;
1276 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1285 ViaXvMCContext *pViaXvMC;
1305 pViaXvMC = pViaSubPic->privContext;
1306 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1307 sAPriv = SAREAPTR(pViaXvMC);
1308 hwlLock(pViaXvMC->xl, 1);
1309 setLowLevelLocking(pViaXvMC->xl, 0);
1316 if (sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] ==
1318 viaVideoSubPictureLocked(pViaXvMC->xl, pViaSubPic);
1320 flushPCIXvMCLowLevel(pViaXvMC->xl);
1321 setLowLevelLocking(pViaXvMC->xl, 1);
1322 hwlUnlock(pViaXvMC->xl, 1);
1323 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1366 ViaXvMCContext *pViaXvMC;
1378 pViaXvMC = pViaSubPic->privContext;
1379 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1385 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1390 viaBlit(pViaXvMC->xl, 8, 0, pViaSubPic->stride, bOffs, pViaSubPic->stride,
1393 pViaSubPic->timeStamp = viaDMATimeStampLowLevel(pViaXvMC->xl);
1394 if (flushXvMCLowLevel(pViaXvMC->xl)) {
1395 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1398 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1412 ViaXvMCContext *pViaXvMC;
1423 pViaXvMC = pViaSubPic->privContext;
1428 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1436 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1441 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1446 if (syncXvMCLowLevel(pViaXvMC->xl, LL_MODE_2D, 0,
1448 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1455 dAddr = (((CARD8 *) pViaXvMC->fbAddress) +
1462 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1519 ViaXvMCContext *pViaXvMC;
1540 pViaXvMC = pViaSurface->privContext;
1551 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1552 viaBlit(pViaXvMC->xl, 8, yOffs(pViaSSurface), pViaSSurface->yStride,
1555 flushPCIXvMCLowLevel(pViaXvMC->xl);
1556 if (pViaXvMC->chipId != PCI_CHIP_VT3259) {
1562 viaBlit(pViaXvMC->xl, 8, uOffs(pViaSSurface),
1566 flushPCIXvMCLowLevel(pViaXvMC->xl);
1567 viaBlit(pViaXvMC->xl, 8, vOffs(pViaSSurface),
1577 viaBlit(pViaXvMC->xl, 8, vOffs(pViaSSurface), pViaSSurface->yStride,
1583 pViaSurface->timeStamp = viaDMATimeStampLowLevel(pViaXvMC->xl);
1584 if (flushXvMCLowLevel(pViaXvMC->xl)) {
1585 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1591 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1599 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1607 ViaXvMCContext *pViaXvMC;
1617 pViaXvMC = pViaSubPic->privContext;
1618 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1620 if (syncXvMCLowLevel(pViaXvMC->xl, LL_MODE_2D,
1626 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1649 ViaXvMCContext *pViaXvMC;
1658 pViaXvMC = pViaSubPic->privContext;
1659 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1661 sAPriv = SAREAPTR(pViaXvMC);
1662 hwlLock(pViaXvMC->xl, 1);
1663 setLowLevelLocking(pViaXvMC->xl, 0);
1664 if (sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] ==
1666 viaVideoSubPictureOffLocked(pViaXvMC->xl);
1667 sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] = 0;
1669 flushPCIXvMCLowLevel(pViaXvMC->xl);
1670 setLowLevelLocking(pViaXvMC->xl, 1);
1671 hwlUnlock(pViaXvMC->xl, 1);
1679 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1688 ViaXvMCContext *pViaXvMC;
1699 pViaXvMC = pViaSubPic->privContext;
1700 sAPriv = SAREAPTR(pViaXvMC);
1701 if (sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] ==
1712 ViaXvMCContext *pViaXvMC;
1722 pViaXvMC = pViaSurface->privContext;
1723 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1725 pViaSurface->timeStamp = pViaXvMC->timeStamp =
1726 viaDMATimeStampLowLevel(pViaXvMC->xl);
1727 ret = (flushXvMCLowLevel(pViaXvMC->xl)) ? BadValue : Success;
1728 if (pViaXvMC->rendSurf[0] == (pViaSurface->srfNo | VIA_XVMC_VALID)) {
1729 hwlLock(pViaXvMC->xl, 0);
1730 pViaXvMC->haveDecoder = 0;
1731 releaseDecoder(pViaXvMC, 0);
1732 hwlUnlock(pViaXvMC->xl, 0);
1734 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1742 ViaXvMCContext *pViaXvMC;
1755 pViaXvMC = pViaSurface->privContext;
1756 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1757 sAPriv = SAREAPTR(pViaXvMC);
1758 if (sAPriv->XvMCDisplaying[pViaXvMC->xvMCPort]
1762 if (pViaXvMC->rendSurf[i] ==
1768 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1776 ViaXvMCContext *pViaXvMC;
1785 if (NULL == (pViaXvMC = context->privData)) {
1789 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1792 memcpy(ret, pViaXvMC->attribDesc, siz);
1795 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1806 ViaXvMCContext *pViaXvMC;
1813 if (NULL == (pViaXvMC = context->privData)) {
1817 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1820 for (i = 0; i < pViaXvMC->attrib.numAttr; ++i) {
1821 if (attribute == pViaXvMC->attrib.attributes[i].attribute) {
1822 if ((!(pViaXvMC->attribDesc[i].flags & XvSettable)) ||
1823 value < pViaXvMC->attribDesc[i].min_value ||
1824 value > pViaXvMC->attribDesc[i].max_value) {
1825 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1828 pViaXvMC->attrib.attributes[i].value = value;
1830 pViaXvMC->attribChanged = 1;
1835 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1838 if (pViaXvMC->haveXv) {
1840 pViaXvMC->xvImage->data = (char *)&buf;
1841 buf.ctxNo = pViaXvMC->ctxNo | VIA_XVMC_VALID;
1842 buf.attrib = pViaXvMC->attrib;
1844 pViaXvMC->attribChanged =
1845 XvPutImage(display, pViaXvMC->port, pViaXvMC->draw,
1846 pViaXvMC->gc, pViaXvMC->xvImage, 0, 0, 1, 1, 0, 0, 1, 1);
1849 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1859 ViaXvMCContext *pViaXvMC;
1865 if (NULL == (pViaXvMC = context->privData)) {
1869 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1871 for (i = 0; i < pViaXvMC->attrib.numAttr; ++i) {
1872 if (attribute == pViaXvMC->attrib.attributes[i].attribute) {
1873 if (pViaXvMC->attribDesc[i].flags & XvGettable) {
1874 *value = pViaXvMC->attrib.attributes[i].value;
1880 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1892 ViaXvMCContext *pViaXvMC;
1904 if (NULL == (pViaXvMC = pViaSurface->privContext)) {
1908 ppthread_mutex_lock(&pViaXvMC->ctxMutex);
1909 if (!pViaXvMC->haveXv) {
1910 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1914 sAPriv = SAREAPTR(pViaXvMC);
1915 hwlLock(pViaXvMC->xl, 1);
1917 if (sAPriv->XvMCDisplaying[pViaXvMC->xvMCPort] !=
1919 hwlUnlock(pViaXvMC->xl, 1);
1920 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1923 setLowLevelLocking(pViaXvMC->xl, 0);
1925 if (sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] ==
1927 sAPriv->XvMCSubPicOn[pViaXvMC->xvMCPort] &= ~VIA_XVMC_VALID;
1928 viaVideoSubPictureOffLocked(pViaXvMC->xl);
1931 flushPCIXvMCLowLevel(pViaXvMC->xl);
1932 setLowLevelLocking(pViaXvMC->xl, 1);
1933 hwlUnlock(pViaXvMC->xl, 1);
1936 buf.ctxNo = pViaXvMC->ctxNo | VIA_XVMC_VALID;
1938 pViaXvMC->xvImage->data = (char *)&buf;
1939 if ((ret = XvPutImage(display, pViaXvMC->port, pViaXvMC->draw,
1940 pViaXvMC->gc, pViaXvMC->xvImage, 0, 0, 1, 1, 0, 0, 1, 1))) {
1942 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);
1945 ppthread_mutex_unlock(&pViaXvMC->ctxMutex);