Lines Matching +full:client +full:- +full:id
28 ** xvmain.c --- Xv server extension main device independent module.
37 ** - change: stop video always generates an event even when video
41 ** - change: unrealizing windows no longer preempts video
44 ** - changed SetPortControl to SetPortAttribute
45 ** - changed GetPortControl to GetPortAttribute
46 ** - changed QueryBestSize
49 ** - fixed Put and Get requests to not preempt operations to same drawable
52 ** - version 2.0 upgrade
55 ** - fixed Put and Get requests to honor grabbed ports.
56 ** - fixed Video requests to update di structure with new drawable, and
57 ** client after calling ddx.
60 ** - version 1.4 upgrade
64 ** Port structures reference client structures in a two different
66 ** as fake client resources and thus when the client is goes away so
69 ** other resources going away, but if a client starts video using
71 ** after the client disappears.
77 #include <dix-config.h>
182 XvReqCode = extEntry->base; in XvExtensionInit()
183 XvEventBase = extEntry->eventBase; in XvExtensionInit()
184 XvErrorBase = extEntry->errorBase; in XvExtensionInit()
268 if (dixLookupPrivate(&pScreen->devPrivates, XvScreenKey)) { in XvScreenInit()
269 ErrorF("XvScreenInit: screen devPrivates ptr non-NULL before init\n"); in XvScreenInit()
280 dixSetPrivate(&pScreen->devPrivates, XvScreenKey, pxvs); in XvScreenInit()
282 pxvs->DestroyPixmap = pScreen->DestroyPixmap; in XvScreenInit()
283 pxvs->DestroyWindow = pScreen->DestroyWindow; in XvScreenInit()
284 pxvs->CloseScreen = pScreen->CloseScreen; in XvScreenInit()
286 pScreen->DestroyPixmap = XvDestroyPixmap; in XvScreenInit()
287 pScreen->DestroyWindow = XvDestroyWindow; in XvScreenInit()
288 pScreen->CloseScreen = XvCloseScreen; in XvScreenInit()
299 pxvs = (XvScreenPtr) dixLookupPrivate(&pScreen->devPrivates, XvScreenKey); in XvCloseScreen()
301 pScreen->DestroyPixmap = pxvs->DestroyPixmap; in XvCloseScreen()
302 pScreen->DestroyWindow = pxvs->DestroyWindow; in XvCloseScreen()
303 pScreen->CloseScreen = pxvs->CloseScreen; in XvCloseScreen()
307 dixSetPrivate(&pScreen->devPrivates, XvScreenKey, NULL); in XvCloseScreen()
309 return (*pScreen->CloseScreen) (pScreen); in XvCloseScreen()
333 ScreenPtr pScreen = pDrawable->pScreen; in XvStopAdaptors()
334 XvScreenPtr pxvs = dixLookupPrivate(&pScreen->devPrivates, XvScreenKey); in XvStopAdaptors()
335 XvAdaptorPtr pa = pxvs->pAdaptors; in XvStopAdaptors()
336 int na = pxvs->nAdaptors; in XvStopAdaptors()
339 while (na--) { in XvStopAdaptors()
340 XvPortPtr pp = pa->pPorts; in XvStopAdaptors()
341 int np = pa->nPorts; in XvStopAdaptors()
343 while (np--) { in XvStopAdaptors()
344 if (pp->pDraw == pDrawable) { in XvStopAdaptors()
347 (void) (*pp->pAdaptor->ddStopVideo) (pp, pDrawable); in XvStopAdaptors()
349 pp->pDraw = NULL; in XvStopAdaptors()
350 pp->client = NULL; in XvStopAdaptors()
351 pp->time = currentTime; in XvStopAdaptors()
362 ScreenPtr pScreen = pPix->drawable.pScreen; in XvDestroyPixmap()
365 if (pPix->refcnt == 1) in XvDestroyPixmap()
366 XvStopAdaptors(&pPix->drawable); in XvDestroyPixmap()
369 status = (*pScreen->DestroyPixmap) (pPix); in XvDestroyPixmap()
379 ScreenPtr pScreen = pWin->drawable.pScreen; in XvDestroyWindow()
382 XvStopAdaptors(&pWin->drawable); in XvDestroyWindow()
385 status = (*pScreen->DestroyWindow) (pWin); in XvDestroyWindow()
393 XvdiDestroyPort(void *pPort, XID id) in XvdiDestroyPort() argument
399 XvdiDestroyGrab(void *pGrab, XID id) in XvdiDestroyGrab() argument
401 ((XvGrabPtr) pGrab)->client = NULL; in XvdiDestroyGrab()
406 XvdiDestroyVideoNotify(void *pn, XID id) in XvdiDestroyVideoNotify() argument
408 /* JUST CLEAR OUT THE client POINTER FIELD */ in XvdiDestroyVideoNotify()
410 ((XvVideoNotifyPtr) pn)->client = NULL; in XvdiDestroyVideoNotify()
415 XvdiDestroyPortNotify(void *pn, XID id) in XvdiDestroyPortNotify() argument
417 /* JUST CLEAR OUT THE client POINTER FIELD */ in XvdiDestroyPortNotify()
419 ((XvPortNotifyPtr) pn)->client = NULL; in XvdiDestroyPortNotify()
424 XvdiDestroyVideoNotifyList(void *pn, XID id) in XvdiDestroyVideoNotifyList() argument
433 npn = cpn->next; in XvdiDestroyVideoNotifyList()
434 if (cpn->client) in XvdiDestroyVideoNotifyList()
435 FreeResource(cpn->id, XvRTVideoNotify); in XvdiDestroyVideoNotifyList()
443 XvdiDestroyEncoding(void *value, XID id) in XvdiDestroyEncoding() argument
453 dixLookupResourceByType((void **) &pn, pDraw->id, XvRTVideoNotifyList, in XvdiSendVideoNotify()
460 .u.videoNotify.drawable = pDraw->id, in XvdiSendVideoNotify()
461 .u.videoNotify.port = pPort->id in XvdiSendVideoNotify()
464 WriteEventsToClient(pn->client, 1, (xEventPtr) &event); in XvdiSendVideoNotify()
465 pn = pn->next; in XvdiSendVideoNotify()
477 pn = pPort->pNotify; in XvdiSendPortNotify()
482 .u.portNotify.port = pPort->id, in XvdiSendPortNotify()
487 WriteEventsToClient(pn->client, 1, (xEventPtr) &event); in XvdiSendPortNotify()
488 pn = pn->next; in XvdiSendPortNotify()
503 XvdiPutVideo(ClientPtr client, in XvdiPutVideo() argument
519 /* CHECK FOR GRAB; IF THIS CLIENT DOESN'T HAVE THE PORT GRABBED THEN in XvdiPutVideo()
520 INFORM CLIENT OF ITS FAILURE */ in XvdiPutVideo()
522 if (pPort->grab.client && (pPort->grab.client != client)) { in XvdiPutVideo()
530 pOldDraw = pPort->pDraw; in XvdiPutVideo()
532 XvdiSendVideoNotify(pPort, pPort->pDraw, XvPreempted); in XvdiPutVideo()
535 (void) (*pPort->pAdaptor->ddPutVideo) (pDraw, pPort, pGC, in XvdiPutVideo()
539 if ((pPort->pDraw) && (pOldDraw != pDraw)) { in XvdiPutVideo()
540 pPort->client = client; in XvdiPutVideo()
541 XvdiSendVideoNotify(pPort, pPort->pDraw, XvStarted); in XvdiPutVideo()
544 pPort->time = currentTime; in XvdiPutVideo()
551 XvdiPutStill(ClientPtr client, in XvdiPutStill() argument
567 /* CHECK FOR GRAB; IF THIS CLIENT DOESN'T HAVE THE PORT GRABBED THEN in XvdiPutStill()
568 INFORM CLIENT OF ITS FAILURE */ in XvdiPutStill()
570 if (pPort->grab.client && (pPort->grab.client != client)) { in XvdiPutStill()
575 pPort->time = currentTime; in XvdiPutStill()
577 status = (*pPort->pAdaptor->ddPutStill) (pDraw, pPort, pGC, in XvdiPutStill()
586 XvdiPutImage(ClientPtr client, in XvdiPutImage() argument
603 /* CHECK FOR GRAB; IF THIS CLIENT DOESN'T HAVE THE PORT GRABBED THEN in XvdiPutImage()
604 INFORM CLIENT OF ITS FAILURE */ in XvdiPutImage()
606 if (pPort->grab.client && (pPort->grab.client != client)) { in XvdiPutImage()
611 pPort->time = currentTime; in XvdiPutImage()
613 return (*pPort->pAdaptor->ddPutImage) (pDraw, pPort, pGC, in XvdiPutImage()
620 XvdiGetVideo(ClientPtr client, in XvdiGetVideo() argument
636 /* CHECK FOR GRAB; IF THIS CLIENT DOESN'T HAVE THE PORT GRABBED THEN in XvdiGetVideo()
637 INFORM CLIENT OF ITS FAILURE */ in XvdiGetVideo()
639 if (pPort->grab.client && (pPort->grab.client != client)) { in XvdiGetVideo()
647 pOldDraw = pPort->pDraw; in XvdiGetVideo()
649 XvdiSendVideoNotify(pPort, pPort->pDraw, XvPreempted); in XvdiGetVideo()
652 (void) (*pPort->pAdaptor->ddGetVideo) (pDraw, pPort, pGC, in XvdiGetVideo()
656 if ((pPort->pDraw) && (pOldDraw != pDraw)) { in XvdiGetVideo()
657 pPort->client = client; in XvdiGetVideo()
658 XvdiSendVideoNotify(pPort, pPort->pDraw, XvStarted); in XvdiGetVideo()
661 pPort->time = currentTime; in XvdiGetVideo()
668 XvdiGetStill(ClientPtr client, in XvdiGetStill() argument
684 /* CHECK FOR GRAB; IF THIS CLIENT DOESN'T HAVE THE PORT GRABBED THEN in XvdiGetStill()
685 INFORM CLIENT OF ITS FAILURE */ in XvdiGetStill()
687 if (pPort->grab.client && (pPort->grab.client != client)) { in XvdiGetStill()
692 status = (*pPort->pAdaptor->ddGetStill) (pDraw, pPort, pGC, in XvdiGetStill()
696 pPort->time = currentTime; in XvdiGetStill()
703 XvdiGrabPort(ClientPtr client, XvPortPtr pPort, Time ctime, int *p_result) in XvdiGrabPort() argument
705 unsigned long id; in XvdiGrabPort() local
711 if (pPort->grab.client && (client != pPort->grab.client)) { in XvdiGrabPort()
717 (CompareTimeStamps(time, pPort->time) == EARLIER)) { in XvdiGrabPort()
722 if (client == pPort->grab.client) { in XvdiGrabPort()
727 id = FakeClientID(client->index); in XvdiGrabPort()
729 if (!AddResource(id, XvRTGrab, &pPort->grab)) { in XvdiGrabPort()
735 if ((pPort->pDraw) && (client != pPort->client)) { in XvdiGrabPort()
736 XvdiStopVideo(NULL, pPort, pPort->pDraw); in XvdiGrabPort()
739 pPort->grab.client = client; in XvdiGrabPort()
740 pPort->grab.id = id; in XvdiGrabPort()
742 pPort->time = currentTime; in XvdiGrabPort()
751 XvdiUngrabPort(ClientPtr client, XvPortPtr pPort, Time ctime) in XvdiUngrabPort() argument
758 if ((!pPort->grab.client) || (client != pPort->grab.client)) { in XvdiUngrabPort()
763 (CompareTimeStamps(time, pPort->time) == EARLIER)) { in XvdiUngrabPort()
767 /* FREE THE GRAB RESOURCE; AND SET THE GRAB CLIENT TO NULL */ in XvdiUngrabPort()
769 FreeResource(pPort->grab.id, XvRTGrab); in XvdiUngrabPort()
770 pPort->grab.client = NULL; in XvdiUngrabPort()
772 pPort->time = currentTime; in XvdiUngrabPort()
779 XvdiSelectVideoNotify(ClientPtr client, DrawablePtr pDraw, BOOL onoff) in XvdiSelectVideoNotify() argument
786 rc = dixLookupResourceByType((void **) &pn, pDraw->id, in XvdiSelectVideoNotify()
787 XvRTVideoNotifyList, client, DixWriteAccess); in XvdiSelectVideoNotify()
802 tpn->next = NULL; in XvdiSelectVideoNotify()
803 tpn->client = NULL; in XvdiSelectVideoNotify()
804 if (!AddResource(pDraw->id, XvRTVideoNotifyList, tpn)) in XvdiSelectVideoNotify()
813 if (tpn->client == client) { in XvdiSelectVideoNotify()
815 tpn->client = NULL; in XvdiSelectVideoNotify()
818 if (!tpn->client) in XvdiSelectVideoNotify()
820 tpn = tpn->next; in XvdiSelectVideoNotify()
836 tpn->next = pn->next; in XvdiSelectVideoNotify()
837 pn->next = tpn; in XvdiSelectVideoNotify()
841 /* INIT CLIENT PTR IN CASE WE CAN'T ADD RESOURCE */ in XvdiSelectVideoNotify()
842 /* ADD RESOURCE SO THAT IF CLIENT EXITS THE CLIENT PTR WILL BE CLEARED */ in XvdiSelectVideoNotify()
844 tpn->client = NULL; in XvdiSelectVideoNotify()
845 tpn->id = FakeClientID(client->index); in XvdiSelectVideoNotify()
846 if (!AddResource(tpn->id, XvRTVideoNotify, tpn)) in XvdiSelectVideoNotify()
849 tpn->client = client; in XvdiSelectVideoNotify()
855 XvdiSelectPortNotify(ClientPtr client, XvPortPtr pPort, BOOL onoff) in XvdiSelectPortNotify() argument
859 /* SEE IF CLIENT IS ALREADY IN LIST */ in XvdiSelectPortNotify()
862 pn = pPort->pNotify; in XvdiSelectPortNotify()
864 if (!pn->client) in XvdiSelectPortNotify()
866 if (pn->client == client) in XvdiSelectPortNotify()
868 pn = pn->next; in XvdiSelectPortNotify()
871 /* IS THE CLIENT ALREADY ON THE LIST? */ in XvdiSelectPortNotify()
877 pn->client = NULL; in XvdiSelectPortNotify()
878 FreeResource(pn->id, XvRTPortNotify); in XvdiSelectPortNotify()
890 tpn->next = pPort->pNotify; in XvdiSelectPortNotify()
891 pPort->pNotify = tpn; in XvdiSelectPortNotify()
894 tpn->client = client; in XvdiSelectPortNotify()
895 tpn->id = FakeClientID(client->index); in XvdiSelectPortNotify()
896 if (!AddResource(tpn->id, XvRTPortNotify, tpn)) in XvdiSelectPortNotify()
904 XvdiStopVideo(ClientPtr client, XvPortPtr pPort, DrawablePtr pDraw) in XvdiStopVideo() argument
910 if (!pPort->pDraw || (pPort->pDraw != pDraw)) { in XvdiStopVideo()
915 /* CHECK FOR GRAB; IF THIS CLIENT DOESN'T HAVE THE PORT GRABBED THEN in XvdiStopVideo()
916 INFORM CLIENT OF ITS FAILURE */ in XvdiStopVideo()
918 if ((client) && (pPort->grab.client) && (pPort->grab.client != client)) { in XvdiStopVideo()
925 status = (*pPort->pAdaptor->ddStopVideo) (pPort, pDraw); in XvdiStopVideo()
927 pPort->pDraw = NULL; in XvdiStopVideo()
928 pPort->client = (ClientPtr) client; in XvdiStopVideo()
929 pPort->time = currentTime; in XvdiStopVideo()
943 pa = pPort->pAdaptor; in XvdiMatchPort()
945 if (pa->pScreen != pDraw->pScreen) in XvdiMatchPort()
948 nf = pa->nFormats; in XvdiMatchPort()
949 pf = pa->pFormats; in XvdiMatchPort()
951 while (nf--) { in XvdiMatchPort()
952 if (pf->depth == pDraw->depth) in XvdiMatchPort()
962 XvdiSetPortAttribute(ClientPtr client, in XvdiSetPortAttribute() argument
968 (*pPort->pAdaptor->ddSetPortAttribute) (pPort, attribute, in XvdiSetPortAttribute()
977 XvdiGetPortAttribute(ClientPtr client, in XvdiGetPortAttribute() argument
982 (*pPort->pAdaptor->ddGetPortAttribute) (pPort, attribute, in XvdiGetPortAttribute()
991 to->u.u.type = from->u.u.type; in WriteSwappedVideoNotifyEvent()
992 to->u.u.detail = from->u.u.detail; in WriteSwappedVideoNotifyEvent()
993 cpswaps(from->u.videoNotify.sequenceNumber, in WriteSwappedVideoNotifyEvent()
994 to->u.videoNotify.sequenceNumber); in WriteSwappedVideoNotifyEvent()
995 cpswapl(from->u.videoNotify.time, to->u.videoNotify.time); in WriteSwappedVideoNotifyEvent()
996 cpswapl(from->u.videoNotify.drawable, to->u.videoNotify.drawable); in WriteSwappedVideoNotifyEvent()
997 cpswapl(from->u.videoNotify.port, to->u.videoNotify.port); in WriteSwappedVideoNotifyEvent()
1005 to->u.u.type = from->u.u.type; in WriteSwappedPortNotifyEvent()
1006 to->u.u.detail = from->u.u.detail; in WriteSwappedPortNotifyEvent()
1007 cpswaps(from->u.portNotify.sequenceNumber, to->u.portNotify.sequenceNumber); in WriteSwappedPortNotifyEvent()
1008 cpswapl(from->u.portNotify.time, to->u.portNotify.time); in WriteSwappedPortNotifyEvent()
1009 cpswapl(from->u.portNotify.port, to->u.portNotify.port); in WriteSwappedPortNotifyEvent()
1010 cpswapl(from->u.portNotify.value, to->u.portNotify.value); in WriteSwappedPortNotifyEvent()
1019 free(pAdaptor->name); in XvFreeAdaptor()
1020 pAdaptor->name = NULL; in XvFreeAdaptor()
1022 if (pAdaptor->pEncodings) { in XvFreeAdaptor()
1023 XvEncodingPtr pEncode = pAdaptor->pEncodings; in XvFreeAdaptor()
1025 for (i = 0; i < pAdaptor->nEncodings; i++, pEncode++) in XvFreeAdaptor()
1026 free(pEncode->name); in XvFreeAdaptor()
1027 free(pAdaptor->pEncodings); in XvFreeAdaptor()
1028 pAdaptor->pEncodings = NULL; in XvFreeAdaptor()
1031 free(pAdaptor->pFormats); in XvFreeAdaptor()
1032 pAdaptor->pFormats = NULL; in XvFreeAdaptor()
1034 free(pAdaptor->pPorts); in XvFreeAdaptor()
1035 pAdaptor->pPorts = NULL; in XvFreeAdaptor()
1037 if (pAdaptor->pAttributes) { in XvFreeAdaptor()
1038 XvAttributePtr pAttribute = pAdaptor->pAttributes; in XvFreeAdaptor()
1040 for (i = 0; i < pAdaptor->nAttributes; i++, pAttribute++) in XvFreeAdaptor()
1041 free(pAttribute->name); in XvFreeAdaptor()
1042 free(pAdaptor->pAttributes); in XvFreeAdaptor()
1043 pAdaptor->pAttributes = NULL; in XvFreeAdaptor()
1046 free(pAdaptor->pImages); in XvFreeAdaptor()
1047 pAdaptor->pImages = NULL; in XvFreeAdaptor()
1049 free(pAdaptor->devPriv.ptr); in XvFreeAdaptor()
1050 pAdaptor->devPriv.ptr = NULL; in XvFreeAdaptor()
1056 ScreenPtr pScreen = pDraw->pScreen; in XvFillColorKey()
1063 gc = GetScratchGC(pDraw->depth, pScreen); in XvFillColorKey()
1075 rects[i].x = pbox->x1 - pDraw->x; in XvFillColorKey()
1076 rects[i].y = pbox->y1 - pDraw->y; in XvFillColorKey()
1077 rects[i].width = pbox->x2 - pbox->x1; in XvFillColorKey()
1078 rects[i].height = pbox->y2 - pbox->y1; in XvFillColorKey()
1081 (*gc->ops->PolyFillRect) (pDraw, gc, nbox, rects); in XvFillColorKey()