Fix ScriptedDrawable save/restore (#11451) e7142dcfed Co-authored-by: Philip Chung <philterdesign@gmail.com>
diff --git a/.rive_head b/.rive_head index 6198495..b014ec4 100644 --- a/.rive_head +++ b/.rive_head
@@ -1 +1 @@ -62fcec60de0eea68dceb64758f284ef5b5e20c00 +e7142dcfedf6710265bd49fe031c26e663b37f99
diff --git a/src/scripted/scripted_drawable.cpp b/src/scripted/scripted_drawable.cpp index cb325e9..70795ee 100644 --- a/src/scripted/scripted_drawable.cpp +++ b/src/scripted/scripted_drawable.cpp
@@ -29,16 +29,15 @@ } #endif - if (m_needsSaveOperation) + float opacity = renderOpacity(); + bool needsOpacitySave = (opacity != 1.0f); + if (m_needsSaveOperation || needsOpacitySave) { renderer->save(); } - float opacity = renderOpacity(); - bool needsOpacitySave = (opacity != 1.0f); if (needsOpacitySave) { - renderer->save(); renderer->modulateOpacity(opacity); } @@ -63,12 +62,7 @@ // Stack: [scriptedRenderer, self] rive_lua_pop(m_state, 2); - if (needsOpacitySave) - { - renderer->restore(); - } - - if (m_needsSaveOperation) + if (m_needsSaveOperation || needsOpacitySave) { renderer->restore(); }
diff --git a/tests/unit_tests/silvers/script_artboards_opacity.sriv b/tests/unit_tests/silvers/script_artboards_opacity.sriv index 44af9a7..2ae363d 100644 --- a/tests/unit_tests/silvers/script_artboards_opacity.sriv +++ b/tests/unit_tests/silvers/script_artboards_opacity.sriv Binary files differ
diff --git a/tests/unit_tests/silvers/script_path_opacity.sriv b/tests/unit_tests/silvers/script_path_opacity.sriv index 8bd5bda..11688cf 100644 --- a/tests/unit_tests/silvers/script_path_opacity.sriv +++ b/tests/unit_tests/silvers/script_path_opacity.sriv Binary files differ