diff --git a/src/sp-item.cpp b/src/sp-item.cpp
index d6f68fc74019b7a5ffd39e5bc2f24e899da94d65..5a2dfb2f05f2cec6508951a87caf71e51d91c228 100644 (file)
--- a/src/sp-item.cpp
+++ b/src/sp-item.cpp
@@ -1377,27 +1377,7 @@ sp_item_adjust_livepatheffect (SPItem *item, Geom::Matrix const &postmul, bool s
SPLPEItem *lpeitem = SP_LPE_ITEM (item);
if ( sp_lpe_item_has_path_effect(lpeitem) ) {
- // If one of the path effects is used by 2 or more items, fork it
- // so that each object has its own independent copy of the effect.
- // Forking messes up the path effect list, so after each fork,
- // reload the list and recheck if more forking is required.
- bool forked = false;
- do {
- forked = false;
- PathEffectList effect_list = sp_lpe_item_get_effect_list(lpeitem);
- for (PathEffectList::iterator it = effect_list.begin(); it != effect_list.end(); it++)
- {
- LivePathEffectObject *lpeobj = (*it)->lpeobject;
- if (lpeobj) {
- LivePathEffectObject *new_lpeobj = lpeobj->fork_private_if_necessary();
- if (new_lpeobj != lpeobj) {
- sp_lpe_item_replace_path_effect(lpeitem, lpeobj, new_lpeobj);
- forked = true;
- break; // forked, so break the for-loop and recheck
- }
- }
- }
- } while (forked);
+ sp_lpe_item_fork_path_effects_if_necessary(lpeitem);
// now that all LPEs are forked_if_necessary, we can apply the transform
PathEffectList effect_list = sp_lpe_item_get_effect_list(lpeitem);