)]}'
{
  "log": [
    {
      "commit": "32a55cf66e12e5e56d2e05b73c6bef453477c2bb",
      "tree": "e5709c24f92bc304bfc32f75b8f23911092c5f40",
      "parents": [
        "d752c3b3e6c576ed1f18e86a7b18c33dc7c65791"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 25 16:11:44 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 25 16:20:52 2011 -0800"
      },
      "message": "Fix sp\u003c\u003e conversion operator / constructor\n\nsome of the conversion operators were not using the proper\npointer type when calling incStrong/decStrong, usually it\nhas no bad consequences, but for some implementation\nof the ref-counted object it could lead to recording the wrong\nowner id.\n\nChange-Id: If574b9069b8a4cf6e0911a992c8f095aba799995\n"
    },
    {
      "commit": "e2ed9562fc6c88dfdeb924063f5d0ccea1912754",
      "tree": "bca3fdfddc34fa88a7553ddc23853a4e9f1493dd",
      "parents": [
        "04ee429e8907515c35ed4c6bc8189389af5e33fb"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Feb 25 14:37:32 2011 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Fri Feb 25 15:18:53 2011 -0800"
      },
      "message": "Revert \"Binder linkage no longer depends on JNI objrefs as persistent tokens\"\n\nThis reverts commit c2d55dd89743c8a38deb809f3cdf1ad2d1dbac2b.\n"
    },
    {
      "commit": "5af3d0100524ac16fb7a7fba2a83a8d135009565",
      "tree": "d11d01f4f98d928b6ce886bc66bac6808ab055af",
      "parents": [
        "66d16910a84c9a67d854cf1d2d78cee94641be1f",
        "49862c3630632303c40ca37f1791ed4b092ce063"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 24 18:27:40 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 18:27:40 2011 -0800"
      },
      "message": "Merge \"Fix a wp\u003c\u003e bug where the owner ID would be wrong\""
    },
    {
      "commit": "49862c3630632303c40ca37f1791ed4b092ce063",
      "tree": "cb7d2a8d7d615664a206243557f82abb7c03f3c3",
      "parents": [
        "ec122eb46b6ce8f6e8bb3e08c34e575de666cd3e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 24 18:12:34 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 24 18:12:34 2011 -0800"
      },
      "message": "Fix a wp\u003c\u003e bug where the owner ID would be wrong\n\nthis was introduced recently. we make sure to use\nthe correct owner id (the sp) instead of the wp.\n\nChange-Id: I78fdc6ec0c2d3e687278b70442d74d1924b512a2\n"
    },
    {
      "commit": "ffbe826804e150013acbf3ab25bd405bbbd186fc",
      "tree": "51fae9c95265246e6de2100556cb7d68746f9614",
      "parents": [
        "a28f6f11f22963e3679537e83f243edeaa5ee17c",
        "ec122eb46b6ce8f6e8bb3e08c34e575de666cd3e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 24 16:23:51 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 16:23:51 2011 -0800"
      },
      "message": "Merge \"Fix some issues with RefBase debugging.\""
    },
    {
      "commit": "7e8a69ed5cbeb2bad630877a526ff0c06880d2c2",
      "tree": "825aa761af6f028a372738bd73c46048bacc6fc7",
      "parents": [
        "373ed6fc79e6c41f4b5dbb8eb72363033f2e40b3",
        "c2d55dd89743c8a38deb809f3cdf1ad2d1dbac2b"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 24 13:22:19 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 13:22:19 2011 -0800"
      },
      "message": "Merge \"Binder linkage no longer depends on JNI objrefs as persistent tokens\""
    },
    {
      "commit": "c2d55dd89743c8a38deb809f3cdf1ad2d1dbac2b",
      "tree": "65588e96e165132b56daee0a6c3149a8f1b915a3",
      "parents": [
        "5fb008e3800032be18c6d5f1e7ace4d7c2661e26"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 17 13:00:38 2011 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Feb 24 13:15:09 2011 -0800"
      },
      "message": "Binder linkage no longer depends on JNI objrefs as persistent tokens\n\nThere are two areas that have changed to eliminate the assumption that\nlocal jobject references are both canonical and persistent:\n\n1. JavaBBinderHolder no longer holds onto and reuses it parent object\nreference per se.  Since the underlying JavaBBinder object holds a\nreal global ref, this was redundant anyway.  Now, for purposes of its\ntransient need to perform JNI operations, it simply uses the current\njobject ref(s) passed during method invocation, and no longer attempts\nto hold these refs beyond the scope of a single invocation.\n\n2. Binder obituaries no longer assume that a jobject reference to a\nrecipient will always compare \u003d\u003d as a 32-bit value with any future\nreference to the same object.  The implementation now asks Dalvik\nwhether object references match.\n\nBug 2090115\n\nChange-Id: If62edd554d0a9fbb2d2977b0cbf8ad7cc8e2e68d\n"
    },
    {
      "commit": "373ed6fc79e6c41f4b5dbb8eb72363033f2e40b3",
      "tree": "8d98b89e08e4b48b41be41f8fa95acddb3fbc051",
      "parents": [
        "808e8f683731dceb6e1bf9486b816c9cbe11cd35",
        "cc562a3576a6a8096626387472e05e8bee03352a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 24 12:37:02 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 12:37:02 2011 -0800"
      },
      "message": "Merge \"Bug 3438258 Add SurfaceTexture as MediaPlayer sink\""
    },
    {
      "commit": "6152bbc65016e526f25d24a66b92d6aa822f6ee0",
      "tree": "c889b96609acef1ddde26a338e1b4a0e5a802074",
      "parents": [
        "7b76c8d3fc25aedea6edfed9638b008faa2f6ae8",
        "c2b3cda097d2f8ac9211360aa82995d693e0764c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 24 10:01:31 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 10:01:31 2011 -0800"
      },
      "message": "Merge \"Bug 3362814 Fix SMP race in access to mRequestExit\""
    },
    {
      "commit": "e857cc8175d532eccbe75798c56bf3c5378e585e",
      "tree": "40f7645995be0645a717a9b2643446f831dcd291",
      "parents": [
        "47b8adec3904535c8d8ce2b6e42ecd736f2d90ce",
        "10a1b30dfbd0bbeae6776e353600986647c6e0a8"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Feb 24 02:51:17 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 24 02:51:17 2011 -0800"
      },
      "message": "Merge \"Add YV12 preview format to camera parameter constants.\""
    },
    {
      "commit": "10a1b30dfbd0bbeae6776e353600986647c6e0a8",
      "tree": "7dd94bd6179102475c7e2d44371a93c4b8e1d326",
      "parents": [
        "ebd4e9161895f3531f9f88b2eb5f5f6c96f9ad84"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Feb 22 15:49:25 2011 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Feb 24 18:19:48 2011 +0800"
      },
      "message": "Add YV12 preview format to camera parameter constants.\n\nbug:3463624\nChange-Id: I8f2992dadfd3fb9e3c9d67743e52da7f3212827e\n"
    },
    {
      "commit": "ec122eb46b6ce8f6e8bb3e08c34e575de666cd3e",
      "tree": "c5d6d30e2802f8e9671731cc16095c6040358f09",
      "parents": [
        "47b8adec3904535c8d8ce2b6e42ecd736f2d90ce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 16 20:23:43 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 23 22:21:41 2011 -0800"
      },
      "message": "Fix some issues with RefBase debugging.\n\nFirst slipt sp\u003c\u003e out of RefBase into StrongPointer.h so it can be reused\nmore easily and to make it clear that it doesn\u0027t require RefBase.\n\nNote: the rest of the change only affects the system when DEBUG_REFS is enabled.\n\nThe main problem we fix here is that the owner id associated with each\nreference could get out of date when a sp\u003c\u003e or wp\u003c\u003e was moved, for\ninstance when they\u0027re used in a Vector\u003c \u003e.\n\nWe fix this issue by calling into RefBase::moveReferences from\na template specialization for sp\u003cTYPE\u003e and wp\u003cTYPE\u003e of the\ntype helpers. RefBase::moveReferences() has then a chance to\nupdate the owner ids.\n\nThere is a little bit of trickery to implement this generically in\nRefBase, where we need to use a templatized functor that can turn\na sp\u003cTYPE\u003e* casted to a void* into a RefBase*.\n\nIntroduced a new debug option DEBUG_REFS_FATAL_SANITY_CHECKS\ncurrently set to 0 by default as there seem to be an issue\nwith sp\u003cANativeWindow\u003e which trips the sanity checks.\n\nChange-Id: I4825b21c8ec47d4a0ef35d760760ae0c9cdfbd7f\n"
    },
    {
      "commit": "c2b3cda097d2f8ac9211360aa82995d693e0764c",
      "tree": "8a6baf03da30391ff32d3a269df42dda278f701b",
      "parents": [
        "282ff9ae3f798dec325ce6b868f053649b596a8c"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 01 11:32:29 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 23 17:49:59 2011 -0800"
      },
      "message": "Bug 3362814 Fix SMP race in access to mRequestExit\n\nAlso fix an unlikely SMP race in access to mHoldSelf on entry to _threadLoop.\n\nChange-Id: I6cbc0b94739c7dd5e77e8a5ba0da22cdc0b1a4db\n"
    },
    {
      "commit": "7f97c4ef12263a70a5c9ee7cd16f194c0240e658",
      "tree": "b0ca0631106dac07c5a9aa0423f4b1cc9652fe87",
      "parents": [
        "17f49e4f91c04290721dc029b73b9a430f5298d5",
        "a688b574d294faae5f56224908b40856c5045aac"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 23 15:23:13 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 23 15:23:13 2011 -0800"
      },
      "message": "Merge \"Remove RefBase.h dependency on TextOutput.h\""
    },
    {
      "commit": "cc562a3576a6a8096626387472e05e8bee03352a",
      "tree": "86b53d7654e5e4a57d623dd616df57aa05801616",
      "parents": [
        "1beb48055208bca57c6bf9d26676f86386e3a5dc"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Feb 08 17:26:17 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Feb 23 15:02:56 2011 -0800"
      },
      "message": "Bug 3438258 Add SurfaceTexture as MediaPlayer sink\n\nThis change enables the use of a SurfaceTexture in place of a Surface\nas the video sink for an android.media.MediaPlayer. The new API\nMediaPlayer.setTexture is currently hidden.\n\nThis includes:\n - New Java and C++ interfaces\n - C++ plumbing and implementation (JNI, Binder)\n - Stagefright AwesomePlayer and NuPlayer use ANativeWindow\n   (either Surface or SurfaceTextureClient)\n\nChange-Id: I2b568bee143d9eaf3dfc6cc4533c1bebbd5afc51\n"
    },
    {
      "commit": "afc671fc5ed81941c972d5318555b84a63eb2619",
      "tree": "9413c42864c2ebaf65dd90c5b45af6f95525f3c8",
      "parents": [
        "bba9529d796654b0ac7a966261daf53706dfabc9",
        "e00cab707dcaf6f05adb5ccb9c80fdf25c483427"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 23 10:38:21 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 23 10:38:21 2011 -0800"
      },
      "message": "Merge \"Application-managed callback buffer support for raw image\""
    },
    {
      "commit": "87e639bc151551c9618641a6765837b44eb90b9b",
      "tree": "500a02d889ecbe86dd305df226d7282153e4c740",
      "parents": [
        "282ff9ae3f798dec325ce6b868f053649b596a8c",
        "d211f41f764fe81fe00b10a99b4b44cb84479cbe"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Feb 23 09:58:33 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 23 09:58:33 2011 -0800"
      },
      "message": "Merge \"- Add method in MediaPlayerService to collect and pull   codec usage (duration) for the battery app - Collect MediaPlayer decoding usage data\""
    },
    {
      "commit": "d211f41f764fe81fe00b10a99b4b44cb84479cbe",
      "tree": "462cf2a7da5216c45c5f105dac33ef607f893972",
      "parents": [
        "25474a2230152700e5f7eb7e1495be40c6bd26a8"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Sat Feb 19 18:37:57 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Feb 22 22:42:05 2011 -0800"
      },
      "message": "- Add method in MediaPlayerService to collect and pull\n  codec usage (duration) for the battery app\n- Collect MediaPlayer decoding usage data\n\nChange-Id: I0ef4e32b6a041ba1fe73c19f9c67185c61d03965\n"
    },
    {
      "commit": "e00cab707dcaf6f05adb5ccb9c80fdf25c483427",
      "tree": "1e69fd3c108e675a5a68b598f31882df58b602fb",
      "parents": [
        "16dc3073a2f06a77d9873e536f633a4adf575fce"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 17 16:38:06 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 22 20:48:15 2011 -0800"
      },
      "message": "Application-managed callback buffer support for raw image\n\nbug - 3292153\n\nChange-Id: I9789f7c5cde3a3889d7375e881181e9152d95fc2\n"
    },
    {
      "commit": "a688b574d294faae5f56224908b40856c5045aac",
      "tree": "2af92697194f007d9e0beb044c005a863ac40a85",
      "parents": [
        "5fb008e3800032be18c6d5f1e7ace4d7c2661e26"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 16 15:23:08 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 22 18:08:58 2011 -0800"
      },
      "message": "Remove RefBase.h dependency on TextOutput.h\n\nChange-Id: I72cd6b98ef82b4868fe1c8ec87862cf43fb4ee73\n"
    },
    {
      "commit": "8c7c6dc413e12b2394aae06bd2ccc3db7a29c710",
      "tree": "25afe7d78bf9bd5c0aaac85d79857d995bf54df7",
      "parents": [
        "0390191392e62314d9dfeba655f737a0e2594950"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 22 11:46:35 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 22 13:21:38 2011 -0800"
      },
      "message": "Support more MPEG4-LATM audio functionality.\n\nrelated-to-bug: 3474610\n\nChange-Id: I6dab40e8b465922c62be9ee7f168718822c6caac\nNow skipping extra header that the spec claimed shouldn\u0027t be present in LATM...\n"
    },
    {
      "commit": "6f2fba428ca5e77a26d991ad728e346cc47609ee",
      "tree": "5dd07c24bd9b474ccfbcba4f63e078598fbd2b50",
      "parents": [
        "b1bdb64d641ac63097619e5ef08d5a25bfdc61bb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 01:08:02 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 05:23:10 2011 -0800"
      },
      "message": "Add new axes for joysticks and mouse wheels.\n\nAdded API on InputDevice to query the set of axes available.\nAdded API on KeyEvent and MotionEvent to convert keycodes and axes\nto symbolic name strings for diagnostic purposes.\nAdded API on KeyEvent to query if a given key code is a gamepad button.\nAdded a new \"axis\" element to key layout files to specify the\nmapping between raw absolute axis values and motion axis ids.\nExpanded the axis bitfield to 64bits to allow for future growth.\nModified the Makefile for keyboard prebuilts to run the keymap\nvalidation tool during the build.\nAdded layouts for two game controllers.\nAdded default actions for game pad button keys.\nAdded more tests.\nFixed a bunch of bugs.\n\nChange-Id: I73f9166c3b3c5bcf4970845b58088ad467525525\n"
    },
    {
      "commit": "5b025c46158f2b4eb95bc062170b7d585d967d0c",
      "tree": "b43600627edbc8c77306b284fce1a693f2971f42",
      "parents": [
        "95fd0088ccc6f3251424930b8dbb01dbe411c5d8",
        "cbeebb194b374a5eea2f1c6ed6298c09a937c4cb"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 17 14:50:14 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 17 14:50:14 2011 -0800"
      },
      "message": "Merge \"A/V synchronization at the beginning of a recording session\""
    },
    {
      "commit": "cbeebb194b374a5eea2f1c6ed6298c09a937c4cb",
      "tree": "ad64e2af7f08f8a7184207f06e2294776ab53720",
      "parents": [
        "f653aa7e6e4d79dae191596551bfb5df4df6d6e5"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 16 12:28:26 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Feb 17 14:43:16 2011 -0800"
      },
      "message": "A/V synchronization at the beginning of a recording session\n\no do not use edts/elst boxes since these optional boxes are ignored\no manipulate the first video/audio frame duration to make sure that the rest\n  of the audio/video is in sync (ideally, we should only manipulate\n  the vidoe frame duration, not the audio)\no reduce the initial audio mute/suppression period, which is used to\n  eliminate the \"recording\" sound.\n\nbug - 3405882 and 3362703\n\nChange-Id: Ib0acfb4f3843b365157288951dc122b006299c18\n"
    },
    {
      "commit": "ebbd5d14ad3b1e762d9fcfa026e19413cc857e05",
      "tree": "7f449489b302fddd176f6ab9f85c8e38024fed90",
      "parents": [
        "3b93d3fc1e56eada95246f9ee102c563d22df6d0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 17 13:01:34 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 17 13:01:34 2011 -0800"
      },
      "message": "Fix a regression with MotionEvent parceling.\n\nAlso added some more unit tests.\n\nChange-Id: I413654294d1a998eec056884e6df5eaa50f3daf4\n"
    },
    {
      "commit": "45708bf2f03f9f50c22f86cb794c2a088bab1c05",
      "tree": "e08b9a0954795be704c9473d0d31716a98e0cb09",
      "parents": [
        "88083d4f2b9c2dc66ba39bd2c4ffa0ff7c1fbcd4",
        "91c69ab01539f7ba28708f41ec1835cc2920d0a0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Feb 16 20:00:21 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 16 20:00:21 2011 -0800"
      },
      "message": "Merge \"Add support for arbitrary axes in MotionEvents.\""
    },
    {
      "commit": "d33a4ccb5c3b58406cee45a4d933d40219177f8c",
      "tree": "bd4aa2d8998465284ece77fc98cd1e9c654bb20c",
      "parents": [
        "5a5b4ba9fe40605d5e43b7ff25a58f7174509a53"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Feb 15 10:08:07 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 16 11:23:21 2011 -0800"
      },
      "message": "Decouple AudioRecord read and audio encoding\n\nbug - 3313754\n\nChange-Id: I951dd0e21e34aa1412c391f003bc32103d0424b0\n"
    },
    {
      "commit": "91c69ab01539f7ba28708f41ec1835cc2920d0a0",
      "tree": "04f5dc37a0fa3f18a18ba08916efe0c33a1de300",
      "parents": [
        "c3451d4a4479b6244bd6d1dadf289a8d44bdcca2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 14 17:03:18 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 15 19:14:37 2011 -0800"
      },
      "message": "Add support for arbitrary axes in MotionEvents.\n\nThis change makes it possible to extend the set of axes that\nare reported in MotionEvents by defining new axis constants.\n\nThe MotionEvent object is now backed by its C++ counterpart\nto avoid having to maintain multiple representations of the\nsame data.\n\nChange-Id: Ibe93c90d4b390d43c176cce48d558d20869ee608\n"
    },
    {
      "commit": "94f401999442ceb572200b0eeffcc31546d7a4c7",
      "tree": "e1064252c9364815b95429de3977afe85b7a9d04",
      "parents": [
        "9227faf4eade7c5825ecb9a69c9b4ff697b3deac",
        "c5b0abf900474b204c367093984ff60da4fba09c"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Feb 15 17:22:01 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 15 17:22:01 2011 -0800"
      },
      "message": "Merge \"Add AAC extractor\""
    },
    {
      "commit": "c5b0abf900474b204c367093984ff60da4fba09c",
      "tree": "e1d205abe7f7174cc450a8dc43e5919a247c6cc7",
      "parents": [
        "4c030b56160918117776b4379dcc1e258b854e2d"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Wed Feb 02 14:12:49 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Tue Feb 15 17:16:22 2011 -0800"
      },
      "message": "Add AAC extractor\n\nChange-Id: Iedb08525ac72e65ba98e5c791734da0720a0e3f6\n"
    },
    {
      "commit": "fe84cf13cdbccec4a499caca05f0dc309df9d318",
      "tree": "580fd28c9cd27629dc92633aa34198fcc6e65365",
      "parents": [
        "4c030b56160918117776b4379dcc1e258b854e2d"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 11 15:21:45 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Fri Feb 11 15:25:03 2011 -0800"
      },
      "message": "Make available h263 DSI information from MPEG4Extractor\n\nbug - 3446863\n\nChange-Id: Idbaf7a564d544784fdbc36ed0339c98a519adc88\n"
    },
    {
      "commit": "a11faf889e61a8f01f430b3d1e397fa7ca779e75",
      "tree": "0ff8c7092fe5235820b1b59cce64dba563d935c7",
      "parents": [
        "36305fc416b85d83b22ff5214a28f75df83a7065",
        "c6c3e77d4d5cd8de3b1a56bdffdfd42774849512"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 10 15:46:15 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 10 15:46:15 2011 -0800"
      },
      "message": "am c6c3e77d: am b66b7a2c: Merge \"fix [3408713] Dialog window invisible sometimes\" into honeycomb\n\n* commit \u0027c6c3e77d4d5cd8de3b1a56bdffdfd42774849512\u0027:\n  fix [3408713] Dialog window invisible sometimes\n"
    },
    {
      "commit": "c6c3e77d4d5cd8de3b1a56bdffdfd42774849512",
      "tree": "3703fb371090adee31f311d8ac5f95f60a31418a",
      "parents": [
        "592989b3b7c088114de6ee59d609449de749fd78",
        "b66b7a2c183a1423ea629d4f73ed95f9b87d54b7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 10 15:08:33 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 10 15:08:33 2011 -0800"
      },
      "message": "am b66b7a2c: Merge \"fix [3408713] Dialog window invisible sometimes\" into honeycomb\n\n* commit \u0027b66b7a2c183a1423ea629d4f73ed95f9b87d54b7\u0027:\n  fix [3408713] Dialog window invisible sometimes\n"
    },
    {
      "commit": "8b4b97a14ad9b5b982d8fe92755efabec8ad0076",
      "tree": "1cf4a2979096202ccfe5ff7399b9d37bfaccc3dc",
      "parents": [
        "138a54cb20d8ba8253b404a76a53fe88f0d43963"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Feb 04 13:54:26 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 10 14:37:42 2011 -0800"
      },
      "message": "Bug 3352047 Wrong message when adjusting volume\n\nAdd hidden AudioManager.getDevicesForStream and output device codes.\n\nChange-Id: I4d1c1d3b6a077cd117720817d1f733dda557b947\n"
    },
    {
      "commit": "37c2a3750138a5f9cb34d4f644642da677d435c6",
      "tree": "6cb616594c9d6eea4174c1e4c88f97145903c978",
      "parents": [
        "cc24170dc653ea5fc9fe7b9b8c596700c4d6dc99"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 09 18:38:55 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 09 18:38:55 2011 -0800"
      },
      "message": "fix [3408713] Dialog window invisible sometimes\n\nweak pointer comparison operators were implemented wrong,\nthey were using the internal \"unsafe\" pointer. We could end up\nwith two \"equal\" weak pointer pointing to different objects.\n\nthis caused KeyedVector keyed by weak pointer to work incorrectly, in\nturn causing a window that just got added to a list to be immediately\nremoved.\n\nChange-Id: Ib191010c39aafa9229109e4211f6c3b2b2f9696d\n"
    },
    {
      "commit": "f6a2bff0c9f65b318bbe2236d19423dc013123b9",
      "tree": "f4399f79fc80f7f8f0d4b653a2d87c5fb9620701",
      "parents": [
        "455644ee1cad8554aa3c2a00e3e639bca032c981"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 09 14:00:55 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Feb 09 15:44:32 2011 -0800"
      },
      "message": "Reduce blocking time in file write\n\nbug - 3418787\n\nChange-Id: I4723662bf46ed07271be8468f84ae5d93cb793fa\n"
    },
    {
      "commit": "5ed9a80571ede30d4cb7967227bff996c9cecb9e",
      "tree": "f691e3a4ecf7053c14af2eba66e9ad375b955877",
      "parents": [
        "357a9335c24ed0844187d9f8aace53acbca48c50",
        "b9289833341ec19e016891d0ca9638f0973b9647"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 08 13:15:37 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 08 13:15:37 2011 -0800"
      },
      "message": "Merge \"Handle some edge cases when seeking while starting up OMXCodec\""
    },
    {
      "commit": "b9289833341ec19e016891d0ca9638f0973b9647",
      "tree": "2d5733d68fcc3dee05ac911db1b295bef38e9604",
      "parents": [
        "5a50351cf33dcfc9a21f393521885cd3f248952d"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 08 13:10:25 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Feb 08 13:10:25 2011 -0800"
      },
      "message": "Handle some edge cases when seeking while starting up OMXCodec\n\nThese were exposed by the new preview-seekframe while paused code.\nIn particular, the codec may have been in state RECONFIGURING when attempting\nto seek, or we may have initiated flushing of the output port and this may not\nhave completed yet by the time we want to reconfigure the output port.\n\nChange-Id: Id7640ade11dbc7205a22f648ea0b5e3e9b49cf4b\nrelated-to-bug: 3392259\n"
    },
    {
      "commit": "c2dc4729e3c88d733c0aa6d9a9af6101b2f09e35",
      "tree": "b4f2f134b82cd91f1875af223f6218f94a5425f5",
      "parents": [
        "1ee31175eca2fb5d6a95cb1aa4a9dbf66a5212cb"
      ],
      "author": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 07 11:41:11 2011 -0800"
      },
      "committer": {
        "name": "Gloria Wang",
        "email": "gwang@google.com",
        "time": "Mon Feb 07 15:10:33 2011 -0800"
      },
      "message": "- Do not use global DrmManagerClient\n- Release the DrmManagerClient and DecryptHandle in DataSource\nFix for bug 3429811\n\nChange-Id: I549f72b75225751877eb0e630ce8098f8ec6316f\n"
    },
    {
      "commit": "6760f9832df60e8421c10c4928d0612662222811",
      "tree": "e732f40fefaaa209523925ec082fffd7fa299b2d",
      "parents": [
        "8adacd8e22e2a44c941e2b930cc53b7b843f4063"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 04 10:12:26 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Feb 04 10:12:26 2011 -0800"
      },
      "message": "Improvements/fixes to ACodec.\n\n- Make sure ACodec reverts its state when it\u0027s shutdown\n- Defer \"resume\" to after handling the OutputPortSettingsChange\n\n- If the OMX_EventPortSettingsChanged event comes in while we\u0027re flushing, defer it\n  and make sure the output port can be disabled by deleting all buffers not already\n  owned by the component.\n\nChange-Id: I1f8cdffa71237b57d4275a48b834647a7b263e8b\n"
    },
    {
      "commit": "2e8fbebff4e12581ed58e25fc98134e1124d6482",
      "tree": "fce144cef31654d97ca3bd91c74d0249231cdc91",
      "parents": [
        "79cce9f445287c79b785a633fea9a17064147574",
        "6f1bd261b7fd86ac7817ca061dfb55b95150b836"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 03 17:18:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 03 17:18:46 2011 -0800"
      },
      "message": "am 6f1bd261: am 9c0a1003: Merge \"Fix issue 3371080\" into honeycomb\n\n* commit \u00276f1bd261b7fd86ac7817ca061dfb55b95150b836\u0027:\n  Fix issue 3371080\n"
    },
    {
      "commit": "f9f223edb408cdc9fd946dc099a86857079a639f",
      "tree": "c7e17991ac0eac00d407f0a1ebfd673d21d09b4b",
      "parents": [
        "d2f5d166c5678803dc2b13f3f1b91be0446d8b72"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Jan 13 11:17:00 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Thu Feb 03 13:39:10 2011 -0800"
      },
      "message": "Bug 1804058 FLAC extractor\n\nNote: dependent on external/flac for libFLAC\n\nImplemented and tested:\n * FLAC container\n * mono and stereo\n * standard sample rates\n * standard bit depths\n * sniffer\n * media scanner\n * Vorbis comment metadata including album art\n * random access seeking with \"torture test\"\n * web browser integration for audio/flac (not audio/x-flac), but\n   note that most web servers don\u0027t correctly report the MIME type\n\nNot implemented:\n * 24-bit to 16-bit dither or noise shaping in AudioFlinger\n * 96 kHz to 44.1 or 48 kHz downsampling low pass filter in AudioFlinger\n * replay gain is better done in AudioFlinger\n * multi-channel, would need AudioFlinger support\n * Ogg container, does not seem to be very popular yet\n\nChange-Id: I300873e8c0cfc2e95403d9adb5064d16a2923f17\n"
    },
    {
      "commit": "6f1bd261b7fd86ac7817ca061dfb55b95150b836",
      "tree": "ff90681cc760c964aa4b00e34b1eb95b7c22014c",
      "parents": [
        "7fbdc7f6ecfff38693e4ca337984b591a8560574",
        "9c0a1003bd676121cf9b1c942ecebd5b486290d5"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 03 10:28:24 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Feb 03 10:28:24 2011 -0800"
      },
      "message": "am 9c0a1003: Merge \"Fix issue 3371080\" into honeycomb\n\n* commit \u00279c0a1003bd676121cf9b1c942ecebd5b486290d5\u0027:\n  Fix issue 3371080\n"
    },
    {
      "commit": "25101b0b9a84571ead15b26e9f4cd9c4298d7823",
      "tree": "8f339bdcc562671cd425144be54841f39c56754b",
      "parents": [
        "1cee14f154aadabcd9990bd73a197fbd744660ad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 02 09:33:30 2011 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 03 09:26:24 2011 -0800"
      },
      "message": "Fix issue 3371080\n\nModified default volume control logic in AudioService:\n1 IN_CALL volume if in video/audio chat\n2 NOTIFICATION if notification is playing or was playing less than 5s ago.\n3 MUSIC\n\nModified silent mode:\n- now also affect MUSIC stream type\n- entering silent mode when VOL- hard key is pressed once while selected\nstream volume is already at 0 (except for VOICE_CALL stream).\n- exiting silent mode when pressing VOL+ hard key while in silent mode\n\nPlay sound FX (audible selections, keyboard clicks) at a fixed volume.\n\nModified audio framework:\n- isStreamActive() method now implemented in AudioPolicyManagerBase (previously AudioFlinger)\n- iStreamActive() now specifies a time window during which the stream is considered\nactive after it actually stopped.\n\nChange-Id: I7e5a0724099450b9fc90825224180ac97322785f\n"
    },
    {
      "commit": "a257be1895218e5c3e153313db9dd703fd9cc84f",
      "tree": "457726588b7e414388795ed24f1c38a67dc96dd6",
      "parents": [
        "9d3fb3717f2acec71a3330e448ecf63ee997b1f8",
        "421d94c20321e1de528416b279bf148baba47b39"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 16:21:24 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 02 16:21:24 2011 -0800"
      },
      "message": "am 421d94c2: am ecb4b3f0: Merge \"Pass the IGraphicBufferAlloc to SurfaceTextureClient.\" into honeycomb\n\n* commit \u0027421d94c20321e1de528416b279bf148baba47b39\u0027:\n  Pass the IGraphicBufferAlloc to SurfaceTextureClient.\n"
    },
    {
      "commit": "421d94c20321e1de528416b279bf148baba47b39",
      "tree": "9cd23e4ce3a4e2d8c416b57f69c66eda2550ee16",
      "parents": [
        "94dbc990b8840d323d358770a1ba02bb4820c681",
        "ecb4b3f02340e21eefabbea78559e85ec7ee0089"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 15:56:20 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 02 15:56:20 2011 -0800"
      },
      "message": "am ecb4b3f0: Merge \"Pass the IGraphicBufferAlloc to SurfaceTextureClient.\" into honeycomb\n\n* commit \u0027ecb4b3f02340e21eefabbea78559e85ec7ee0089\u0027:\n  Pass the IGraphicBufferAlloc to SurfaceTextureClient.\n"
    },
    {
      "commit": "83bac216a7ba8493a7916e40b2555e73c3a5cc1a",
      "tree": "ff57384d2f89f0dd958add05408179b537dc973f",
      "parents": [
        "b799314e64d5afe050aeee394f0c29d7728c1e22"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 15:31:47 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 15:31:47 2011 -0800"
      },
      "message": "Pass the IGraphicBufferAlloc to SurfaceTextureClient.\n\nThis change passes a reference to the IGraphicBufferAlloc binder object\nto SurfaceTextureClient objects.  When STC objects are created they\nquery their associated ISurfaceTexture object for the\nIGraphicBufferAlloc that the SurfaceTexture uses to allocate buffers.\nHaving the SurfaceTextureClient hold this reference prevents the\nGraphicBufferAlloc in SurfaceFlinger from freeing the allocated buffers\nbefore the SurfaceTextureClient is done with them.\n\nChange-Id: Ib8e30e8b37fdd60438cbb4cb7e9174d0ba6d661c\nrelated-bug: 3362519\n"
    },
    {
      "commit": "4453b1a5b64e5926f987227660de8c8c62695697",
      "tree": "247e12e540ede87b9ce812023082bbf5a664543c",
      "parents": [
        "4b91b4b117a907288c73d44cbdb946142904877e",
        "09443aeb6470d66f5bc1938b70d74b3e2f9bbbb9"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 30 15:05:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 30 15:05:42 2011 -0800"
      },
      "message": "am 09443aeb: am 62884505: Merge \"Reset ANativeWindow crop on buffer geometry changes.\" into honeycomb\n\n* commit \u002709443aeb6470d66f5bc1938b70d74b3e2f9bbbb9\u0027:\n  Reset ANativeWindow crop on buffer geometry changes.\n"
    },
    {
      "commit": "09443aeb6470d66f5bc1938b70d74b3e2f9bbbb9",
      "tree": "296a7dcef912e7717c4433e2d8dc6c68bb50cbc4",
      "parents": [
        "935275cbe058f5a60ac2cf1a3321fd49550fd37c",
        "628845056282a0c5b1a212ce5aeeaac092b91ec8"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 30 15:03:03 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 30 15:03:03 2011 -0800"
      },
      "message": "am 62884505: Merge \"Reset ANativeWindow crop on buffer geometry changes.\" into honeycomb\n\n* commit \u0027628845056282a0c5b1a212ce5aeeaac092b91ec8\u0027:\n  Reset ANativeWindow crop on buffer geometry changes.\n"
    },
    {
      "commit": "0e87a19bec51383941f14186b14fffcad73b1be1",
      "tree": "8b95d3f7dd34ef5493e611dd66100ba3f2dba2a3",
      "parents": [
        "ec4c5193689c30064d87a5febfde7c300b439f6c",
        "371de9695508073fbbde8181eb230e99cb045206"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:10:33 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:10:33 2011 -0800"
      },
      "message": "am 371de969: am a1f5e82f: am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027371de9695508073fbbde8181eb230e99cb045206\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "371de9695508073fbbde8181eb230e99cb045206",
      "tree": "8b725299fe6b9638dad8cc3dc538a23ae86377ac",
      "parents": [
        "bda99568d84530c6442af0602e9c12e6cb897780",
        "a1f5e82f37c77af7b1d630b5bca715d1742f1234"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:07:48 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:07:48 2011 -0800"
      },
      "message": "am a1f5e82f: am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027a1f5e82f37c77af7b1d630b5bca715d1742f1234\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "a1f5e82f37c77af7b1d630b5bca715d1742f1234",
      "tree": "c7b1d7c8c18f5d74370558cbcf48ca6747661096",
      "parents": [
        "71bb59f9e6799083830077dbb7e0f1effdd3faf7",
        "a30063d80c08434ac3c7316f338c6d54110449ab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 23:04:50 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 29 23:04:50 2011 -0800"
      },
      "message": "am a30063d8: am 25eb0464: Merge \"Normalize output from aapt d\"\n\n* commit \u0027a30063d80c08434ac3c7316f338c6d54110449ab\u0027:\n  Normalize output from aapt d\n"
    },
    {
      "commit": "25eb04642cb5a72f59a274bbfc92f4f65c6c343e",
      "tree": "6c59e04e7d9b961b49fccdfb139fe87baaa35855",
      "parents": [
        "bbb5a5ce1922a168335811b177cd7341350c15cc",
        "9872bf4a2d4ae1e7ded170c8e74d400fe6be9bfb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Sat Jan 29 22:53:20 2011 -0800"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Sat Jan 29 22:53:20 2011 -0800"
      },
      "message": "Merge \"Normalize output from aapt d\""
    },
    {
      "commit": "2ece4cdc3fd0f8a45a889c711dba7165729e8ca5",
      "tree": "a76c7f3eed692edcce369a6ae198202fdd1c7500",
      "parents": [
        "0982dc6488a921d9d54d23b9180a9acf33c61526"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jan 28 18:21:54 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jan 28 18:21:54 2011 -0800"
      },
      "message": "Reset ANativeWindow crop on buffer geometry changes.\n\nThis changes the ANativeWindow API and the two implementations to reset\nthe window\u0027s crop rectangle to be uncropped when the window\u0027s buffer\ngeometry is changed.\n\nBug: 3359604\nChange-Id: I64283dc8382ae687787ec0bebe6a5d5b4a0dcd6b\n"
    },
    {
      "commit": "d6f5bde96b2fe82bc7e5d4e64266d585108c4648",
      "tree": "323f31caa5ff13610218cfaca6ee69a0a2588227",
      "parents": [
        "bc2e3fe480f1c670e483eaa9b8092902dd78ddf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 19 15:27:27 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 28 08:04:00 2011 -0800"
      },
      "message": "Protected surface API\n\nTo be used by DRM framework, implemented by display HAL\n\nChange-Id: I054a07a94f4d5dbe792f3a597e2e49a100d90eb2\n"
    },
    {
      "commit": "804d8798d525ef8cda01998701d76166c641fc71",
      "tree": "fed70a8c775e7ee6af8b9d64a3a089e22390e64c",
      "parents": [
        "2d65afb7c4e7869c1fafefdfc98fc99014185e3b",
        "8bea1d5585822bb62996e789f59c7629dfd9ac50"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 26 14:49:23 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 14:49:23 2011 -0800"
      },
      "message": "am 8bea1d55: am 7fb232c4: Merge \"Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\" into honeycomb\n\n* commit \u00278bea1d5585822bb62996e789f59c7629dfd9ac50\u0027:\n  Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\n"
    },
    {
      "commit": "8bea1d5585822bb62996e789f59c7629dfd9ac50",
      "tree": "d937031df74f6969fdc8000099ad00b1c2bfee64",
      "parents": [
        "54fc78072fec46933ca5ee96c7642bd4b9fc540f",
        "7fb232c40cde91d0958be1694db2d97a126b95f9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 26 14:45:41 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 14:45:41 2011 -0800"
      },
      "message": "am 7fb232c4: Merge \"Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\" into honeycomb\n\n* commit \u00277fb232c40cde91d0958be1694db2d97a126b95f9\u0027:\n  Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\n"
    },
    {
      "commit": "1155efdc715413cd7a881e5226b5f5f0b2db8f71",
      "tree": "cc5ae04c7c3ca6665503d96470160d93ee28ea8f",
      "parents": [
        "2ec4af59209ab3a7088a001bbbcb10ef0b846564",
        "2ba92c71b5684dce700cf848bf157153c156df1d"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 26 14:05:18 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 14:05:18 2011 -0800"
      },
      "message": "am 2ba92c71: do not merge bug 3370834 Cherrypick from master\n\n* commit \u00272ba92c71b5684dce700cf848bf157153c156df1d\u0027:\n  do not merge bug 3370834 Cherrypick from master\n"
    },
    {
      "commit": "5f3ab06e90365ad6c4865e2cab358a20e12ce0eb",
      "tree": "3b80ccbe855de638f67d98a5e4c4c77c372b3423",
      "parents": [
        "373d357a8b13dc2cdc82d9e1d6144fb26e3bb202"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Tue Jan 25 16:31:28 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 26 12:11:22 2011 -0800"
      },
      "message": "Make sure that key frame is generated for timelapse video recording if there are at least two input video frames from camera source.\n\nThis will fix the stop failure issue where we have to wait n * time_interval before a key frame can be received by the file writer, where\n o n is the actual number of buffers advertised by the video encoder\n o time_interval is the interval settings for timelapse video recording\n   specifying the time distance between neighboring input video frames\n\nThe fix includes two parts:\no OMXCodec will not submit all n buffers at one time, but instead submit one input\n  frame at one time if it become available.\n\no Timelapse camera source made available the first two input frames and do not skip\n  them so that the first compressed output frame data can be received regardless\n  the specified time_interval\n\nbug - 3367659\n\nChange-Id: Ia68cc2cb0d71aa7dc54540e9ad82fae911ad530b\n"
    },
    {
      "commit": "c3975664926268f5245bccf8853ec54ed080ae9e",
      "tree": "233434cfdbf6029abeafa541efdf3c41f746033d",
      "parents": [
        "dca5cb32040255586b9c69f20ae9121aad6c3b1d",
        "e328d1c0bea62f4dc28210dbcab0da40f4449bf2"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 26 11:48:12 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 11:48:12 2011 -0800"
      },
      "message": "am e328d1c0: am a9f27fa6: Merge \"Protect notification callback parameters with a mutex.\" into honeycomb\n\n* commit \u0027e328d1c0bea62f4dc28210dbcab0da40f4449bf2\u0027:\n  Protect notification callback parameters with a mutex.\n"
    },
    {
      "commit": "e328d1c0bea62f4dc28210dbcab0da40f4449bf2",
      "tree": "990e4f4a6c9755e3253d9e1dd7a0ded2962645d7",
      "parents": [
        "38a1714bf79821dad296eeddfda1b6a7ce93ebbd",
        "a9f27fa631ab21d52c75842ccaacc1cbcd75fca0"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 26 11:44:17 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 26 11:44:17 2011 -0800"
      },
      "message": "am a9f27fa6: Merge \"Protect notification callback parameters with a mutex.\" into honeycomb\n\n* commit \u0027a9f27fa631ab21d52c75842ccaacc1cbcd75fca0\u0027:\n  Protect notification callback parameters with a mutex.\n"
    },
    {
      "commit": "2ffbb18053b286a81c5b89a72e4dee3d0ab4dc45",
      "tree": "9da056daa04cea797a7855d8070011fa72ec37e7",
      "parents": [
        "ff3b3ade7fa1da60d391d1a746cdc0868c24f4bf"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 26 11:19:19 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Wed Jan 26 11:20:42 2011 -0800"
      },
      "message": "Protect notification callback parameters with a mutex.\n\nThis avoids the race condition where notifications are dispatched to a NULL receiver\nafter notifications have been disabled.\n\nChange-Id: I6d351ffbee97616e2c35559c132a6c5e6a66948a\nrelated-to-bug: 3394139\n"
    },
    {
      "commit": "2ba92c71b5684dce700cf848bf157153c156df1d",
      "tree": "4a5fd1c92f47a6557552adbb65898c35866d9662",
      "parents": [
        "138757db4f19cb626ef5c1d371d4fca004304a08"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Mon Nov 15 12:11:32 2010 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Wed Jan 26 11:20:01 2011 -0800"
      },
      "message": "do not merge bug 3370834 Cherrypick from master\n\nCherripick from master CL 79833, 79417, 78864, 80332, 87500\n\nAdd new audio mode and recording source for audio communications\n other than telelphony.\n\nThe audio mode MODE_IN_CALL signals the system the device a phone\n call is currently underway. There was no way for audio video\n chat or VoIP applications to signal a call is underway, but not\n using the telephony resources. This change introduces a new mode\n to address this. Changes in other parts of the system (java\n and native) are required to take this new mode into account.\nThe generic AudioPolicyManager is updated to not use its phone\n state variable directly, but to use two new convenience methods,\n isInCall() and isStateInCall(int) instead.\n\nAdd a recording source used to designate a recording stream for\nvoice communications such as VoIP.\n\nUpdate the platform-independent audio policy manager to pass the\n nature of the audio recording source to the audio policy client\n interface through the AudioPolicyClientInterface::setParameters()\n method.\n\nSIP calls should set the audio mode to MODE_IN_COMMUNICATION,\n Audio mode MODE_IN_CALL is reserved for telephony.\n\nSIP: Enable built-in echo canceler if available.\n1. Always initialize AudioRecord with VOICE_COMMUNICATION.\n2. If echo canceler is available, disable our echo suppressor.\n\nNote that this CL is intentionally not correcting the\n getAudioSourceMax() return value in MediaRecorder.java as the\n new source is hidden here.\n\nChange-Id: Ie68cd03c50553101aa2ad838fe9459b2cf151bc8\n"
    },
    {
      "commit": "ab2f09603079534b53499864a403d0ba16aad13b",
      "tree": "bda82420b709f75417061242d20227ec89732ff7",
      "parents": [
        "e1ec077497b4d88abf9d3aab68449325d7e2b87b",
        "12b2dc90883ef4f930a17907acdef3677b0598a5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:22:50 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 18:22:50 2011 -0800"
      },
      "message": "am 12b2dc90: am b1e0a870: Merge \"Fix crashes caused by some input devices.\" into honeycomb\n\n* commit \u002712b2dc90883ef4f930a17907acdef3677b0598a5\u0027:\n  Fix crashes caused by some input devices.\n"
    },
    {
      "commit": "12b2dc90883ef4f930a17907acdef3677b0598a5",
      "tree": "8a46f7bec5fdfe88cc60f22214e424c6acdb9e83",
      "parents": [
        "a2852d1f20f2948dc5cad6a4323836c7f8e1d79b",
        "b1e0a870e4099490127bb917bb4fc7a8f48db893"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:20:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 18:20:35 2011 -0800"
      },
      "message": "am b1e0a870: Merge \"Fix crashes caused by some input devices.\" into honeycomb\n\n* commit \u0027b1e0a870e4099490127bb917bb4fc7a8f48db893\u0027:\n  Fix crashes caused by some input devices.\n"
    },
    {
      "commit": "b1e0a870e4099490127bb917bb4fc7a8f48db893",
      "tree": "84d1aed66edb13896527b823539c56a7e3dc7cbe",
      "parents": [
        "f6926a63dfdc114789a6acc06396ca826eb64418",
        "58a2da843f2f22f406df8df1f011738eb8b7fcb1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:18:05 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 25 18:18:05 2011 -0800"
      },
      "message": "Merge \"Fix crashes caused by some input devices.\" into honeycomb"
    },
    {
      "commit": "2c91b5699e95519d9ce297ab7305b09841cd3285",
      "tree": "03d80281d6a3df5b79a89a30dd51822cb5850ce0",
      "parents": [
        "501e52f09d555cc27c637846a897b4903a116678",
        "c80daa1b05b8f1d2873df23821ae2c5344e76fb8"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 25 16:20:56 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 16:20:56 2011 -0800"
      },
      "message": "am c80daa1b: am f10d9404: Merge \"StagefrightMediaScanner: Close metadata retriever after we are done scanning\" into honeycomb\n\n* commit \u0027c80daa1b05b8f1d2873df23821ae2c5344e76fb8\u0027:\n  StagefrightMediaScanner: Close metadata retriever after we are done scanning\n"
    },
    {
      "commit": "58a2da843f2f22f406df8df1f011738eb8b7fcb1",
      "tree": "716c12630d5d9fe98e29e197287dc950eaa4a01c",
      "parents": [
        "30bc34f191ca8a009af313fc751e5b4bff6e39a1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 16:02:22 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 16:02:22 2011 -0800"
      },
      "message": "Fix crashes caused by some input devices.\n\nThe touch screen sometimes reports more than 10 pointers even though that\u0027s\nall we asked for.  When this happens, we start dropping events with more\nthan 10 pointers.  This confuses applications and causes them to crash.\nRaised the limit to 16 pointers.\nBug: 3331247\n\nThe default behavior was to identify all touch devices as touch screens.\nExternal devices that are plugged in are more likely to be touch pads\nnot attached to a screen.  Changed the default to be a touch pad\nand renamed some internal constants to avoid confusion.\n\nA certain mouse happens to also behave like a touch pad.  That caused\nproblems because we would see multiple concurrent traces of motion events\ncoming from the same input device so we would batch them up.\nAdded code to ensure that we don\u0027t batch events unless they come from\nthe same *source* in addition to coming from the same *device*.\n\nDue to batching or misbehaving drivers, it\u0027s possible for the set of\npointer ids to be different from what we expect when it comes time to\nsplit motion events across windows.  As a result, we can generate motion\nevents with 0 pointers.  When we try to deliver those events, we cause\nan error in the InputTransport so we tear down the InputChannel and kill\nthe application.\nAdded code to check out assumption about pointer ids and drop the\nevent gracefully instead.\n\nPatched up the tests to take into account the change in default behavior\nfor identifying touch screens and touch pads.\n\nChange-Id: Ic364bd4cb4cc6335d4a1213a26d6bdadc7e33505\n"
    },
    {
      "commit": "c80daa1b05b8f1d2873df23821ae2c5344e76fb8",
      "tree": "ce87b1caa784a0677b717372aa3504c06b661c61",
      "parents": [
        "7fadb5e77fd079c3a6c5eeae1ae81a487864b129",
        "f10d940413000732f1cd35bcb113c41019c7e3b7"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 25 15:48:06 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 15:48:06 2011 -0800"
      },
      "message": "am f10d9404: Merge \"StagefrightMediaScanner: Close metadata retriever after we are done scanning\" into honeycomb\n\n* commit \u0027f10d940413000732f1cd35bcb113c41019c7e3b7\u0027:\n  StagefrightMediaScanner: Close metadata retriever after we are done scanning\n"
    },
    {
      "commit": "8151dc3229888109f4ec699eb6311975b51a05b9",
      "tree": "e3d6ffb1284966f5091b80ccd0c42a530367114f",
      "parents": [
        "071b2b6739c83d3de806cda5d7be2aba33fde1af"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 25 15:20:04 2011 -0800"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Jan 25 15:20:04 2011 -0800"
      },
      "message": "StagefrightMediaScanner: Close metadata retriever after we are done scanning\n\nThis prevents the mediaserver from leaking a file descriptor after\nthe media scanner runs\n\nBUG: 3373546\n\nChange-Id: I82a8bae82306de3da56a5c7da5b03ecf106a4efc\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "df8368925acd4593a309e06548d7f900bf8d94df",
      "tree": "39c092306bd33c66952aa4be033f86f1318b5cb1",
      "parents": [
        "af4fa5d83d70a9af9ede67c47eae72d1db0d6d74",
        "239fd805ef7c0e4116b0a89e20caaf287e91f017"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:40 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:40 2011 -0800"
      },
      "message": "am 239fd805: Merge \"fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\" into gingerbread\n\n* commit \u0027239fd805ef7c0e4116b0a89e20caaf287e91f017\u0027:\n  fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\n"
    },
    {
      "commit": "88bccab35c81907db09be3f511a2c1fd379a75b4",
      "tree": "8482a2450b68473e7f00dbd92052a876e33b9a3b",
      "parents": [
        "eb645a15b95ba917ce360b135f92cbcb6df56104",
        "d3fcd0a1c923498921107bb44fbc8b24582a170a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:22 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:22 2011 -0800"
      },
      "message": "am d3fcd0a1: Merge \"minor clean-up. SurfaceFlinger doesn\\\u0027t need libpixelflinger.so. (DO NOT MERGE)\" into gingerbread\n\n* commit \u0027d3fcd0a1c923498921107bb44fbc8b24582a170a\u0027:\n  minor clean-up. SurfaceFlinger doesn\u0027t need libpixelflinger.so. (DO NOT MERGE)\n"
    },
    {
      "commit": "21956040a77808909ebda426fbd3cce6c8ed059f",
      "tree": "caef5eb4375780074435043e54323cd256c07dfc",
      "parents": [
        "68d3478860fecc9b8fbf256796a832a037434555"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 18 15:51:30 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:19:13 2011 -0800"
      },
      "message": "fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\n\nGenerally we never want to lock a buffer for write access if it is at\nthe \"head\" on the surfaceflinger side. The only exception (1) is when\nthe buffer is not currently in use AND there is at least one queued\nbuffer -- in which case, SurfaceFlinger will never use said buffer\nanymore, because on the next composition around, it will be able to\nretire the first queued buffer.\n\nThe logic above relies on SurfaceFlinger always retiring\nand locking a buffer before composition -- unfortunately this\ndidn\u0027t happen during a screenshot.\n\nThis could leave us in a situation where a buffer is locked by the\napplication for write, and used by SurfaceFlinger for texturing,\ncausing a hang.\n\nHere, we fix this issue by never assuming the exception (1), it was\nintended as an optimization allowing ANativeWindow::lockBuffer() to\nreturn sooner and was justified when most of SF composition was\ndone in software. The actual buffer locking is now ensured by\ngralloc. We could have handled screenshots in a similar way to\na regular composition, but it could have caused glitches on screen,\nessentially, taking a screenshot could cause to skip a frame.\n\nnow that we removed the notion of a \"inUse\" buffer in surfaceflinger\na lot of code can be simplified / removed.\n\nnoteworthy, the whole concept of \"unlockClient\" wrt. \"compositionComplete\"\nis also gone.\n"
    },
    {
      "commit": "728d849fc92bbf9b3bfd8c3903344ff58f3d5d06",
      "tree": "59811b37615d1e4d7c227b71cd3a378206449cb0",
      "parents": [
        "c929677e017759047d94599faa1b80ebe278fefb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Dec 13 16:47:31 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:18:15 2011 -0800"
      },
      "message": "minor clean-up. SurfaceFlinger doesn\u0027t need libpixelflinger.so. (DO NOT MERGE)\n\nChange-Id: I1ddbbbec4fa5b2521ef3787bc28efe1bc90d0060\n"
    },
    {
      "commit": "3873da3c6ee0a63de0d91e6045b7546402f4ce3d",
      "tree": "4269dbe697c68614bc642a448bd3b050bb1b8245",
      "parents": [
        "222b8e256941db75092c6a047a99e33e9e6257d2",
        "2acb67ec9fe34316231519373f59dfb76c03d57b"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 24 13:30:37 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 24 13:30:37 2011 -0800"
      },
      "message": "am 2acb67ec: am 67005b05: Merge \"Use optimized display lists for all hwaccelerated rendering\" into honeycomb\n\n* commit \u00272acb67ec9fe34316231519373f59dfb76c03d57b\u0027:\n  Use optimized display lists for all hwaccelerated rendering\n"
    },
    {
      "commit": "2acb67ec9fe34316231519373f59dfb76c03d57b",
      "tree": "bd7e912f3ac5c6531a7192584b4f3060d05ae071",
      "parents": [
        "99b8041cc6bef1983f7a30adf0e2f0a751a18d3a",
        "67005b05cc76a38a5b3bf6e83957dd03619e9126"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 24 11:15:51 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 24 11:15:51 2011 -0800"
      },
      "message": "am 67005b05: Merge \"Use optimized display lists for all hwaccelerated rendering\" into honeycomb\n\n* commit \u002767005b05cc76a38a5b3bf6e83957dd03619e9126\u0027:\n  Use optimized display lists for all hwaccelerated rendering\n"
    },
    {
      "commit": "daf98e941e140e8739458126640183b9f296a2ab",
      "tree": "e338ad021139d706004b70a38fbbe539ccfbbacf",
      "parents": [
        "57ffc00239edcfe733832771e1429fca20182207"
      ],
      "author": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 10 14:10:36 2011 -0800"
      },
      "committer": {
        "name": "Chet Haase",
        "email": "chet@google.com",
        "time": "Mon Jan 24 08:43:20 2011 -0800"
      },
      "message": "Use optimized display lists for all hwaccelerated rendering\n\nPreviously, display lists were used only if hardware acceleration\nwas enabled for an application (hardwareAccelerated\u003dtrue) *and* if\nsetDrawingCacheEnabled(true) was called. This change makes the framework\nuse display lists for all views in an application if hardware acceleration\nis enabled.\n\nIn addition, display list renderering has been optimized so that\nany view\u0027s recreation of its own display list (which is necessary whenever\nthe visuals of that view change) will not cause any other display list\nin its parent hierarchy to change. Instead, when there are any visual\nchanges in the hierarchy, only those views which need to have new\ndisplay list content will recreate their display lists.\n\nThis optimization works by caching display list references in each\nparent display list (so the container of some child will refer to its\nchild\u0027s display list by a reference to the child\u0027s display list). Then when\na view needs to recreate its display list, it will do so inside the same\ndisplay list object. This will cause the content to get refreshed, but not\nthe reference to that content. Then when the view hierarchy is redrawn,\nit will automatically pick up the new content from the old reference.\n\nThis optimization will not necessarily improve performance when applications\nneed to update the entire view hierarchy or redraw the entire screen, but it does\nshow significant improvements when redrawing only a portion of the screen,\nespecially when the regions that are not refreshed are complex and time-\nconsuming to redraw.\n\nChange-Id: I68d21cac6a224a05703070ec85253220cb001eb4\n"
    },
    {
      "commit": "c3563eb9e75e0b9ae130ec22d5c6c6b1561d783b",
      "tree": "45786dc28bd44e6c5db778c0ad64e5ad04f16f00",
      "parents": [
        "6d92cde287b6399d5c90f3eaccb73602d6d51313",
        "265cf2e76bef9ee369a7d43d567a22a0c39355ef"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Sat Jan 22 21:32:58 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Jan 22 21:32:58 2011 -0800"
      },
      "message": "am 265cf2e7: Merge \"Fix getSwitchState.\"\n\n* commit \u0027265cf2e76bef9ee369a7d43d567a22a0c39355ef\u0027:\n  Fix getSwitchState.\n"
    },
    {
      "commit": "0bb0b8b3562fdae887eb2ec742cd2dd33b3b6668",
      "tree": "a42d3c954a36dbc5bafa2a1a3abee96f296936c6",
      "parents": [
        "8b38dca1e58bec69bd1daffb4811dad90b39f056",
        "3564d9eada7ae3f40bc4c80272fbbb867f04e018"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 14:47:15 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 14:47:15 2011 -0800"
      },
      "message": "am 3564d9ea: am 63d64a14: Merge \"Properly rotate video that\\\u0027s marked as such and decoded to a surface.\" into honeycomb\n\n* commit \u00273564d9eada7ae3f40bc4c80272fbbb867f04e018\u0027:\n  Properly rotate video that\u0027s marked as such and decoded to a surface.\n"
    },
    {
      "commit": "3564d9eada7ae3f40bc4c80272fbbb867f04e018",
      "tree": "d7d058f56288468b4a62c99816a691f9c033d07e",
      "parents": [
        "135531b20a2ad50c6b12e5d66ce8176bfd7ecb4b",
        "63d64a14790ae21db31b60747864b4a7565b33c3"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 14:44:21 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 14:44:21 2011 -0800"
      },
      "message": "am 63d64a14: Merge \"Properly rotate video that\\\u0027s marked as such and decoded to a surface.\" into honeycomb\n\n* commit \u002763d64a14790ae21db31b60747864b4a7565b33c3\u0027:\n  Properly rotate video that\u0027s marked as such and decoded to a surface.\n"
    },
    {
      "commit": "5e9dc94a3c7a42d77ab454b77e1350b6fa5d2c26",
      "tree": "03559f1b3eab1a5068cecefcae558a7d4c11d8cd",
      "parents": [
        "05aa082770d812c5921d6b2f9b3559f1fd1536a8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 14:32:31 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 14:32:31 2011 -0800"
      },
      "message": "Properly rotate video that\u0027s marked as such and decoded to a surface.\n\nChange-Id: I1e9144db3447e58c99aac3f47702ad471678789c\nrelated-to-bug: 3378148\n"
    },
    {
      "commit": "149234e91e8dc190ab1e9144177dbdc4adf6090e",
      "tree": "8dfd77b6533e7d307c943e23a27c3c84d834e660",
      "parents": [
        "65da49fef0c91ed0a0777b27a3f546df81a3cc03",
        "9a62d902ead8f94fa0ce071300e3767bfb976d8b"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 13:19:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 13:19:42 2011 -0800"
      },
      "message": "am 9a62d902: am 05aa0827: Merge \"Some tweaks to HTTP live / nuplayer behaviour\" into honeycomb\n\n* commit \u00279a62d902ead8f94fa0ce071300e3767bfb976d8b\u0027:\n  Some tweaks to HTTP live / nuplayer behaviour\n"
    },
    {
      "commit": "9a62d902ead8f94fa0ce071300e3767bfb976d8b",
      "tree": "79afb54480e8efdee1e9c252923219fc29bd0f2e",
      "parents": [
        "338ebe14921cd5aab4bb886787b32d62cd852651",
        "05aa082770d812c5921d6b2f9b3559f1fd1536a8"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 13:17:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 21 13:17:42 2011 -0800"
      },
      "message": "am 05aa0827: Merge \"Some tweaks to HTTP live / nuplayer behaviour\" into honeycomb\n\n* commit \u002705aa082770d812c5921d6b2f9b3559f1fd1536a8\u0027:\n  Some tweaks to HTTP live / nuplayer behaviour\n"
    },
    {
      "commit": "19922adceb29a3192a63e35a07fb02412aa2a4a2",
      "tree": "35fff4a4b1be99a3e25313dcefa6b8f91bf614fe",
      "parents": [
        "c2ff2ec0d987dd1372183d2a18ea59a0c4d71c2c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 10:15:23 2011 -0800"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jan 21 10:34:40 2011 -0800"
      },
      "message": "Some tweaks to HTTP live / nuplayer behaviour\n\n- play audio-only streams again\n- workaround for malformed streams that switch PIDs across bandwidths\n- attempt to pick a different bandwidth stream if the previously chosen one appears\n  to be malformed/unsupported.\n\nChange-Id: I426d0a40dc725aa242f619d4c9d048b69aca55c9\nrelated-to-bug: 2368598\n"
    },
    {
      "commit": "ea870e0af429050fa56568cfba8a97836e14731f",
      "tree": "7fd9a4773cd86bef5d6bdfa5786b6add3ca229be",
      "parents": [
        "35d5fb744dcbf17bbe468ea2b48be669c8225007",
        "612d7f3c092ec2c4a2ae44cb09d6dfb4e525a659"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 17:25:14 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 20 17:25:14 2011 -0800"
      },
      "message": "am 612d7f3c: am a423d868: Merge \"clean-up unneeded code\" into honeycomb\n\n* commit \u0027612d7f3c092ec2c4a2ae44cb09d6dfb4e525a659\u0027:\n  clean-up unneeded code\n"
    },
    {
      "commit": "612d7f3c092ec2c4a2ae44cb09d6dfb4e525a659",
      "tree": "3c7d608dd72978bb405afc6d50574848d25457d2",
      "parents": [
        "ec5179aceca4b92ea4136f0c337ba6cb909c56c7",
        "a423d868009b9961597365ce7f190aef23f4b1cc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 17:03:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 20 17:03:46 2011 -0800"
      },
      "message": "am a423d868: Merge \"clean-up unneeded code\" into honeycomb\n\n* commit \u0027a423d868009b9961597365ce7f190aef23f4b1cc\u0027:\n  clean-up unneeded code\n"
    },
    {
      "commit": "a423d868009b9961597365ce7f190aef23f4b1cc",
      "tree": "755aab7bd7af26b40e43ea2b38d2ed6f0641e19e",
      "parents": [
        "2e0f0bb3fe63c51fa3154f8ed17bfaf611edbf5d",
        "1d4549ab0312319a79fb37068a3fc63bbb0a3adc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 12:25:26 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 20 12:25:26 2011 -0800"
      },
      "message": "Merge \"clean-up unneeded code\" into honeycomb"
    },
    {
      "commit": "1d4549ab0312319a79fb37068a3fc63bbb0a3adc",
      "tree": "32a0c3dcb3fcae1354342ad938abb6a7d9c747e4",
      "parents": [
        "ed58d8ed8a50cbd8c5e01c4e51bcbbe4341d1dfd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 18:02:20 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 12:10:11 2011 -0800"
      },
      "message": "clean-up unneeded code\n\nnow that we removed the notion of a \"inUse\" buffer in surfaceflinger\na lot of code can be simplified / removed.\n\nnoteworthy, the whole concept of \"unlockClient\" wrt. \"compositionComplete\"\nis also gone.\n\nChange-Id: I210413d4c8c0998dae05c8620ebfc895d3e6233d\n"
    },
    {
      "commit": "3d822cda1e46c5e928152e4d4f7d9d47676bb5e4",
      "tree": "10dcdbdc00c5fd0bc0881f98529b78ae8c1ce310",
      "parents": [
        "069e810c6a5efc0b33fbe8c29a2d11f7c342a4d8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed Jan 19 20:35:47 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed Jan 19 20:35:47 2011 -0800"
      },
      "message": "Fix getSwitchState.\n\nInputReader::getSwitchState always returns AKEY_STATE_UNKNOWN\nbecause SwitchInputMapper::getSources() returns 0 which cannot\nmatch any source mask including AINPUT_SOURCE_ANY.  As a result\ninitial lid switch detection is broken.\n\nThis change adds a new source constant AINPUT_SOURCE_SWITCH\nthat indicates that the source has switches.\n\nChange-Id: I5321ecf0ce84f1c2b4535f6c163d3f4dcf9b7a9b\n"
    },
    {
      "commit": "e155bd0fcb57fa96c4a7b5cc70205d53acf41291",
      "tree": "81521106d865081b80000e7135174087a0f56e68",
      "parents": [
        "cd5256594b75e81bcc0708d7599fe5fa0157d0ae",
        "5f668c6e6bb2515325632691a804a7c8f24ebb09"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:58:28 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 18:58:28 2011 -0800"
      },
      "message": "am 5f668c6e: am 8b9df978: Merge \"Fix getSwitchState.\" into honeycomb\n\n* commit \u00275f668c6e6bb2515325632691a804a7c8f24ebb09\u0027:\n  Fix getSwitchState.\n"
    },
    {
      "commit": "5f668c6e6bb2515325632691a804a7c8f24ebb09",
      "tree": "645f1fcf27a746e4d4a00f3297224fb52375fe91",
      "parents": [
        "d3782640515019cf4b6f3577cd7917cb0ef4b68e",
        "8b9df97826f94e2e871eff734b174a4752b0d5f9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:55:51 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 18:55:51 2011 -0800"
      },
      "message": "am 8b9df978: Merge \"Fix getSwitchState.\" into honeycomb\n\n* commit \u00278b9df97826f94e2e871eff734b174a4752b0d5f9\u0027:\n  Fix getSwitchState.\n"
    },
    {
      "commit": "89de57a8d252a25ef2412a11a66089a9ff6ffe29",
      "tree": "26c27db9de6f06bfd9ea0e3bb6ddae805fcccbcb",
      "parents": [
        "2cb866b948c38923b31331a9b2f031eb9d791e6e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:41:38 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:41:38 2011 -0800"
      },
      "message": "Fix getSwitchState.\n\nInputReader::getSwitchState always returns AKEY_STATE_UNKNOWN\nbecause SwitchInputMapper::getSources() returns 0 which cannot\nmatch any source mask including AINPUT_SOURCE_ANY.  As a result\ninitial lid switch detection is broken.\n\nThis change adds a new source constant AINPUT_SOURCE_SWITCH\nthat indicates that the source has switches.\n\nChange-Id: I5321ecf0ce84f1c2b4535f6c163d3f4dcf9b7a9b\n"
    },
    {
      "commit": "a2a3ea5ddadd7e3c882a93906b90e60231735818",
      "tree": "7462b85b2c038961c672eef0c7294679991279ef",
      "parents": [
        "e944c0fe027d98d10d551f133aae0fb53e3f6b35",
        "1324e3b1a4246f77d516b37fa98013ffad91268e"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 19 10:09:01 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 10:09:01 2011 -0800"
      },
      "message": "am 1324e3b1: am 4061c9aa: Merge \"Fix the presentation video resolution when it is different from the actual image resolution of the video.\" into honeycomb\n\n* commit \u00271324e3b1a4246f77d516b37fa98013ffad91268e\u0027:\n  Fix the presentation video resolution when it is different from the actual image resolution of the video.\n"
    },
    {
      "commit": "1324e3b1a4246f77d516b37fa98013ffad91268e",
      "tree": "6d0f6768bcc07bc7869022f6111145f9ee79656f",
      "parents": [
        "d3bf3eeadd59748b9cbe7535378b4bdf8dd8f117",
        "4061c9aa6d77bd7ad3b43d898b3e55fd62f57f18"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 19 10:06:23 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 10:06:23 2011 -0800"
      },
      "message": "am 4061c9aa: Merge \"Fix the presentation video resolution when it is different from the actual image resolution of the video.\" into honeycomb\n\n* commit \u00274061c9aa6d77bd7ad3b43d898b3e55fd62f57f18\u0027:\n  Fix the presentation video resolution when it is different from the actual image resolution of the video.\n"
    },
    {
      "commit": "08adfd29ae3634b554cfe184ab82f112ef934d7b",
      "tree": "4c18050f552689c88684288af75588b81c8c5c8c",
      "parents": [
        "c40fc87147baffa2a71d66550a0f99ca2524f4b9"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Sun Jan 16 11:30:13 2011 -0800"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Jan 19 08:33:07 2011 -0800"
      },
      "message": "Fix the presentation video resolution when it is different from the actual image resolution of the video.\n\nbug - 3352413\n\nChange-Id: I8f08f3896e9fb90f09119dccdb88b82af60f79f2\n"
    },
    {
      "commit": "b26c516c03beffaf60460d3589b3807c0799c344",
      "tree": "dc0df936813d0b042d5868ce7e9fabd8d86e411a",
      "parents": [
        "02bbbc1122eac6ab02c10c3c1bb34092914e3743",
        "41395459e676cf9ab4059e08446656f145662c2d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 18 14:38:27 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 18 14:38:27 2011 -0800"
      },
      "message": "am 41395459: Merge \"Filter virtual keys after touches.  (DO NOT MERGE)\" into gingerbread\n\n* commit \u002741395459e676cf9ab4059e08446656f145662c2d\u0027:\n  Filter virtual keys after touches.  (DO NOT MERGE)\n"
    },
    {
      "commit": "41395459e676cf9ab4059e08446656f145662c2d",
      "tree": "6f31fb66122790fa6378d2478c6b5c82194eb49f",
      "parents": [
        "07e6f616d122496342a5bae51323bb218d88f7f2",
        "6f71d0fedbb04c048a7294976103e42f0f046641"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 18 14:31:31 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 18 14:31:31 2011 -0800"
      },
      "message": "Merge \"Filter virtual keys after touches.  (DO NOT MERGE)\" into gingerbread"
    },
    {
      "commit": "0f6226b9f417182bbf791598000f0a153fbf191c",
      "tree": "6b10732d2ec4126ddfaea5b7948fd031d6cbc63c",
      "parents": [
        "2e3720f1e0bec9752dc920853a35a778358b1155",
        "cb1404e45639d20439d7700b06d57ca1a1aad1fa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 15:57:44 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 17 15:57:44 2011 -0800"
      },
      "message": "Merge \"Add joystick support to framework.\""
    },
    {
      "commit": "cb1404e45639d20439d7700b06d57ca1a1aad1fa",
      "tree": "1d9bb7c58ea0a9ae36c242602fca59d343e8a0cd",
      "parents": [
        "e0dfee2b7075c1eac0db08d79d47381693d2f125"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Jan 15 18:14:15 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 13:51:00 2011 -0800"
      },
      "message": "Add joystick support to framework.\n\nChange-Id: I95374436708752e1a9cff3f85c5b9bc3e0987961\n"
    },
    {
      "commit": "bf6ccb04b93f7a2738f29f2d96a69f32f7602f51",
      "tree": "810eb2b3fc905207d1cb9d16a9c66848d205a8bc",
      "parents": [
        "f7465eb652717d89193b0208a85edc8bd1ef0b4d",
        "307003a844c90458bcfd7398c44bbae734936238"
      ],
      "author": {
        "name": "Dharmaray Kundargi",
        "email": "dharmaray@google.com",
        "time": "Mon Jan 17 11:40:16 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 17 11:40:16 2011 -0800"
      },
      "message": "am 307003a8: Merge \"integrate videoeditor preview player.\" into honeycomb\n\n* commit \u0027307003a844c90458bcfd7398c44bbae734936238\u0027:\n  integrate videoeditor preview player.\n"
    }
  ],
  "next": "307003a844c90458bcfd7398c44bbae734936238"
}
