mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-14 12:04:29 +00:00
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:
parent
8bb8710815
commit
4bc0b584f3
1 changed files with 11 additions and 7 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue