)]}'
{
  "commit": "5a7e828842c26f64bb6e0ef3e0019e1949b245ee",
  "tree": "98476b11713842ef3b8109cff38e66fae26dc199",
  "parents": [
    "23c907cab8aa1a40ee79b322899b850080b14832"
  ],
  "author": {
    "name": "Chet Haase",
    "email": "chet@google.com",
    "time": "Fri Feb 04 12:50:55 2011 -0800"
  },
  "committer": {
    "name": "Chet Haase",
    "email": "chet@google.com",
    "time": "Fri Feb 04 12:50:55 2011 -0800"
  },
  "message": "Fix crash when Paths are GCd in hw accelerated apps\n\nA recent change to optimize path rendering didn\u0027t account for\nthe destruction of native objects by the VM finalizer. We may be\ndone with the Java level version before we\u0027re done with the native\nstructure that\u0027s used by the display list. For example, a drawing\nmethod on a View that creates a temporary path to render into the\ncanvas will implicitly create a native structure that is put onto\nthe GL display list. That temporary path may go away, but the native\nversion should stick around as long as the display list does.\n\nThe fix is to refcount the original native version of the path\nand only delete it when the refcoutn reaches zero (which means that\nit is no longer needed by any display list). This is a similar mechanism\nused for bitmaps and shaders.\n\nChange-Id: I4de1047415066d425d1c689aa60827f97729b470\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "90c4dd453c2ed33a959b15e5a8e86a54a278aac5",
      "old_mode": 33188,
      "old_path": "core/jni/android/graphics/Path.cpp",
      "new_id": "eb9e004c9861cec44a77923541c98f982bde01a6",
      "new_mode": 33188,
      "new_path": "core/jni/android/graphics/Path.cpp"
    },
    {
      "type": "modify",
      "old_id": "2df52ae65e12919cceb249d96a522bc9398fec76",
      "old_mode": 33188,
      "old_path": "libs/hwui/DisplayListRenderer.cpp",
      "new_id": "d5d2ba07154c08875f76cf183c86428f20c046b8",
      "new_mode": 33188,
      "new_path": "libs/hwui/DisplayListRenderer.cpp"
    },
    {
      "type": "modify",
      "old_id": "2d0e30a48e0570d59a848cd55a7c3cd6b69cefc3",
      "old_mode": 33188,
      "old_path": "libs/hwui/DisplayListRenderer.h",
      "new_id": "f39f37f860eb1409add61f0fc56488aa97668bbb",
      "new_mode": 33188,
      "new_path": "libs/hwui/DisplayListRenderer.h"
    },
    {
      "type": "modify",
      "old_id": "70d117a3622bbfd535e0f409fa56f309f62f1071",
      "old_mode": 33188,
      "old_path": "libs/hwui/ResourceCache.cpp",
      "new_id": "87fdfb5212a1314a778a1ba87db4d14771f46396",
      "new_mode": 33188,
      "new_path": "libs/hwui/ResourceCache.cpp"
    },
    {
      "type": "modify",
      "old_id": "1bb4390f82d9e68b08f087ae4ecc8d6e17866118",
      "old_mode": 33188,
      "old_path": "libs/hwui/ResourceCache.h",
      "new_id": "2a38910951c4484f951599f8d1ab869dcc85353f",
      "new_mode": 33188,
      "new_path": "libs/hwui/ResourceCache.h"
    }
  ]
}
