diff --git a/src/canvas.cpp b/src/canvas.cpp index 9a1e5b6..9e45c00 100644 --- a/src/canvas.cpp +++ b/src/canvas.cpp @@ -1180,6 +1180,24 @@ static auto execute_canvas_stroke_commit_request( }); } +static pp::paint_renderer::CanvasStrokeCommitSequencePlan +make_canvas_stroke_commit_sequence_plan( + const Canvas& canvas, + kCanvasMode current_mode, + int current_layer_idx, + bool smask_active, + const pp::paint_renderer::CanvasStrokeCommitMaterialPlan& stroke_material) +{ + return pp::paint_renderer::plan_canvas_stroke_commit_sequence( + pp::paint_renderer::CanvasStrokeCommitRequest { + .erase_mode = current_mode == kCanvasMode::Erase, + .alpha_locked = canvas.m_layers[current_layer_idx]->m_alpha_locked, + .selection_mask_active = smask_active, + .dual_stroke_enabled = stroke_material.composite_pass.use_dual, + .pattern_enabled = stroke_material.composite_pass.use_pattern, + }); +} + static void stamp_canvas_stroke_commit_action( Canvas& canvas, ActionStroke* action) @@ -1973,6 +1991,12 @@ void Canvas::stroke_commit() const auto& b = m_current_stroke->m_brush; const auto stroke_material = canvas_stroke_material_plan(*b, false); + const auto stroke_commit_sequence = make_canvas_stroke_commit_sequence_plan( + *this, + m_current_mode, + m_current_layer_idx, + m_smask_active, + stroke_material); [[maybe_unused]] const auto commit_result = execute_canvas_stroke_commit_request( *this, vp, @@ -1983,14 +2007,7 @@ void Canvas::stroke_commit() }, action, m_current_stroke, - pp::paint_renderer::plan_canvas_stroke_commit_sequence( - pp::paint_renderer::CanvasStrokeCommitRequest { - .erase_mode = m_current_mode == kCanvasMode::Erase, - .alpha_locked = m_layers[m_current_layer_idx]->m_alpha_locked, - .selection_mask_active = m_smask_active, - .dual_stroke_enabled = stroke_material.composite_pass.use_dual, - .pattern_enabled = stroke_material.composite_pass.use_pattern, - }), + stroke_commit_sequence, stroke_material); }