)]}'
{
  "log": [
    {
      "commit": "6e987a46f48da0cf445c0613c037dceb4f6117a4",
      "tree": "f9503d37b906bd56f214525dfa6bff859cc09293",
      "parents": [
        "c80f4078291877450e60400dd29a004c61b875d5"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 08:40:01 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:45:07 2012 -0800"
      },
      "message": "Check stream type in AudioFlinger::createTrack\n\nA bad parameter to AudioFlinger::createTrack could cause mediaserver to crash.\n\nOther AudioFlinger stream type cleanup:\n - Simplify range check for audio_stream_type_t\n - Add comment about mStreamTypes array initialization.\n\nChange-Id: Ia33aa1cce0fdd694b08d9288816ffc097a9543d0\n"
    },
    {
      "commit": "c80f4078291877450e60400dd29a004c61b875d5",
      "tree": "5cdf38dc7c9c5f3122a3dd8a382b052ca5ffa31f",
      "parents": [
        "8c17a2f0884527c3ce42a2c6dbd073014d179b53",
        "e6f8a425da3fdcd512dfc19d2252e99abac555f4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:28:14 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:28:14 2012 -0800"
      },
      "message": "Merge \"Fix locking for mMasterVolume and mMute\""
    },
    {
      "commit": "8c17a2f0884527c3ce42a2c6dbd073014d179b53",
      "tree": "914455ede452e4c89c7c3d700fc68c6a2cb0b157",
      "parents": [
        "3c6b9cca79c872427599a325bcbb5d4a00113d80",
        "faf354dc7f8065a90174adb6e725603176f0044f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:27:46 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:27:46 2012 -0800"
      },
      "message": "Merge \"Use size_t for frame size\""
    },
    {
      "commit": "3c6b9cca79c872427599a325bcbb5d4a00113d80",
      "tree": "622dfb8e526d84be17e76a0ee91c57f51f247e33",
      "parents": [
        "a7f656206550dea94e51dd8c9bb2dd8734bcdf92",
        "bc1d77b6cbce23fbe25f7231651037ae195bc90e"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:25:36 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:25:36 2012 -0800"
      },
      "message": "Merge \"Use audio_stream_type_t consistently\""
    },
    {
      "commit": "dd3ca2e268bc638fb57092a4e12df84cf2c5a6a9",
      "tree": "fb56f9e519918d3e857a2da53041b965e50b9332",
      "parents": [
        "ade420df08a40bd568df48a3b023b63aafc8e3ee",
        "4790bd8be850235e9c6f1acf1e1e6146ef2996b3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 17 07:18:26 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 17 07:18:26 2012 -0800"
      },
      "message": "Merge \"AudioTrack and AudioFlinger send level cleanup\""
    },
    {
      "commit": "e6f8a425da3fdcd512dfc19d2252e99abac555f4",
      "tree": "b3a5da7fb653c76a609f3b9f2233d839c7436d71",
      "parents": [
        "6a78cd85867c5f22e4e82259b81fab46088331ad"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 13 11:47:54 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 15:53:10 2012 -0800"
      },
      "message": "Fix locking for mMasterVolume and mMute\n\nmMasterVolume and mMute are both protected by mutex in AudioFlinger class, but\nthere were two places where they were accessed without a mutex.\n\nAlso make AudioFlinger::mMasterMute private not protected.\n\nChange-Id: Ia3897daeb5c50313df5bcc071824357526237f3e\n"
    },
    {
      "commit": "4790bd8be850235e9c6f1acf1e1e6146ef2996b3",
      "tree": "1820560bc322ca1e67abee5d2a65c0539b72dbf5",
      "parents": [
        "6a78cd85867c5f22e4e82259b81fab46088331ad"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 14:22:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 15:25:14 2012 -0800"
      },
      "message": "AudioTrack and AudioFlinger send level cleanup\n\nAdd an API to control block for getting/setting send level.\nThis allow us to make the mSendLevel field private.\n\nDocument the lack of barriers.\n\nUse 0.0f to initialize floating-point values (for doc only).\n\nChange-Id: I59f83b00adeb89eeee227e7648625d9a835be7a4\n"
    },
    {
      "commit": "dfef19940f2af5c043e0c6fb49909f093b8ff96b",
      "tree": "d649b2e130720c400641f2ba6fb5c0eba7d130fa",
      "parents": [
        "893eace60992a640064b454d7ad477c1bbffcb1d",
        "c0cb3dc2c16883f19bf1caf652b2fcdb55a1a856"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 13 15:16:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 15:16:29 2012 -0800"
      },
      "message": "Merge \"Fix a few memory leaks in the input dispatcher.\""
    },
    {
      "commit": "faf354dc7f8065a90174adb6e725603176f0044f",
      "tree": "8b5b80b7b9c082bd226c0e25cc75d862b2db4054",
      "parents": [
        "fcbbaf1d837e96e77d0ec45a050e8a41060ae7f3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 09:48:27 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 14:58:44 2012 -0800"
      },
      "message": "Use size_t for frame size\n\nexcept in the control block, where we don\u0027t have room.\n\nIn AudioFlinger::ThreadBase::TrackBase::getBuffer,\nread the frame size from control block only once.\n\nChange-Id: Id6c4bccd4ed3e07d91df6bbea43bae45524f9f4e\n"
    },
    {
      "commit": "1e80869133924e1ffff5c10ca787da303fd0b53d",
      "tree": "4c354abe54c717ec7c52c6a607947e5f57e70ea3",
      "parents": [
        "fcbbaf1d837e96e77d0ec45a050e8a41060ae7f3"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 19 13:55:34 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 13:45:39 2012 -0800"
      },
      "message": "Get AID_GRAPHICS from right place\n\nChange-Id: I97b1754dc7260fec083275c71a8f71ebfb2cefa8\n"
    },
    {
      "commit": "f88d1493aa968d3da551116f076edd5e21f7ccfc",
      "tree": "553a98239d2e3d547da50e658c57a708efc17aad",
      "parents": [
        "31cef1451e84e613825a78716f4b8cedd5ae9084",
        "100651779fde99f7ae2a10719d688b51115f08e9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 13 13:01:48 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 13 13:01:48 2012 -0800"
      },
      "message": "am 10065177: am 2e282f35: Merge \"Fix issue #5823276: home repaints after full-screen app is exited\" into ics-mr1\n\n* commit \u0027100651779fde99f7ae2a10719d688b51115f08e9\u0027:\n  Fix issue #5823276: home repaints after full-screen app is exited\n"
    },
    {
      "commit": "2e282f35b009fe4c23daca35592dae2032641643",
      "tree": "8dc3befb0826cc22653a327281f86ebc904647e9",
      "parents": [
        "da7b7700d0f499ac9b0bac51365b3da235388ae6",
        "01b02a734d2988c22b00f5df6346ad03d8bf52b6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jan 13 12:56:40 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 12:56:40 2012 -0800"
      },
      "message": "Merge \"Fix issue #5823276: home repaints after full-screen app is exited\" into ics-mr1"
    },
    {
      "commit": "ecce05fac6600d01b5dca1cbf6345837e2840c5a",
      "tree": "0c7831bc04f92baecf94b327bb8b6d77abd11b7d",
      "parents": [
        "60c6b082eaa534402911adb2a5e76618e6e0e49d",
        "89620c5d982858f590f3740169c9f69ee380be3e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jan 13 12:18:55 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 13 12:18:55 2012 -0800"
      },
      "message": "am 89620c5d: am 2cf18d28: Merge \"Streamline package-installed handling by the Backup Manager\" into ics-mr1\n\n* commit \u002789620c5d982858f590f3740169c9f69ee380be3e\u0027:\n  Streamline package-installed handling by the Backup Manager\n"
    },
    {
      "commit": "2cf18d28785fdd188641867503586627cb212302",
      "tree": "7b9d010b690c7ada4c3b012b244748035d4b128f",
      "parents": [
        "2753e826b2d0e7a4c5f80c3e825afa4aa579942b",
        "0bacfd2ba68d21a68a3df345b830bc2a1e515b5a"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Jan 13 11:49:20 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 13 11:49:20 2012 -0800"
      },
      "message": "Merge \"Streamline package-installed handling by the Backup Manager\" into ics-mr1"
    },
    {
      "commit": "bc1d77b6cbce23fbe25f7231651037ae195bc90e",
      "tree": "6936dbe05b0edbefe69c5c3452ba64ea72a2575a",
      "parents": [
        "6a78cd85867c5f22e4e82259b81fab46088331ad"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 12 16:38:12 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 13 10:20:14 2012 -0800"
      },
      "message": "Use audio_stream_type_t consistently\n\nAt native level it was a mixture of audio_stream_type_t, int, uint32_t,\nand uint8_t.  Java is still int.  Also fixed a couple of hard-coded -1\ninstead of AUDIO_STREAM_DEFAULT, and in startToneCommand a hard-coded 0\ninstead of AUDIO_STREAM_VOICE_CALL.\n\nChange-Id: Ia33bfd70edca8c2daec9052984b369cd8eee2a83\n"
    },
    {
      "commit": "6a78cd85867c5f22e4e82259b81fab46088331ad",
      "tree": "b03aaf430edb7350e4fa881578b876b752a8e8d3",
      "parents": [
        "73f22cd4306bfc640b7d7656732e1c26e83a0895",
        "191713a51f0292b7fce72cc7e16cfd0f0204a0c7"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Jan 12 21:00:15 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 21:00:15 2012 -0800"
      },
      "message": "Merge \"Move where prop dev.bootcomplete is set\""
    },
    {
      "commit": "a8f75fe9a9753178e809666f9e88c4734a911ed5",
      "tree": "74f0244fe16cbd22f3fc9a690e9492d83cbd1468",
      "parents": [
        "5a5b84c3e1e6381375a9cb02ee4972e5348668a1",
        "87c6ea6eedbe920774e55175e921b229c4f74cc8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 12 18:49:07 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 18:49:07 2012 -0800"
      },
      "message": "Merge \"fix a bug with vsync management\""
    },
    {
      "commit": "c0cb3dc2c16883f19bf1caf652b2fcdb55a1a856",
      "tree": "fb6e5d716f4c07e49463aba171d0201fcd777347",
      "parents": [
        "dc89357810976556d20483c7fe161b68ed4d2acf"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 12 18:30:12 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 12 18:30:12 2012 -0800"
      },
      "message": "Fix a few memory leaks in the input dispatcher.\n\nBug: 5862398\nChange-Id: Iae3284a223b8307f541a7987f90f5b28e70b9244\n"
    },
    {
      "commit": "191713a51f0292b7fce72cc7e16cfd0f0204a0c7",
      "tree": "d8fc9aae23ff85cd5f2c88d3c4ca2fad36642283",
      "parents": [
        "dc89357810976556d20483c7fe161b68ed4d2acf"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Jan 12 12:02:22 2012 -0800"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Thu Jan 12 17:39:40 2012 -0800"
      },
      "message": "Move where prop dev.bootcomplete is set\n\nCurrently test harnesses depends on this flag to determine when\nthe system is fully booted, and start dismissing keyguard, launch\ntests etc. However, the flag is usually set when the boot animation\nis still running, and typically about 5 seconds before keyguard is\nup etc. Moving to to when BOOT_COMPLETE broadcast is sent makes it\nwork more reliable.\n\nWe also discussed about using sys.boot_completed instead,\nunfortunately this flag is not in all platform and we still have\nbackwards compatibility to maintain in order to drive unbundled\ntests.\n\nChange-Id: I99b084cd70d8e4bcfe490ddeca868136d32712e2\n"
    },
    {
      "commit": "0bacfd2ba68d21a68a3df345b830bc2a1e515b5a",
      "tree": "4ba0f1c83b94a9dfe2df611cb83f10c346e00cab",
      "parents": [
        "51938e26913a98aa8de0292e9be8ea9d9ebc67c3"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jan 11 14:41:19 2012 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jan 12 16:15:09 2012 -0800"
      },
      "message": "Streamline package-installed handling by the Backup Manager\n\nIn particular, don\u0027t do O(asec_apps * installed_apps) work during the\nbroadcast receiver\u0027s operation.  On devices with many installed apps\nand a large number of them moved to ASECs, this was causing the system\nprocess to become unresponsive and the watchdog to fire -- which in turn\nwould initiate a restart loop, as the same package-installed broadcast\nwould then be issued again once the package manager rescanned the ASEC\ncontainers, ad infinitum.  With this change, the expensive call to the\npackage manager is only made once rather than asec_apps times.\n\nBug 5850283\n\nChange-Id: I14e280ea1fa6af19cebc58869a20fbb599c92c8c\n"
    },
    {
      "commit": "87c6ea6eedbe920774e55175e921b229c4f74cc8",
      "tree": "7787bb5346646a57e1bfd5102cbdf0d68e7c0ad1",
      "parents": [
        "2fdc357bc66b97614455c5148562a5dfb650c1b7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 12 16:13:54 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 12 16:13:54 2012 -0800"
      },
      "message": "fix a bug with vsync management\n\nthis bug was introduced recently. we were signaling *all* clients\nregardless of the vsync rate.\n\nChange-Id: I2ae8a6c820a390f602382596ba75e8ed737fb2ef\n"
    },
    {
      "commit": "5d134343ca9f3ce28704a7fa69a11e4f4d0d25a4",
      "tree": "2eea7b82cc2999771e624d06a4fb21f72377537d",
      "parents": [
        "e340527eaba89cad646e46d1d5ee34b71e9c6133",
        "1e9e7f76d5e6187befaf96eece258c27fd08bdc5"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jan 12 14:30:44 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 12 14:30:44 2012 -0800"
      },
      "message": "am 1e9e7f76: am ff321d49: Merge \"VPN: silence VPN notifications.\" into ics-mr1\n\n* commit \u00271e9e7f76d5e6187befaf96eece258c27fd08bdc5\u0027:\n  VPN: silence VPN notifications.\n"
    },
    {
      "commit": "ff321d496a6a07fc667112ecfe4d9a107d44147b",
      "tree": "fda89338361f2ebbc5bc9a8fa7333b54466d1cd2",
      "parents": [
        "aaaafca8543eaa75f1865d70c801c9b62caa56e2",
        "50fe709995d1f126e96cafde133bc4777b31d4ed"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jan 12 14:24:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 14:24:30 2012 -0800"
      },
      "message": "Merge \"VPN: silence VPN notifications.\" into ics-mr1"
    },
    {
      "commit": "01b02a734d2988c22b00f5df6346ad03d8bf52b6",
      "tree": "36cc4f3027585963a0db3ad33f907c28182f9fe1",
      "parents": [
        "d3be0a76e46584357dbb77fcd200128d0d7dc9a8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 12 14:05:03 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jan 12 14:05:03 2012 -0800"
      },
      "message": "Fix issue #5823276: home repaints after full-screen app is exited\n\nDon\u0027t consider a window as a candidate for the top fullscreen window\nif it is not going to be a candiate for layout.\n\nAlso don\u0027t consider windows a candidate for layout if their app token\nis hidden.  This fixes a transient state where we are preparing to\nunhide the window but have not done so yet.\n\nChange-Id: Ife5299ffa003c1df1a4f787b7a2809cbf614ec16\n"
    },
    {
      "commit": "2fdc357bc66b97614455c5148562a5dfb650c1b7",
      "tree": "d0eb8dd772b55bc17df5f23fa48d0166f7d200ca",
      "parents": [
        "3adbec281ee82e1054e6693f0250e106080bab77",
        "0db7590ed2785cfa8973dbcb6b93627ea02774ce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 12 10:37:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 10:37:10 2012 -0800"
      },
      "message": "Merge \"remove dead/usnused code\""
    },
    {
      "commit": "3adbec281ee82e1054e6693f0250e106080bab77",
      "tree": "ec8e0625a691c947282bbd14229f79dec5d82db3",
      "parents": [
        "1c66547ba25be6a1893df0ae26857f649474843a",
        "7e9a3706d9236be563341cf076ddd41098e161ea"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 12 10:36:39 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 10:36:39 2012 -0800"
      },
      "message": "Merge \"Fix an issue with VSYNC\""
    },
    {
      "commit": "cc9858049ddea5a28cbd1d6ee59dd814e21ef512",
      "tree": "78081fb7ae61805343c8b8cb732e5f6cb6d456c3",
      "parents": [
        "140d0158c46c580c45f88f9b880906d517c4e96e",
        "1800ccfa647cca6e9c051759312d6af12f134f5a"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Thu Jan 12 09:29:30 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 12 09:29:30 2012 -0800"
      },
      "message": "am 1800ccfa: am 4b1261f1: Merge \"Disable wimax when mobile data is in Settings\" into ics-mr1\n\n* commit \u00271800ccfa647cca6e9c051759312d6af12f134f5a\u0027:\n  Disable wimax when mobile data is in Settings\n"
    },
    {
      "commit": "4b1261f17ae2a0180be09b1c987ec7e70b2b46a7",
      "tree": "06954c77300120fc643b1ceac02e06b1067adb66",
      "parents": [
        "2931d8ace9118bafe08090cd41e235048b6c2eb2",
        "b97d34c7c81ed7def6d0c1d7a76d057051f7d154"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Thu Jan 12 09:24:45 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 12 09:24:45 2012 -0800"
      },
      "message": "Merge \"Disable wimax when mobile data is in Settings\" into ics-mr1"
    },
    {
      "commit": "0db7590ed2785cfa8973dbcb6b93627ea02774ce",
      "tree": "4371c3f854095cee97dec40f23b7713c40c611f0",
      "parents": [
        "7e9a3706d9236be563341cf076ddd41098e161ea"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 06 15:54:37 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 11 22:03:41 2012 -0800"
      },
      "message": "remove dead/usnused code\n\nChange-Id: I6fa2bc6ee01790abd2c1533f043d61a5e5c8d26e\n"
    },
    {
      "commit": "7e9a3706d9236be563341cf076ddd41098e161ea",
      "tree": "ad08a046ffa79d1aa1b4df3fa067bc7afa9b34e6",
      "parents": [
        "4acb784630c9ceeff1f8834751999661fdb4eab2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 09 18:19:18 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 11 22:03:40 2012 -0800"
      },
      "message": "Fix an issue with VSYNC\n\none-shot VSYNC listeners could miss a VSYNC event if\nscheduled while in waitForVsync().\n\nChange-Id: I720485784aecfea6cc7a23c77081d7af3c9c71db\n"
    },
    {
      "commit": "50fe709995d1f126e96cafde133bc4777b31d4ed",
      "tree": "cb9a7f123bcd7949be32a6b28f990fa7f9e57fe2",
      "parents": [
        "c15cf3d286f3d63d141b73f639a5a61ddb028029"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jan 11 14:26:24 2012 -0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Jan 11 14:26:24 2012 -0800"
      },
      "message": "VPN: silence VPN notifications.\n\nBug: 5852859\nChange-Id: I269d8de298a1fd69a8d777150ae97927537a5424\n"
    },
    {
      "commit": "1eac460122c94455d28d4189ce12e23794b04148",
      "tree": "023d36a5178874a36d8a6625ee55a3a57e37afe4",
      "parents": [
        "d742fa3f6074f52225cbea5acabb3404067e9d6a",
        "01aaf2c4010cc7b36e4125256357ec1cb0c29452"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 11:38:21 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 11:38:21 2012 -0800"
      },
      "message": "Merge \"Simplify range check for audio_mode_t\""
    },
    {
      "commit": "88ef0a73fc8888fb5d8414d53271df7f98bd94bf",
      "tree": "1cecf9818bf5aa5a436629bb9b9a3b3cf26661c6",
      "parents": [
        "f733831fc735ec9bdf7465dd64f861ffb7f42924",
        "a934c2cd2de781d79f4f8d556b99b8ebaf146488"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:25:23 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:25:23 2012 -0800"
      },
      "message": "Merge \"Use correct type for hardware call state\""
    },
    {
      "commit": "ca61ea84993df6e7a380a8a3f5823c6232258a9c",
      "tree": "dd08c18b3ce2ef312807f42db11b778160fac3a7",
      "parents": [
        "1ea8a351979194d5ffd27ee21df399349773ad30",
        "325ee1c69d52c233a3d74f7c230f4fb0160119da"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:23:04 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:23:04 2012 -0800"
      },
      "message": "Merge \"Use consistent style of \u0026 reference for AutoMutex\""
    },
    {
      "commit": "482b9c2d3422545a0e5a83ae5cf3b30b46ae47cc",
      "tree": "3bb5dbf73b32140e7e6c07a063f0ce15ec8bffac",
      "parents": [
        "bb8d6fb4fc272ee2eb69b69e5149f81c95b79818",
        "c95ca2c26dc5ec67247caaa986fa8ead3f17890a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:22:19 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:22:19 2012 -0800"
      },
      "message": "Merge \"AudioFlinger new can\u0027t fail\""
    },
    {
      "commit": "bb8d6fb4fc272ee2eb69b69e5149f81c95b79818",
      "tree": "5c39e00040a50b9dde3fbd6be38d48821d6b05ff",
      "parents": [
        "81754949e0110b9db44bef421d6282a3bf831138",
        "adda27acae4a8d6907399aa124657e9e77051b72"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 11 10:01:34 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 11 10:01:34 2012 -0800"
      },
      "message": "Merge \"Fix build warning\""
    },
    {
      "commit": "c36905673a7bcafe9ec74e82e6c4977f2aca6a50",
      "tree": "82497a6547db5a4a26e745051166c4ed133ee36c",
      "parents": [
        "2cc28deb9ef5c9b8aff90e1ad42c3d1915e73b26"
      ],
      "author": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Tue Jan 10 20:14:43 2012 +0900"
      },
      "committer": {
        "name": "satok",
        "email": "satok@google.com",
        "time": "Wed Jan 11 17:03:03 2012 +0900"
      },
      "message": "Enable subtypes when the implicitly enabled subtype is not ascii capable keyboard\nBug: 5806103\n\nChange-Id: I1a83b227498073c47567f73566043c273809adc9\n"
    },
    {
      "commit": "2cc28deb9ef5c9b8aff90e1ad42c3d1915e73b26",
      "tree": "f59f60ec737389c670126df52d37930647abc568",
      "parents": [
        "c347a9a61ea1caf029725dbf7ba87954b99a2582",
        "5a7bcf31a44d9875ca5fc010dc213aa2bd5b1168"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jan 10 17:41:01 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 10 17:41:01 2012 -0800"
      },
      "message": "Merge \"Move non-monotonic reporting to interface.\""
    },
    {
      "commit": "5a7bcf31a44d9875ca5fc010dc213aa2bd5b1168",
      "tree": "b0dbf2bd072f3c50d1030b65eea8e50384614229",
      "parents": [
        "b8f90a0e6eae582778bbe10b6347acbf5fc69bfb"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jan 10 17:24:44 2012 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jan 10 17:24:44 2012 -0800"
      },
      "message": "Move non-monotonic reporting to interface.\n\nReport non-monotonic NetworkStats through an observer interface\ninstead of throwing, since those events are still recoverable.\n\nChange-Id: Ic0749f4634b0ac05dbe90e95ca490957ec8b2f23\n"
    },
    {
      "commit": "01aaf2c4010cc7b36e4125256357ec1cb0c29452",
      "tree": "57746ecc4fea6436a94bf42d5958d71d40c97756",
      "parents": [
        "38e90751a25606459a9e571aa1b6c992d4c64151"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 16:47:31 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 10 15:42:32 2012 -0800"
      },
      "message": "Simplify range check for audio_mode_t\n\nAudioSystem::setMode previously allowed negative modes, but these were\nthen rejected by AudioFlinger.\n\nNow negative modes (including AUDIO_MODE_INVALID and AUDIO_MODE_CURRENT)\nare explicitly disallowed.\n\nChange-Id: I0bac8fea737c8eb1f5b6afbb893e48739f88d745\n"
    },
    {
      "commit": "de7a2f30548ac64d67e9ce8ac08090eb5458449d",
      "tree": "b60aa8928c0fe09ea5fe1363d4e5805ca6f046df",
      "parents": [
        "7944704e6c4cc10105838b78d3d8403bf66a066b"
      ],
      "author": {
        "name": "Danielle Millett",
        "email": "dmillett@google.com",
        "time": "Wed Dec 21 17:02:32 2011 -0500"
      },
      "committer": {
        "name": "Danielle Millett",
        "email": "dmillett@google.com",
        "time": "Tue Jan 10 11:40:41 2012 -0500"
      },
      "message": "DO NOT MERGE - Cherry picking from master to MR1\n\nFix 5783857: Device Policy Manager doesn\u0027t allow Face Unlock\n\nThis makes it so that if face unlock is enabled and then a device policy\nmanager that requires something more secure than face unlock is installed,\nthe user will be forced to choose a new acceptable lock type.\n\nThis was previously fixed for the case where the device had been reset, or\nthe shell was restarted after setting face unlock, but not for the case where the\ndevice remained on between setting face unlock and setting up a device policy\nmanager.\n\nAlso changed the function ordering of saveLockPattern() so that the overloaded\nwrapper function is next to the main function.\n\nChange-Id: Ibed8c4ab137ebbc07fb143faef6f047bc6dc4474\n"
    },
    {
      "commit": "ec193dec4d9ca2cfc8295c4becfe950a906a15ed",
      "tree": "c93578b9568a1b9f5b7b4b3d20732857d4e3a6c4",
      "parents": [
        "5c17a820f9e46e0756c11795b3e6f89105f2f539"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 21:36:22 2012 +0000"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157519\n\nBug: 5449033\nChange-Id: I8ceb2dba1b031a0fd68d15d146960d9ced62bbf3\n"
    },
    {
      "commit": "4e7191448d5b1eae5181463b6a553fed9cbca3e5",
      "tree": "605bb61672435ce0d19efa3cdaf9065b4d027b5c",
      "parents": [
        "26f260a1676e22f7212ebfaadcdb46b50d0c6a66",
        "99c2fd36dc9935645441f0519111a23c59df36fa"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 11:59:17 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 09 11:59:17 2012 -0800"
      },
      "message": "Merge \"By convention const goes before the type specifier\""
    },
    {
      "commit": "26f260a1676e22f7212ebfaadcdb46b50d0c6a66",
      "tree": "8de5b69abbebe9f7f92d286137f53bb9a83180b8",
      "parents": [
        "7d5178e9fbfe6fa8d473ecb7848fba05e90134bd"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Jan 03 15:28:29 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 11:57:07 2012 -0800"
      },
      "message": "Use cached reference to media.player service\n\nThis save unnecessary binder calls\n\nChange-Id: I93a60efc54d9c8fb8fab706cd4477bbfd00ffec8\n"
    },
    {
      "commit": "07d7d5a22dbb0a8df5631c8014f4706dd1e449da",
      "tree": "8a1b53e723c25c1fbe6c0cdba002f03ed68193de",
      "parents": [
        "8cf6d6f1480e760e6953bdea9fe9ab29f1e03aa8",
        "c1d810d1d0c38ba14d3f7d21d381bcbda649a0fb"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 10:25:00 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 09 10:25:00 2012 -0800"
      },
      "message": "Merge \"Replace loop by __builtin_ctz\""
    },
    {
      "commit": "f5c491651fe7575e1b05e924b0d5326481c1678b",
      "tree": "298bd9dd1022532c3025d4dcc39de114e8ba4d4d",
      "parents": [
        "08289f55eae5c4127091360e862f78d57ae24c15",
        "1dce841996993403899b5d54a5a7ae7c3be040a0"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jan 09 10:24:09 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 09 10:24:09 2012 -0800"
      },
      "message": "Merge \"suspended() and isSuspended() are const\""
    },
    {
      "commit": "3762c311729fe9f3af085c14c5c1fb471d994c03",
      "tree": "7d4caccad80ac7327c7bff96dafc857d5f4631ad",
      "parents": [
        "7a939077bd14521c7d351af98df7ed75a8ec9c15"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "143c7c885487ff665ad87c259d4b3b089d0bfec4",
      "tree": "0411c1f89b919f20be187bef9eb1c39b1facd9f4",
      "parents": [
        "9f0dfcd64a764126359553933fdd6a766f6565d8",
        "4bc873e6ff73200af866f8c9efca66ad8ed23682"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 15:51:44 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 06 15:51:44 2012 -0800"
      },
      "message": "am 4bc873e6: am 7944704e: Merge \"Switch camera sounds to always use the system enforced audio stream.\" into ics-mr1\n\n* commit \u00274bc873e6ff73200af866f8c9efca66ad8ed23682\u0027:\n  Switch camera sounds to always use the system enforced audio stream.\n"
    },
    {
      "commit": "c95ca2c26dc5ec67247caaa986fa8ead3f17890a",
      "tree": "4af6d4f7493f0aa0ebd72825c9c1cbf506c041da",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 15:03:11 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 15:12:25 2012 -0800"
      },
      "message": "AudioFlinger new can\u0027t fail\n\nChange-Id: I7dae05a5ea1c962a9975386eab1fedbbe106ffba\n"
    },
    {
      "commit": "70522addd031f6c667849f76c074e463a141c61d",
      "tree": "826b49d8e3d08f5148db98ff3c651bb9d75989e3",
      "parents": [
        "128386ca9a32a4bbce094c30fec8bc6522f04d03"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 06 13:58:01 2012 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 06 13:58:01 2012 -0800"
      },
      "message": "Don\u0027t allow reading of packagelist files.\n\nEnsure that all requests to read the list of installed packages\ngo through the PackageManager directly. Don\u0027t allow non-system\nprogram to directly read the raw package list files.\n\nChange-Id: Id083e6b3de4dd9173abfdc741ebf3f60997a1052\n"
    },
    {
      "commit": "325ee1c69d52c233a3d74f7c230f4fb0160119da",
      "tree": "c92c52775c98376154b94f01a7e7cae499389b79",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 15:41:56 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 13:33:41 2012 -0800"
      },
      "message": "Use consistent style of \u0026 reference for AutoMutex\n\nAutoMutex, which is a typedef for Mutex::Autolock, is overloaded for\neither a reference (\u0026) or pointer (*) parameter, but we prefer to use\nthe reference form when the mutex is known at compile time.\n\nChange-Id: I3515e6d6ab7959b2356a27fa3b04fd49e42cb31e\n"
    },
    {
      "commit": "a934c2cd2de781d79f4f8d556b99b8ebaf146488",
      "tree": "58765382e3074b51807c7cabe6bcc2c76d8c4694",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 11:02:33 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 13:29:47 2012 -0800"
      },
      "message": "Use correct type for hardware call state\n\nChange-Id: Ic6d98b129e3ec653df1d8f7e829adf8dccb4f378\n"
    },
    {
      "commit": "b97d34c7c81ed7def6d0c1d7a76d057051f7d154",
      "tree": "5a4d87a7e767ba7ab52ae5a61b0998f62fd6eaa1",
      "parents": [
        "dacbf67ab915fa8b987f6fb9f044160af92652cd"
      ],
      "author": {
        "name": "tk.mun",
        "email": "tk.mun@samsung.com",
        "time": "Fri Jan 06 10:43:52 2012 +0900"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Fri Jan 06 10:32:54 2012 -0800"
      },
      "message": "Disable wimax when mobile data is in Settings\n\n- Add wimax related code in handleSetMobileData to disable wimax when Moblie data is disabled (Settings -\u003e Wireless \u0026 Networks - More -\u003e Mobile Networks -\u003eData Enabled)\n\nChange-Id: Ibf2d9da2eb90d161128005f26ac4b3e991526af4\nSigned-off-by: tk.mun \u003ctk.mun@samsung.com\u003e\n"
    },
    {
      "commit": "b7feb1c91f1053adb1815bc522c43db3f2c3f598",
      "tree": "7ca9c3301b21b0772ffac64bd0fdfd988ec4e750",
      "parents": [
        "dacbf67ab915fa8b987f6fb9f044160af92652cd"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Jan 05 15:34:53 2012 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Jan 06 10:24:01 2012 -0800"
      },
      "message": "Switch camera sounds to always use the system enforced audio stream.\n\nInstead of picking between the music stream and the enforced audio\nstream, change the camera service to always play sounds through\nenforced system stream. Also update the currently-hidden CameraSound\nAPI to match.\n\nBug: 5778365\nChange-Id: I3cc64b1d1ff567dbac8020a665d5b19846197ff3\n"
    },
    {
      "commit": "99c2fd36dc9935645441f0519111a23c59df36fa",
      "tree": "9813b187f50e6308993a75ef2a81674cea9a3c81",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 07:46:30 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 08:00:59 2012 -0800"
      },
      "message": "By convention const goes before the type specifier\n\nChange-Id: I70203abd6a6f54e5bd9f1412800cc01212157e58\n"
    },
    {
      "commit": "adda27acae4a8d6907399aa124657e9e77051b72",
      "tree": "c5c9e4c79e8a3e9bba84d404ed8dcb2b1a4b754f",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 07:47:26 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 06 07:49:34 2012 -0800"
      },
      "message": "Fix build warning\n\nChange-Id: Ic99608d0c14ed56c02f036e0bbaaae1b16bab8ba\n"
    },
    {
      "commit": "8564c8da817a845353d213acd8636b76f567b234",
      "tree": "71acbd8ace822c769aef917629bf5a079f63274d",
      "parents": [
        "c42e6a0bed2c88fd03466c5104d62d7f98e68768"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "c1d810d1d0c38ba14d3f7d21d381bcbda649a0fb",
      "tree": "6e8c6876cf21d86a7e73eeba9492a547a3bc6c8a",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 14:38:29 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 15:31:19 2012 -0800"
      },
      "message": "Replace loop by __builtin_ctz\n\nUsing the builtin is faster on some platforms, for example on ARM it\u0027s\n19 instructions instead of 13, and is O(1) instead of O(n).  Of course,\ntrack creation is an inherently slow operation, so this doesn\u0027t matter\nmuch now.  But if we add support for virtual tracks, then physical tracks\nwill be allocated/freed more frequently.  Also just on principle ...\n\nChange-Id: I3f590934092bd7a1869cbedbc7357928aa5cc8ff\n"
    },
    {
      "commit": "bd47cac4dfc8440a848b33107cba1d6773f3e124",
      "tree": "90def33029a99f96318ef4661203f24cce060f07",
      "parents": [
        "c726ff02c7749f134885decadd2ea86877119c3d",
        "6215d3ff4b5dfa52a5d8b9a42e343051f31066a5"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 14:07:02 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 14:07:02 2012 -0800"
      },
      "message": "Merge \"Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\""
    },
    {
      "commit": "32350c7ab2f56b6d70437ba62f85232fd0b2c24a",
      "tree": "bdd5fb2cf5ff7275265190bc1c67b93957dcb469",
      "parents": [
        "6b14d5858056d49d2cd2162cd043908794e5a4df",
        "4f74d552d54fd26bc377f333fccb671d20519b3e"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Thu Jan 05 11:39:26 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 11:39:26 2012 -0800"
      },
      "message": "Merge \"Filter our v6 address from tethering dns.\""
    },
    {
      "commit": "1dce841996993403899b5d54a5a7ae7c3be040a0",
      "tree": "ec9268686d4a7a02657fc40bf3d4d915211aa9aa",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 04 11:01:11 2012 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 10:51:02 2012 -0800"
      },
      "message": "suspended() and isSuspended() are const\n\nChange-Id: I04b95970b5a645b64e7e64fffd46d868354dda66\n"
    },
    {
      "commit": "6b14d5858056d49d2cd2162cd043908794e5a4df",
      "tree": "1769054b6c0d5acd701a4e832bba46af1d057e77",
      "parents": [
        "a8719ad9d53d3fe51e8031b2471e9558b8ef727f",
        "68deb15a2b665531c6c885d297b12ad1f1c17d88"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 08:20:10 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 08:20:10 2012 -0800"
      },
      "message": "Merge \"Remove the notion of \"active track\" from mixer\""
    },
    {
      "commit": "a8719ad9d53d3fe51e8031b2471e9558b8ef727f",
      "tree": "b64e560b500236cbe7f9f31b26a5c5f2032373e7",
      "parents": [
        "9a03482c66b2f5c30c7fde38216239a1f233df02",
        "e80a4ccd2bac7bf121441e257044f5813e85180f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 07:38:29 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 07:38:29 2012 -0800"
      },
      "message": "Merge \"Use the standard CC_LIKELY and CC_UNLIKELY macros\""
    },
    {
      "commit": "e80a4ccd2bac7bf121441e257044f5813e85180f",
      "tree": "795c33992f702be01aac2ffbfb652408168d9b26",
      "parents": [
        "7c48707a9d320230452d5937239f28ab0ea2e695"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 09:51:17 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 05 07:33:45 2012 -0800"
      },
      "message": "Use the standard CC_LIKELY and CC_UNLIKELY macros\n\nSeveral source files privately defined macros LIKELY and UNLIKELY in terms\nof __builtin_expect. But \u003ccutils/compiler.h\u003e already has CC_LIKELY and\nCC_UNLIKELY which are intended for this purpose.  So rename the private\nuses to use the standard names.\n\nIn addition, AudioFlinger was relying on the macro expanding to extra ( ).\n\nChange-Id: I2494e087a0c0cac0ac998335f5e9c8ad02955873\n"
    },
    {
      "commit": "dc8627e7dcd019ec328878b1f7855890d39ed0ab",
      "tree": "bdeeece3bdad99f55c8bdcd53fb901c22ef18fb8",
      "parents": [
        "157fea642cb4c10e44a61f932c68f7c3a2610a81",
        "1a4b99396d7d4c7cf0b9a3acc56807532064be90"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 04 17:39:12 2012 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 04 17:39:12 2012 -0800"
      },
      "message": "resolved conflicts for merge of 1a4b9939 to master\n\nChange-Id: I0c910d391a38a916d8431f7d1f5b82e39e1a66c2\n"
    },
    {
      "commit": "6215d3ff4b5dfa52a5d8b9a42e343051f31066a5",
      "tree": "fa31802ed64676368447b67d20567fc1e806c79d",
      "parents": [
        "c9c76a82c6d0bf2362044d899013832882f32c94"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\n"
    },
    {
      "commit": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "3c673732ead2721c564c2bd46780e8ebf10e948b",
      "tree": "803903c54b44ebfa2a647b125054cb4749359331",
      "parents": [
        "dd13756fdcfe3b254ef052b3c983a9bc28ba5520",
        "2364a222fcba233d66d0a9cde691d1d6e82227db"
      ],
      "author": {
        "name": "Danielle Millett",
        "email": "dmillett@google.com",
        "time": "Tue Jan 03 13:44:28 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 03 13:44:28 2012 -0800"
      },
      "message": "Merge \"Fix 5783857: Device Policy Manager doesn\u0027t allow Face Unlock\""
    },
    {
      "commit": "b8f90a0e6eae582778bbe10b6347acbf5fc69bfb",
      "tree": "df53d1eb393193d10a612e797a92238f6abf88f0",
      "parents": [
        "478e45be576a08567333e4846ee80de11acfdfb6",
        "da6aedf716bfdd40148823fb63d666d34b7b425e"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Tue Jan 03 10:57:19 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 03 10:57:19 2012 -0800"
      },
      "message": "Merge \"Test the correct return code from call to cryptfs.\""
    },
    {
      "commit": "c1bac3a6e240c1c9a14a7b515f585977fb908930",
      "tree": "bae143af880c94515201173c5c715623f5204c99",
      "parents": [
        "2b072677538de979961b5bf527109fdab1713731"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Dec 16 15:00:31 2011 -0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Dec 27 13:14:51 2011 -0800"
      },
      "message": "VPN: fix a CloseGuard warning.\n\nChange-Id: Ic237a33038be9a170c1f9128332a8743c57971ed\n"
    },
    {
      "commit": "72dafb20e036b8844775e3456e5d06a8a8a2cd50",
      "tree": "88d825ec88c2475b0d36617545f6f20bbdfaa1fd",
      "parents": [
        "c892e177c4f7a41e910c70f68d4e213589da1396"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 22 16:08:41 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 22 16:08:41 2011 -0800"
      },
      "message": "audioflinger: fix clicks on 48kHz audio.\n\nThe calculation done in prepareTracks_l() for the minimum amount\noff frames needed to mix one output buffer had 2 issues:\n- the additional sample needed for interpolation was not included\n- the fact that the resampler does not acknowledge the frames consumed\nimmediately after each mixing round but only once all frames requested have been used\nwas not taken into account.\nThus the number of frames available in track buffer could be considered sufficient although\nit was not and the resampler would abort producing a short silence perceived as a click.\n\nIssue 5727099.\n\nChange-Id: I7419847a7474c7d9f9170bedd0a636132262142c\n"
    },
    {
      "commit": "2364a222fcba233d66d0a9cde691d1d6e82227db",
      "tree": "37d742acfea0c4409fe4b63327035a515e0181e1",
      "parents": [
        "f3bd2f7a3f2eadd5126b1a55ca45bdbffe80ceeb"
      ],
      "author": {
        "name": "Danielle Millett",
        "email": "dmillett@google.com",
        "time": "Wed Dec 21 17:02:32 2011 -0500"
      },
      "committer": {
        "name": "Danielle Millett",
        "email": "dmillett@google.com",
        "time": "Thu Dec 22 10:00:44 2011 -0500"
      },
      "message": "Fix 5783857: Device Policy Manager doesn\u0027t allow Face Unlock\n\nThis makes it so that if face unlock is enabled and then a device policy\nmanager that requires something more secure than face unlock is installed,\nthe user will be forced to choose a new acceptable lock type.\n\nThis was previously fixed for the case where the device had been reset, or\nthe shell was restarted after setting face unlock, but not for the case where the\ndevice remained on between setting face unlock and setting up a device policy\nmanager.\n\nAlso changed the function ordering of saveLockPattern() so that the overloaded\nwrapper function is next to the main function.\n\nChange-Id: Ibed8c4ab137ebbc07fb143faef6f047bc6dc4474\n"
    },
    {
      "commit": "68deb15a2b665531c6c885d297b12ad1f1c17d88",
      "tree": "8699b725bd438d7e5633911a943276f2e131e237",
      "parents": [
        "9cfff10bf5266f5bda99d2e3cbbc19c046924dc8"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 19 15:06:39 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 20 16:29:21 2011 -0800"
      },
      "message": "Remove the notion of \"active track\" from mixer\n\nThis is a first step towards making the mixer more object-oriented.\n\nChange-Id: Ifd445d0e471023a7f5c82e934736ffc95ba1b05b\n"
    },
    {
      "commit": "4f74d552d54fd26bc377f333fccb671d20519b3e",
      "tree": "c772b3352681b951e3104f4b27ceedaafc07bc3b",
      "parents": [
        "01583ef715641c8a3ce68269b091e75adbe9335a"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Mon Dec 19 16:59:31 2011 -0800"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "rgreenwalt@google.com",
        "time": "Tue Dec 20 14:47:22 2011 -0800"
      },
      "message": "Filter our v6 address from tethering dns.\n\nDon\u0027t support IPv6 yet, and the tools crash when they see one, so\nfilter them out.\n\nbug:5763980\nChange-Id: Ie9a4445a3c72df3f7ab4320c507ebc8e8cd440ff\n"
    },
    {
      "commit": "bdb0cee0efc7e99aff05673e69cd5c716aec9117",
      "tree": "51b09fbc8d67ec86a372df7d26d5d6aae642bc59",
      "parents": [
        "e593ea103e78f144ac01b40fd818079d42f0827c",
        "31ba2e5541fb9fae2f17446d990e3e1e7a9b046d"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 20 10:29:49 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 20 10:29:49 2011 -0800"
      },
      "message": "Merge \"Remove dead code\""
    },
    {
      "commit": "da6aedf716bfdd40148823fb63d666d34b7b425e",
      "tree": "24c3e406d196dfce461b62c8a78480d39b090b3d",
      "parents": [
        "9cfff10bf5266f5bda99d2e3cbbc19c046924dc8"
      ],
      "author": {
        "name": "Fredrik Roubert",
        "email": "roubert@google.com",
        "time": "Tue Dec 20 17:34:43 2011 +0100"
      },
      "committer": {
        "name": "Fredrik Roubert",
        "email": "roubert@google.com",
        "time": "Tue Dec 20 18:47:33 2011 +0100"
      },
      "message": "Test the correct return code from call to cryptfs.\n\nThis was broken in commit dd519fac9b79f36a27909149a90fce4321ed1c20\n(certainly by mistake), in which Integer.parseInt(tokens[1]) was\nerrornously replaced with event.getCode().\n\nChange-Id: Ic5af5a2ec5f321da21a4a5db25f6908462f6cae8\n"
    },
    {
      "commit": "0ca16d6ba6a2e952bf39961abd7c6f720871ef01",
      "tree": "c7cca6ec6f778920ec8d613bb6d8da9e7616aecc",
      "parents": [
        "5f45cbac03aef1aaa4e6947c3a1188768343686a",
        "4abf88244b73e80df5901d4e7508f879d80758c2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 19 17:26:24 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Dec 19 17:26:24 2011 -0800"
      },
      "message": "Merge \"audio effects: rename configure command\""
    },
    {
      "commit": "4abf88244b73e80df5901d4e7508f879d80758c2",
      "tree": "d24cb14b8e572f83816a10072dd699b32e38c19a",
      "parents": [
        "51a0e745ee29aa90e2c8c3d7c7bdc083bdc0028d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 16 15:30:36 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Dec 19 17:08:31 2011 -0800"
      },
      "message": "audio effects: rename configure command\n\nRenamed audio effect library interface command for audio format\nconfiguration from EFFECT_CMD_CONFIGURE to EFFECT_CMD_SET_CONFIG.\nThis makes the naming more consistent with other exixsting commands\nand allow adding a new command to get the configuration (EFFECT_CMD_GET_CONFIG).\nSame change for reverse channel configuration renamed from\nEFFECT_CMD_CONFIGURE_REVERSE to EFFECT_CMD_SET_CONFIG_REVERSE.\n\nImplemented EFFECT_CMD_GET_CONFIG in exisitng effect libraries.\n\nChange-Id: Ia7b1c620f13797fe5aceb3b0b4acbacce09fb067\n"
    },
    {
      "commit": "31ba2e5541fb9fae2f17446d990e3e1e7a9b046d",
      "tree": "b1908b85044a8002f8d016470a330efd34469734",
      "parents": [
        "e61fd281a8cb69ae45c5de4b160ab86226083152"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 09:53:12 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Dec 19 15:55:47 2011 -0800"
      },
      "message": "Remove dead code\n\nChange-Id: Icf23f7f90fdeb660f4015f22cf239e6d05f5d03c\n"
    },
    {
      "commit": "279f8721678b55518dc9c6263673619492577d89",
      "tree": "8ca498397d1c05509110598737ce37d1a3850380",
      "parents": [
        "d9de2d21efd4679f17ff1b25081f0462649810e4",
        "1f6f05da93d8a77d30456809fac1a6ccaa545e31"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 15:10:36 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 15:10:36 2011 -0800"
      },
      "message": "Merge \"Use constants for 2 and 32\""
    },
    {
      "commit": "d9de2d21efd4679f17ff1b25081f0462649810e4",
      "tree": "b077deff2348c9fecc73fcf00571f2ac063a7567",
      "parents": [
        "1b678528237d4eea623840ce3ba5520c59ca4b2c",
        "490909d2c057f348c0a6c69e5e6e9ab48fa8ea07"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 15:02:30 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 15:02:30 2011 -0800"
      },
      "message": "Merge \"Extract out audio DSP code to utility library\""
    },
    {
      "commit": "1f6f05da93d8a77d30456809fac1a6ccaa545e31",
      "tree": "4aff9ba878a056d217b3c263f3fbe082ff545be3",
      "parents": [
        "586995afe6768a8acfb8db202f7b9c69d49b73c4"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Dec 13 11:52:35 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 14:55:05 2011 -0800"
      },
      "message": "Use constants for 2 and 32\n\nChange-Id: If820dfd58b6df258570750610a07af99598d9e53\n"
    },
    {
      "commit": "586995afe6768a8acfb8db202f7b9c69d49b73c4",
      "tree": "f4b00ab212a8d8dcca5dc16984b739c0733ed6a4",
      "parents": [
        "b371925125f20b3b861d251f323c2291287047a8",
        "bde164abbc1af76c081f081160c5395af9133796"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 13:31:33 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 13:31:33 2011 -0800"
      },
      "message": "Merge \"Use switch in AudioMixer::setParameter\""
    },
    {
      "commit": "bde164abbc1af76c081f081160c5395af9133796",
      "tree": "0c28c923fd1a7cb19d2a080dbf2ad25bfa84a299",
      "parents": [
        "aba0568dc47d8afafdb9148fd7e3b70dcfbec1f7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu May 05 08:19:00 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 13:28:33 2011 -0800"
      },
      "message": "Use switch in AudioMixer::setParameter\n\nReplace series of if/then/elses by easier-to-read switch.  Also return\nvoid instead of status_t, since callers weren\u0027t checking it. Assert on\nbad input parameters.\n\nChange-Id: Ie1f0a297977b28501d20e1af819afed9b4750616\n"
    },
    {
      "commit": "b371925125f20b3b861d251f323c2291287047a8",
      "tree": "65dcfcf65914b8909c0a3953044869550636a439",
      "parents": [
        "aba0568dc47d8afafdb9148fd7e3b70dcfbec1f7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 15:32:27 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 13:22:41 2011 -0800"
      },
      "message": "deleteTrackName now asserts on bad input parameter\n\nThis is safe, as the input parameter is always track-\u003ename(),\nwhich must be valid.\n\nChange-Id: Iea8ea3a5706c27026335526ba8851030d00681f8\n"
    },
    {
      "commit": "1fd4de0adc9e93aa01dd8e1aef1a83b85b9a7579",
      "tree": "fa91f2ef32409cdc7c376b313d90d577cb71e7f2",
      "parents": [
        "aaf30e370f9a1aa645039138f54246ca4cd483fa",
        "6754ba24f12a54b97b3ca1c5d29fc23c15980abe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Dec 16 12:33:54 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 12:33:54 2011 -0800"
      },
      "message": "Merge \"Add plumbing for dumping database info using dumpsys.\""
    },
    {
      "commit": "fe781c8ccff69007ed856faf3dcf1ec04cc835f3",
      "tree": "0a17da1f0a5391a5e4493d123ec001605e67b12c",
      "parents": [
        "c6a7f358e86e9debdc110236797fba911bd9474a",
        "bfd89b35bae3f679e1a219f22c07bde9eb63241b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Dec 16 12:30:25 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 12:30:25 2011 -0800"
      },
      "message": "Merge \"Don\u0027t forget to close files.\""
    },
    {
      "commit": "c6a7f358e86e9debdc110236797fba911bd9474a",
      "tree": "a7f7115d31b526c23dcc4cf5b9cca8a5412da23d",
      "parents": [
        "d63707f754c0fae88fef8363b3b1d6677f8e0aaf",
        "44fcb83b38b062a650ddf556fe7f5e34905df9ea"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Fri Dec 16 12:27:03 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 12:27:03 2011 -0800"
      },
      "message": "Merge \"Add a new ui mode for \"appliance\"\""
    },
    {
      "commit": "490909d2c057f348c0a6c69e5e6e9ab48fa8ea07",
      "tree": "c5680d3ec13e6a47f27d4892982de0aeffaaf807",
      "parents": [
        "e61fd281a8cb69ae45c5de4b160ab86226083152"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 09:52:39 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 11:42:03 2011 -0800"
      },
      "message": "Extract out audio DSP code to utility library\n\nChange-Id: Ib8ce72028a7ea30e82baa518e381370e820ebbd0\n"
    },
    {
      "commit": "f96272c3cdb3c3f6177d3fcd29e597e10dc2040f",
      "tree": "510e4f1987864b81d2b148056ace43a3b594b698",
      "parents": [
        "844756be54681dd96b822558b136367e459e5e6a",
        "afb40b5fcfd9565be11d34eca243f4d054b92e97"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 07:30:14 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 07:30:14 2011 -0800"
      },
      "message": "Merge \"setActiveTrack and setBufferProvider can\u0027t fail\""
    },
    {
      "commit": "844756be54681dd96b822558b136367e459e5e6a",
      "tree": "a35903be8464f32985eab0bc9cc5b68ad85c53c5",
      "parents": [
        "0904c203c4c56e43f723522351b7a3bc304196ef",
        "af62dbca028583a95703c1305e2bcc050cdcb93f"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Dec 16 07:29:57 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Dec 16 07:29:57 2011 -0800"
      },
      "message": "Merge \"Simplify enable/disable mixing\""
    },
    {
      "commit": "6754ba24f12a54b97b3ca1c5d29fc23c15980abe",
      "tree": "64c4241b75e87fb617388796f99262a2554fa31a",
      "parents": [
        "d5064be3b5922ee6522a33f8b729ffee2e3d7b4b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Dec 14 20:20:01 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Dec 16 04:01:00 2011 -0800"
      },
      "message": "Add plumbing for dumping database info using dumpsys.\n\nChange-Id: I51b0364c3d3d41aa38a759fbce48e625fff1b2dd\n"
    },
    {
      "commit": "d6451e02ad2da274c64b973561bbece6a86631ef",
      "tree": "49b778f5f34fe709a2df10b655eda2ef54671f5f",
      "parents": [
        "a9099eeb241c8785b777ad9ce3548ec026e8b073",
        "3df273e45864ba595b4d870fa3f6c81a770078e2"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Dec 15 18:40:21 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 15 18:40:21 2011 -0800"
      },
      "message": "Merge \"Move NMS observers to RemoteCallbackList.\""
    },
    {
      "commit": "bfd89b35bae3f679e1a219f22c07bde9eb63241b",
      "tree": "7aa10564088299187ef229d21ed8168092feb41a",
      "parents": [
        "3766a7a27535101e62af958b1d2d710daa166d7d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Dec 15 18:22:54 2011 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Dec 15 18:22:54 2011 -0800"
      },
      "message": "Don\u0027t forget to close files.\n\nChange-Id: Ibfe465e1d7a947bbe40da17e8e8a2713856f95b5\n"
    },
    {
      "commit": "cf45596da384b8712342f72bac506a179f8c0b4f",
      "tree": "b2c18edd2d995911c941d093c76cab8ddb9658c8",
      "parents": [
        "2efd1184f9c67eaebf68a5125232fcc2adb56387",
        "4b220f0a7b153901741e6a155c296730e0d547e1"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 16:17:04 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 15 16:17:04 2011 -0800"
      },
      "message": "Merge \"Improve resistance to leaks for ConfigEvent\""
    },
    {
      "commit": "2efd1184f9c67eaebf68a5125232fcc2adb56387",
      "tree": "d077aa49f3d57db7193df83457de7bccefee7195",
      "parents": [
        "f15974a37f87e32eedc9005ab8a8be6e7a1d72b0",
        "c434c90cc28fc4bf724aa618f9631822a6bd9a0c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 16:16:55 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 15 16:16:55 2011 -0800"
      },
      "message": "Merge \"Use NULL not 0 for pointers\""
    },
    {
      "commit": "44fcb83b38b062a650ddf556fe7f5e34905df9ea",
      "tree": "f5726b3011934023b43a46eb3ce3be6742a274ba",
      "parents": [
        "3766a7a27535101e62af958b1d2d710daa166d7d"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Dec 14 20:59:30 2011 -0800"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Thu Dec 15 16:16:14 2011 -0800"
      },
      "message": "Add a new ui mode for \"appliance\"\n\nThe idea is that this is a device which is more-or-less headless.  It\nmight have some limited interaction capabilities, but it\u0027s not something\nthat you want to rely on having.\n\nChange-Id: Ib92f53a120bf83de781728011721a4859def7d9f\n"
    },
    {
      "commit": "afb40b5fcfd9565be11d34eca243f4d054b92e97",
      "tree": "96da631b4cb574301809dab5bcb35b0ce22cd115",
      "parents": [
        "e61fd281a8cb69ae45c5de4b160ab86226083152"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 15:46:46 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Dec 15 15:55:51 2011 -0800"
      },
      "message": "setActiveTrack and setBufferProvider can\u0027t fail\n\nReturn void, not status_t, from setActiveTrack and setBufferProvider.\n\nThese methods returned status_t, but the callers never checked the\nreturn value.  Since these aren\u0027t externally visible APIs, they now\nreturn void, and assert on bad input parameters.\n\nChange-Id: I530ed29484596ae41e8659826ca425149c51c2a1\n"
    },
    {
      "commit": "3df273e45864ba595b4d870fa3f6c81a770078e2",
      "tree": "c3b359622baf5016a30341922e8d20d69f28808a",
      "parents": [
        "27c751dc0011fca9f88502a720670457cc22793f"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Dec 15 15:47:12 2011 -0800"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Dec 15 15:55:00 2011 -0800"
      },
      "message": "Move NMS observers to RemoteCallbackList.\n\nInternally uses Binder.linkToDeath() to handle case where remote\nobserver dies.\n\nChange-Id: I9ae0ee6e011a9715172fa079098b108f895ae956\n"
    },
    {
      "commit": "27c751dc0011fca9f88502a720670457cc22793f",
      "tree": "a939605228eef04495cf796cba0ac424fc79cd0a",
      "parents": [
        "24ef465d7f8d50484ffe7c8f79effad25a5f85d1",
        "f60d0afd1ef08a24121d015bb016df05265b6d07"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Thu Dec 15 15:37:21 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 15 15:37:21 2011 -0800"
      },
      "message": "Merge \"Restrict app data on metered networks.\""
    }
  ],
  "next": "af62dbca028583a95703c1305e2bcc050cdcb93f"
}
