Sleep when waiting for sync

This commit is contained in:
Vincent Lejeune 2015-01-24 22:27:47 +01:00
parent 56f1dff65d
commit b7eca5e5c3

View File

@ -14,6 +14,7 @@
#include "tracks/track.hpp"
#include "lod_node.hpp"
#include "utils/profiler.hpp"
#include "utils/time.hpp"
#include <ISceneManager.h>
#include <ISceneNode.h>
@ -590,8 +591,14 @@ PROFILER_POP_CPU_MARKER();
if (!m_sync)
m_sync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
PROFILER_PUSH_CPU_MARKER("- Sync Stall", 0xFF, 0x0, 0x0);
GLenum reason;
do { reason = glClientWaitSync(m_sync, GL_SYNC_FLUSH_COMMANDS_BIT, 0); if (reason == GL_WAIT_FAILED) break; } while (reason != GL_ALREADY_SIGNALED);
GLenum reason = glClientWaitSync(m_sync, GL_SYNC_FLUSH_COMMANDS_BIT, 0);
while (reason != GL_ALREADY_SIGNALED)
{
if (reason == GL_WAIT_FAILED) break;
StkTime::sleep(1);
reason = glClientWaitSync(m_sync, GL_SYNC_FLUSH_COMMANDS_BIT, 0);
}
glDeleteSync(m_sync);
PROFILER_POP_CPU_MARKER();
/* switch (reason)