SwRenderer::~SwRenderer()
{
- if (progress.valid()) progress.get();
+ flush();
}
bool SwRenderer::clear()
{
- if (progress.valid()) return false;
- return true;
+ return flush();
}
+
bool SwRenderer::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h)
{
if (!buffer || stride == 0 || w == 0 || h == 0) return false;
bool SwRenderer::flush()
{
- if (progress.valid()) {
- progress.get();
- return true;
+ while (prepareTasks.size() > 0) {
+ auto task = prepareTasks.front();
+ if (task->progress.valid()) task->progress.get();
+ prepareTasks.pop();
}
- return false;
+
+ if (progress.valid()) progress.get();
+
+ return true;
}