sw_engine: flush all processing data when clear() is requested.

there was a missing point which occured corrupted data in multi-processing.

Change-Id: Ifb28ee82852e488d23d45b4b75f0a6c70bb428b2
This commit is contained in:
Hermet Park 2020-06-30 12:38:01 +09:00
parent 8bb8710815
commit 4bc0b584f3

View file

@ -47,16 +47,16 @@ static RenderInitializer renderInit;
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;
@ -117,11 +117,15 @@ void SwRenderer::doRender()
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;
}