Lines Matching defs:pWorker

111 static void crServerRpwWorkerGetWorkLocked(CR_SERVER_RPW *pWorker, PRTLISTNODE pWorkList)
114 RTListForEachSafe(&pWorker->WorkList, pCurEntry, pNextEntry, CR_SERVER_RPW_ENTRY, WorkEntry)
124 CR_SERVER_RPW *pWorker = (CR_SERVER_RPW *)pvUser;
129 CRMuralInfo *pDummyMural = crServerGetDummyMural(pWorker->ctxVisBits);
136 int rc = RTSemEventSignal(pWorker->Ctl.hCompleteEvent);
146 cr_server.head_spu->dispatch_table.MakeCurrent(pDummyMural->spuWindow, 0, pWorker->ctxId);
148 rc = RTCritSectEnter(&pWorker->CritSect);
159 if (pWorker->Ctl.enmType != CR_SERVER_RPW_CTL_TYPE_UNDEFINED)
161 enmCtlType = pWorker->Ctl.enmType;
162 pCtlEntry = pWorker->Ctl.pEntry;
163 pWorker->Ctl.enmType = CR_SERVER_RPW_CTL_TYPE_UNDEFINED;
164 pWorker->Ctl.pEntry = NULL;
167 crServerRpwWorkerGetWorkLocked(pWorker, &WorkList);
169 RTCritSectLeave(&pWorker->CritSect);
207 rc = RTCritSectEnter(&pWorker->CritSect);
224 RTCritSectLeave(&pWorker->CritSect);
228 rc = RTSemEventSignal(pWorker->Ctl.hCompleteEvent);
245 rc = RTSemEventWait(pWorker->hSubmitEvent, cWaitMillis);
258 rc = RTCritSectEnter(&pWorker->CritSect);
273 static int crServerRpwCtlNotify(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry)
275 int rc = RTSemEventSignal(pWorker->hSubmitEvent);
278 rc = RTSemEventWait(pWorker->Ctl.hCompleteEvent, RT_INDEFINITE_WAIT);
281 rc = pWorker->Ctl.rc;
296 tmpRc = RTCritSectEnter(&pWorker->CritSect);
299 pWorker->Ctl.enmType = CR_SERVER_RPW_CTL_TYPE_UNDEFINED;
300 pWorker->Ctl.pEntry = NULL;
301 RTCritSectLeave(&pWorker->CritSect);
312 static int crServerRpwCtl(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_CTL_TYPE enmType, CR_SERVER_RPW_ENTRY *pEntry)
314 int rc = RTCritSectEnter(&pWorker->CritSect);
317 pWorker->Ctl.enmType = enmType;
318 pWorker->Ctl.pEntry = pEntry;
319 RTCritSectLeave(&pWorker->CritSect);
327 rc = crServerRpwCtlNotify(pWorker, pEntry);
336 int crServerRpwInit(CR_SERVER_RPW *pWorker)
340 memset(pWorker, 0, sizeof (*pWorker));
342 RTListInit(&pWorker->WorkList);
344 rc = RTCritSectInit(&pWorker->CritSect);
347 rc = RTSemEventCreate(&pWorker->hSubmitEvent);
350 rc = RTSemEventCreate(&pWorker->Ctl.hCompleteEvent);
356 pWorker->ctxId = cr_server.head_spu->dispatch_table.CreateContext("", cr_server.MainContextInfo.CreateInfo.realVisualBits, cr_server.MainContextInfo.SpuContext);
357 if (pWorker->ctxId)
360 pWorker->ctxVisBits = cr_server.MainContextInfo.CreateInfo.realVisualBits;
361 pDummyMural = crServerGetDummyMural(pWorker->ctxVisBits);
374 cr_server.head_spu->dispatch_table.MakeCurrent(pDummyMural->spuWindow, 0, pWorker->ctxId);
387 rc = RTThreadCreate(&pWorker->hThread, crServerRpwWorkerThread, pWorker, 0, RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, "CrServerDw");
390 rc = RTSemEventWait(pWorker->Ctl.hCompleteEvent, RT_INDEFINITE_WAIT);
410 cr_server.head_spu->dispatch_table.DestroyContext(pWorker->ctxId);
417 RTSemEventDestroy(pWorker->Ctl.hCompleteEvent);
423 RTSemEventDestroy(pWorker->hSubmitEvent);
430 RTCritSectDelete(&pWorker->CritSect);
440 int crServerRpwEntryResizeCleaned(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry, uint32_t width, uint32_t height)
524 int crServerRpwEntryCleanup(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry)
529 int rc = crServerRpwEntryCancel(pWorker, pEntry);
571 int crServerRpwEntryResize(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry, uint32_t width, uint32_t height)
582 int rc = crServerRpwEntryCleanup(pWorker, pEntry);
589 rc = crServerRpwEntryResizeCleaned(pWorker, pEntry, width, height);
597 int crServerRpwEntryInit(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry, uint32_t width, uint32_t height, PFNCR_SERVER_RPW_DATA pfnData)
607 int rc = crServerRpwEntryResizeCleaned(pWorker, pEntry, width, height);
616 int crServerRpwEntrySubmit(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry)
629 int rc = RTCritSectEnter(&pWorker->CritSect);
632 Assert(pWorker->Ctl.enmType == CR_SERVER_RPW_CTL_TYPE_UNDEFINED);
636 RTListAppend(&pWorker->WorkList, &pEntry->WorkEntry);
642 RTCritSectLeave(&pWorker->CritSect);
644 RTSemEventSignal(pWorker->hSubmitEvent);
655 static int crServerRpwEntryCancelCtl(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry, CR_SERVER_RPW_CTL_TYPE enmType)
663 int rc = RTCritSectEnter(&pWorker->CritSect);
677 RTCritSectLeave(&pWorker->CritSect);
684 RTListForEachSafe(&pWorker->WorkList, pCurEntry, pNextEntry, CR_SERVER_RPW_ENTRY, WorkEntry)
691 pWorker->Ctl.enmType = enmType;
692 pWorker->Ctl.pEntry = pEntry;
693 RTCritSectLeave(&pWorker->CritSect);
701 rc = crServerRpwCtlNotify(pWorker, pEntry);
709 int crServerRpwEntryWaitComplete(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry)
711 int rc = crServerRpwCtl(pWorker, CR_SERVER_RPW_CTL_TYPE_WAIT_COMPLETE, pEntry);
719 int crServerRpwEntryCancel(CR_SERVER_RPW *pWorker, CR_SERVER_RPW_ENTRY *pEntry)
721 return crServerRpwEntryCancelCtl(pWorker, pEntry, CR_SERVER_RPW_CTL_TYPE_WAIT_COMPLETE);
724 static int crServerRpwCtlTerm(CR_SERVER_RPW *pWorker)
726 int rc = crServerRpwEntryCancelCtl(pWorker, NULL, CR_SERVER_RPW_CTL_TYPE_TERM);
734 int crServerRpwTerm(CR_SERVER_RPW *pWorker)
736 int rc = crServerRpwCtlTerm(pWorker);
743 rc = RTThreadWait(pWorker->hThread, RT_INDEFINITE_WAIT, NULL);
750 RTSemEventDestroy(pWorker->Ctl.hCompleteEvent);
751 RTSemEventDestroy(pWorker->hSubmitEvent);
752 RTCritSectDelete(&pWorker->CritSect);