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()
|
SwRenderer::~SwRenderer()
|
||||||
{
|
{
|
||||||
if (progress.valid()) progress.get();
|
flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SwRenderer::clear()
|
bool SwRenderer::clear()
|
||||||
{
|
{
|
||||||
if (progress.valid()) return false;
|
return flush();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool SwRenderer::target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h)
|
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;
|
if (!buffer || stride == 0 || w == 0 || h == 0) return false;
|
||||||
|
@ -117,11 +117,15 @@ void SwRenderer::doRender()
|
||||||
|
|
||||||
bool SwRenderer::flush()
|
bool SwRenderer::flush()
|
||||||
{
|
{
|
||||||
if (progress.valid()) {
|
while (prepareTasks.size() > 0) {
|
||||||
progress.get();
|
auto task = prepareTasks.front();
|
||||||
return true;
|
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