)]}'
{
  "commit": "4961c959aebac31991fd7653853d47dfd79d3472",
  "tree": "5d2837183bf21c756e84fd28a231a8e0674b76c5",
  "parents": [
    "9d6a685ba939f413a8d3e1e97627593aa1cdf6cb"
  ],
  "author": {
    "name": "Mathias Agopian",
    "email": "mathias@google.com",
    "time": "Tue Oct 06 19:00:57 2009 -0700"
  },
  "committer": {
    "name": "Mathias Agopian",
    "email": "mathias@google.com",
    "time": "Tue Oct 06 19:00:57 2009 -0700"
  },
  "message": "fix [2152536] ANR in browser\n\nA window is created and the browser is about to render into it the\nvery first time, at that point it does an IPC to SF to request a new\nbuffer. Meanwhile, the window manager removes that window from the\nlist and the shared memory block it uses is marked as invalid.\nHowever, at that point, another window is created and is given the\nsame index (that just go freed), but a different identity and resets\nthe \"invalid\" bit in the shared block. When we go back to the buffer\nallocation code, we\u0027re stuck because the surface we\u0027re allocating for\nis gone and we don\u0027t detect it\u0027s invalid because the invalid bit has\nbeen reset.\n\nIt is not sufficient to check for the invalid bit, I should\nalso check that identities match.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "59cf31c89c717b4f6233cdf711380463a5f46f6b",
      "old_mode": 33188,
      "old_path": "include/private/ui/SharedBufferStack.h",
      "new_id": "f6824d995015b3be7c57521737af132ca0037d73",
      "new_mode": 33188,
      "new_path": "include/private/ui/SharedBufferStack.h"
    },
    {
      "type": "modify",
      "old_id": "eb0614fe1bde8a944e5d824f61ce2f49d46ef63c",
      "old_mode": 33188,
      "old_path": "libs/surfaceflinger/Layer.cpp",
      "new_id": "0258cee0dbd1f3b942e9d59b7249be15986d2a2e",
      "new_mode": 33188,
      "new_path": "libs/surfaceflinger/Layer.cpp"
    },
    {
      "type": "modify",
      "old_id": "6f5924182d70a36e94adb6078e4a926e4eed3b3e",
      "old_mode": 33188,
      "old_path": "libs/surfaceflinger/Layer.h",
      "new_id": "702c51a55c50b77e707f02421eaf668b5d58c69b",
      "new_mode": 33188,
      "new_path": "libs/surfaceflinger/Layer.h"
    },
    {
      "type": "modify",
      "old_id": "0ef663fe73e58e015f7eab6a51024efb81326660",
      "old_mode": 33188,
      "old_path": "libs/surfaceflinger/LayerBlur.cpp",
      "new_id": "744f2e940d20c4691609e2a37832f7840dca2144",
      "new_mode": 33188,
      "new_path": "libs/surfaceflinger/LayerBlur.cpp"
    },
    {
      "type": "modify",
      "old_id": "47c596c5c22b1c70f2c211e3451c01e9fe899120",
      "old_mode": 33188,
      "old_path": "libs/ui/SharedBufferStack.cpp",
      "new_id": "b4607574141757f60f0f06670f19cfd6aed23a99",
      "new_mode": 33188,
      "new_path": "libs/ui/SharedBufferStack.cpp"
    },
    {
      "type": "modify",
      "old_id": "7822533ec982d204b7fbec47892ba338c70e30dc",
      "old_mode": 33188,
      "old_path": "libs/ui/Surface.cpp",
      "new_id": "2d83a8c3106de70a5c85efae326e803fce34f6a8",
      "new_mode": 33188,
      "new_path": "libs/ui/Surface.cpp"
    }
  ]
}
