diff --git a/.rive_head b/.rive_head index 61984959..b014ec43 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 cb325e99..70795ee5 100644 --- a/src/scripted/scripted_drawable.cpp +++ b/src/scripted/scripted_drawable.cpp @@ -29,16 +29,15 @@ void ScriptedDrawable::draw(Renderer* renderer) } #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 @@ void ScriptedDrawable::draw(Renderer* renderer) // 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 44af9a75..2ae363d6 100644 Binary files a/tests/unit_tests/silvers/script_artboards_opacity.sriv and b/tests/unit_tests/silvers/script_artboards_opacity.sriv differ diff --git a/tests/unit_tests/silvers/script_path_opacity.sriv b/tests/unit_tests/silvers/script_path_opacity.sriv index 8bd5bda4..11688cfe 100644 Binary files a/tests/unit_tests/silvers/script_path_opacity.sriv and b/tests/unit_tests/silvers/script_path_opacity.sriv differ