void CStreamMerger::skipInput(unsigned i) { if (!pullConsumes) consumeInput(i); releaseRow(pending[i]); pending[i] = NULL; }
void threadFunc() { pauseLock.lock(); while(isContinuing) { while (isPaused) { pauseCondition.wait(pauseLock); } auto t0=g_clock::now(); // consumeInput(); // timeStep(); // Render cbMutex.lock(); if(nullptr!=cb) { (*cb)(mField,current,nullptr); } cbMutex.unlock(); // Cap game speed while(std::chrono::duration_cast<sleep_time>(g_clock::now()-t0).count() < frame_err) { std::this_thread::sleep_for(sleep_time(1)); } } }
const void * CStreamMerger::consumeTop() { unsigned top = mergeheap[0]; if (!pullConsumes) consumeInput(top); const void *next = pending[top]; pending[top] = NULL; return next; }