)]}'
{
  "commit": "aa511306f27f527be8bb775733e4993954c1fc72",
  "tree": "e768ac43f6d5b99645ca03e132f4ac40476df73c",
  "parents": [
    "aca9fd74a25d02e3fd389617cedb0c51b4910fdd"
  ],
  "author": {
    "name": "luigi-rosso",
    "email": "hello@rive.app",
    "time": "Wed Aug 23 01:23:37 2023 +0000"
  },
  "committer": {
    "name": "luigi-rosso",
    "email": "hello@rive.app",
    "time": "Wed Aug 23 01:23:37 2023 +0000"
  },
  "message": "Fix follow path contention with MetricsPath\n\nBuilding contour measures on the follow path constraint to remove contention on stored contour measures in the MetricsPath.\n\nWe were storing the contour data used for measuring on the MetricsPath. Calling computeLength with a different transform would mutate that stored contour data. So having the trim path and the FollowPathConstraint call computeLength with different transforms was causing problems as neither of them was guaranteed the contour data was for the correct transform they expected.\n\nI fixed this by having the FollowPathConstraint store its own contours for the path.\n\nDiffs\u003d\n033489f8b Fix follow path contention with MetricsPath (#5868)\n\nCo-authored-by: Luigi Rosso \u003cluigi-rosso@users.noreply.github.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bb2edbd5c94c46ecd194f072b7a67993095ad7ac",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "ecde75e41811df0530bb9a4af610a53ad8cad224",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "391d1f92a9036d0a2848da26b7ee2d48ee61f202",
      "old_mode": 33188,
      "old_path": "include/rive/constraints/follow_path_constraint.hpp",
      "new_id": "604e5782af4025ac6aeb1ba80ed15d64fc4ba073",
      "new_mode": 33188,
      "new_path": "include/rive/constraints/follow_path_constraint.hpp"
    },
    {
      "type": "modify",
      "old_id": "2c1e7f7926b60872a9dae7239551a659b6285dfc",
      "old_mode": 33188,
      "old_path": "include/rive/shapes/metrics_path.hpp",
      "new_id": "6f104e44a985f3710ccad51192eead37b07441c9",
      "new_mode": 33188,
      "new_path": "include/rive/shapes/metrics_path.hpp"
    },
    {
      "type": "modify",
      "old_id": "af2664aee8ede33a72e62eb9cd0971a7085adcf3",
      "old_mode": 33188,
      "old_path": "src/constraints/follow_path_constraint.cpp",
      "new_id": "55c54f75767098a87f4524ff26d5d84fd11e66ab",
      "new_mode": 33188,
      "new_path": "src/constraints/follow_path_constraint.cpp"
    },
    {
      "type": "modify",
      "old_id": "8031a6d614d0e949e5dcd779adcd3c3509dae36d",
      "old_mode": 33188,
      "old_path": "src/shapes/metrics_path.cpp",
      "new_id": "be8ce44e0a4eb6c397967e21612586812690db4d",
      "new_mode": 33188,
      "new_path": "src/shapes/metrics_path.cpp"
    }
  ]
}
