)]}'
{
  "commit": "9302c8796fc4dcda08d4bd1e11733848fd4fafaf",
  "tree": "1008e3db6ba1eb6ee02b7bf8c4a648a13a0b741d",
  "parents": [
    "14fcf900ce65e5c8c952c95ee12041f8de16fbb7"
  ],
  "author": {
    "name": "Jeff Brown",
    "email": "jeffbrown@google.com",
    "time": "Wed Jul 13 22:51:29 2011 -0700"
  },
  "committer": {
    "name": "Jeff Brown",
    "email": "jeffbrown@google.com",
    "time": "Thu Jul 14 04:11:21 2011 -0700"
  },
  "message": "Refactor input dispatcher use of window/app handles.\n\nThis change moves the cached window and application input state\ninto the handle objects themselves.  It simplifies the dispatcher\nsomewhat because it no longer needs to fix up references to\ntransient InputWindow objects each time the window list is updated.\n\nThis change will also make it easier to optimize setInputWindows\nto avoid doing a lot of redundant data copying.  In principle, only\nthe modified fields need to be updated.  However, for now we\ncontinue to update all fields in unison as before.\n\nIt turns out that the input dispatcher was inappropriately retaining\npointers to InputWindow objects within the mWindows InputWindow\nvector.  This vector is copy-on-write so it is possible and the\nitem pointers to change if an editing operation is performed on\nthe vector when it does not exclusively own the underlying\nSharedBuffer.  This bug was uncovered by a previous change that\nreplaced calls to clear() and appendVector() with a simple use\nof operator\u003d which caused the buffer to be shared.  Consequently\nafter editItemAt was called (which it shouldn\u0027t have, actually)\nthe buffer was copied and the cached InputWindow pointers became\ninvalid.  Oops.  This change fixes the problem.\n\nChange-Id: I0a259339a6015fcf9113dc4081a6875e047fd425\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "cc8006217c11fae387da4ec12d09a26549345dfb",
      "old_mode": 33188,
      "old_path": "services/input/InputApplication.h",
      "new_id": "8902f7ad0099d46bd3c442563bf36acdc2b90be4",
      "new_mode": 33188,
      "new_path": "services/input/InputApplication.h"
    },
    {
      "type": "modify",
      "old_id": "10b9083549f220d20ca6fc63a8b5adcb7012e15f",
      "old_mode": 33188,
      "old_path": "services/input/InputDispatcher.cpp",
      "new_id": "1cac502562be9163c985c7a8e9d470cc8e063f7f",
      "new_mode": 33188,
      "new_path": "services/input/InputDispatcher.cpp"
    },
    {
      "type": "modify",
      "old_id": "bdd1922b9339f6f7a1a2fcda16b09b023cf2c68e",
      "old_mode": 33188,
      "old_path": "services/input/InputDispatcher.h",
      "new_id": "15fd274f5e50f3682e1c587805e1452ac6655f7a",
      "new_mode": 33188,
      "new_path": "services/input/InputDispatcher.h"
    },
    {
      "type": "modify",
      "old_id": "b552f6d5b43d5147d069a81c28467d4b089c0b65",
      "old_mode": 33188,
      "old_path": "services/input/InputWindow.cpp",
      "new_id": "0ce88673810801c7da94f0424d28426eaa061f6a",
      "new_mode": 33188,
      "new_path": "services/input/InputWindow.cpp"
    },
    {
      "type": "modify",
      "old_id": "d166ad4f679ecc0717bce92731d06d327e4c3d8a",
      "old_mode": 33188,
      "old_path": "services/input/InputWindow.h",
      "new_id": "272081c4a04c6ae6f4c841d51fe957b8826e711e",
      "new_mode": 33188,
      "new_path": "services/input/InputWindow.h"
    },
    {
      "type": "modify",
      "old_id": "67067de2c1ce19289c7f02136d58498a68ddee2c",
      "old_mode": 33188,
      "old_path": "services/input/tests/InputReader_test.cpp",
      "new_id": "131894af1b64e7d81057197762f28815a511b299",
      "new_mode": 33188,
      "new_path": "services/input/tests/InputReader_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "d3d9df4359d54becbc61f65e82a33a8af1c16a15",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/AppWindowToken.java",
      "new_id": "bfa2b3995ba81273fe92b1aa401b5965b24898ea",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/wm/AppWindowToken.java"
    },
    {
      "type": "delete",
      "old_id": "e04fd31a3ffcb5a19ed506e84415b9f50a849741",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/InputApplication.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "64c8e7ed73dbe530a66e22041440c23460acca7e",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/InputApplicationHandle.java",
      "new_id": "d78b1d9692cdf7eb92c44d5267ec3b78f9112503",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/wm/InputApplicationHandle.java"
    },
    {
      "type": "modify",
      "old_id": "65007f972ad52cc03c6bcff188cad9c56a9ec14f",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/InputManager.java",
      "new_id": "3133a19f9c511d614aabfe7047bccc82c892ae8e",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/wm/InputManager.java"
    },
    {
      "type": "modify",
      "old_id": "68066344586a5875eca5046261bf3eac4ab44031",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/InputMonitor.java",
      "new_id": "08a35603381517ae1e89c77c0ed32fdebd051f8d",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/wm/InputMonitor.java"
    },
    {
      "type": "delete",
      "old_id": "655d734002933cde87a1a1c9d025fdc537ed98d6",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/InputWindow.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "cc508c6f7013a88462b454d490b4fddce54408d1",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/InputWindowHandle.java",
      "new_id": "abf68d94cc5a20498f3d32154b8bd6250d320377",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/wm/InputWindowHandle.java"
    },
    {
      "type": "delete",
      "old_id": "6077337a8aaef5d59e5a220114ffcaffa10953b9",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/InputWindowList.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "b370ec9e12cd1e4f2cd6dcd6c293982e7d29da3a",
      "old_mode": 33188,
      "old_path": "services/java/com/android/server/wm/WindowState.java",
      "new_id": "d298ff778d97a743e0380b918a477980e9da0488",
      "new_mode": 33188,
      "new_path": "services/java/com/android/server/wm/WindowState.java"
    },
    {
      "type": "modify",
      "old_id": "e1c7305bb6de36db40932f6e64d18841f938860d",
      "old_mode": 33188,
      "old_path": "services/jni/Android.mk",
      "new_id": "6fa5dfa969b54969e8631afaddffcbe0298d475b",
      "new_mode": 33188,
      "new_path": "services/jni/Android.mk"
    },
    {
      "type": "delete",
      "old_id": "1f80242ceacccba1e5e5e88ee7d0848f3ed8228d",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputApplication.cpp",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "85fb891cfd2ba933215e2d6039e43c3e1c3a1fb4",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputApplication.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "9516964302357433b9f173c7baeb61b2ca2bbbc3",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputApplicationHandle.cpp",
      "new_id": "7de67d9fcd2b828499f6100634e04815a6905112",
      "new_mode": 33188,
      "new_path": "services/jni/com_android_server_InputApplicationHandle.cpp"
    },
    {
      "type": "modify",
      "old_id": "9d187219b2ec23a54ceab045e06ae36bf8e227d6",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputApplicationHandle.h",
      "new_id": "04cd9d60a630c3f8bd5ff9866c577c719973d62f",
      "new_mode": 33188,
      "new_path": "services/jni/com_android_server_InputApplicationHandle.h"
    },
    {
      "type": "modify",
      "old_id": "14a41096bfec24b19a41c9de468858698b46a937",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputManager.cpp",
      "new_id": "de9c9d0dbb18c265a8ab2c67b611801a540f4a44",
      "new_mode": 33188,
      "new_path": "services/jni/com_android_server_InputManager.cpp"
    },
    {
      "type": "delete",
      "old_id": "0426f6357248d71c36c8b243bfaa2ece67f2da5a",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputWindow.cpp",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "eaf7bdedbd7c5156777d9cf751079a2516c723ea",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputWindow.h",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "aaf679c62c1be2cffebe1966b820251fa81fb749",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputWindowHandle.cpp",
      "new_id": "09be88157df395a16f4dc90c19f7ff6ea0da05af",
      "new_mode": 33188,
      "new_path": "services/jni/com_android_server_InputWindowHandle.cpp"
    },
    {
      "type": "modify",
      "old_id": "43f2a6ba9536200c610a4bd02cf7e2a1a8c188e1",
      "old_mode": 33188,
      "old_path": "services/jni/com_android_server_InputWindowHandle.h",
      "new_id": "913c3b10712d08845e4ca7d229116ed6963dfc49",
      "new_mode": 33188,
      "new_path": "services/jni/com_android_server_InputWindowHandle.h"
    },
    {
      "type": "modify",
      "old_id": "9dff48b17067300bf93638775c5278d971866e73",
      "old_mode": 33188,
      "old_path": "services/jni/onload.cpp",
      "new_id": "4178039fa55a51e1e4195eced85b068658f28fe7",
      "new_mode": 33188,
      "new_path": "services/jni/onload.cpp"
    }
  ]
}
