[c-host] dxgi: reworked for better pipelining

This commit is contained in:
Geoffrey McRae
2019-03-04 16:56:45 +11:00
parent 935eb0651d
commit 8120913acb
4 changed files with 140 additions and 74 deletions

View File

@@ -317,19 +317,25 @@ void os_freeEvent(osEventHandle * handle)
CloseHandle((HANDLE)handle);
}
bool os_waitEvent(osEventHandle * handle)
bool os_waitEvent(osEventHandle * handle, unsigned int timeout)
{
const DWORD to = (timeout == TIMEOUT_INFINITE) ? INFINITE : (DWORD)timeout;
while(true)
{
switch(WaitForSingleObject((HANDLE)handle, INFINITE))
switch(WaitForSingleObject((HANDLE)handle, to))
{
case WAIT_OBJECT_0:
return true;
case WAIT_ABANDONED:
case WAIT_TIMEOUT:
continue;
case WAIT_TIMEOUT:
if (timeout == TIMEOUT_INFINITE)
continue;
return false;
case WAIT_FAILED:
DEBUG_WINERROR("Wait for event failed", GetLastError());
return false;