)]}'
{
  "log": [
    {
      "commit": "9c37e5add9d7678a29b4e0d1e178fe78a13db961",
      "tree": "e976ea1d1156490ec010d93ac1fe4f9bee526ef8",
      "parents": [
        "181bb0ab461b1c8a6bf608f19c136fc0bbee7a3d",
        "75a91389f1938214397aaee262f4136e6bb6b094"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 22:24:53 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 22:24:53 2010 -0700"
      },
      "message": "am 75a91389: Merge \"Implement native key pre-dispatching to IMEs.\" into gingerbread\n\nMerge commit \u002775a91389f1938214397aaee262f4136e6bb6b094\u0027 into gingerbread-plus-aosp\n\n* commit \u002775a91389f1938214397aaee262f4136e6bb6b094\u0027:\n  Implement native key pre-dispatching to IMEs.\n"
    },
    {
      "commit": "2c6081ce3593712f30dacd990a97209c791d6ced",
      "tree": "4808bc521c207ea11ec0daceb98f77a6b47b00a0",
      "parents": [
        "c5ed5910c9ef066cec6a13bbb404ec57b1e92637"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 17:44:53 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 22:05:33 2010 -0700"
      },
      "message": "Implement native key pre-dispatching to IMEs.\n\nThis significantly re-works the native key dispatching code to\nallow events to be pre-dispatched to the current IME before\nbeing processed by native code.  It introduces one new public\nAPI, which must be called after retrieving an event if the app\nwishes for it to be pre-dispatched.\n\nCurrently the native code will only do pre-dispatching of\nsystem keys, to avoid significant overhead for gaming input.\nThis should be improved to be smarted, filtering for only\nkeys that the IME is interested in.  Unfortunately IMEs don\u0027t\ncurrently provide this information. :p\n\nChange-Id: Ic1c7aeec8b348164957f2cd88119eb5bd85c2a9f\n"
    },
    {
      "commit": "aca672ba2eea19420df16906851d56077a3fd3b2",
      "tree": "e1bb8a8c761aafd867c41331f0dbcc2175180b61",
      "parents": [
        "2c43b6cee14cde6721689239e47d32319dbbf6ee",
        "c5ed5910c9ef066cec6a13bbb404ec57b1e92637"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 18:47:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 18:47:24 2010 -0700"
      },
      "message": "am c5ed5910: Add support for new input sources.\n\nMerge commit \u0027c5ed5910c9ef066cec6a13bbb404ec57b1e92637\u0027 into gingerbread-plus-aosp\n\n* commit \u0027c5ed5910c9ef066cec6a13bbb404ec57b1e92637\u0027:\n  Add support for new input sources.\n"
    },
    {
      "commit": "c5ed5910c9ef066cec6a13bbb404ec57b1e92637",
      "tree": "b06dfdac2d807dae78a2634007b6e627eefd0804",
      "parents": [
        "d9452ecd0ce6c8e0518055929ba1fd0712146405"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 18:48:53 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 18:32:33 2010 -0700"
      },
      "message": "Add support for new input sources.\n\nAdded several new coordinate values to MotionEvents to capture\ntouch major/minor area, tool major/minor area and orientation.\n\nRenamed NDK input constants per convention.\n\nAdded InputDevice class in Java which will eventually provide\nuseful information about available input devices.\n\nAdded APIs for manufacturing new MotionEvent objects with multiple\npointers and all necessary coordinate data.\n\nFixed a bug in the input dispatcher where it could get stuck with\na pointer down forever.\n\nFixed a bug in the WindowManager where the input window list could\nend up containing stale removed windows.\n\nFixed a bug in the WindowManager where the input channel was being\nremoved only after the final animation transition had taken place\nwhich caused spurious WINDOW DIED log messages to be printed.\n\nChange-Id: Ie55084da319b20aad29b28a0499b8dd98bb5da68\n"
    },
    {
      "commit": "3e5e21d4dc74751e64d17379c5563ece39a7e35d",
      "tree": "b59e54a9528bf1844521574339231468d726be6c",
      "parents": [
        "cc52121c4f88e9feb8404937bcbfff6e73084666",
        "1772c34e5331a6456c8a93051192d19ff873c062"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 15:44:46 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 15:44:46 2010 -0700"
      },
      "message": "am 1772c34e: Merge \"StrictMode: gather and return violating stacks in Binder replies\" into gingerbread\n\nMerge commit \u00271772c34e5331a6456c8a93051192d19ff873c062\u0027 into gingerbread-plus-aosp\n\n* commit \u00271772c34e5331a6456c8a93051192d19ff873c062\u0027:\n  StrictMode: gather and return violating stacks in Binder replies\n"
    },
    {
      "commit": "cc52121c4f88e9feb8404937bcbfff6e73084666",
      "tree": "bb6144544024fd49a0c9c2b610eb4924c16540b5",
      "parents": [
        "078ccbdbb98c118aa87cab2fef61ff90dd128358",
        "c4b204bdc4ab974f1f96814c93d8eaa750c15122"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 15:44:41 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 15:44:41 2010 -0700"
      },
      "message": "am c4b204bd: Merge \"More StrictMode work, keeping Binder \u0026 BlockGuard\\\u0027s thread-locals in-sync.\" into gingerbread\n\nMerge commit \u0027c4b204bdc4ab974f1f96814c93d8eaa750c15122\u0027 into gingerbread-plus-aosp\n\n* commit \u0027c4b204bdc4ab974f1f96814c93d8eaa750c15122\u0027:\n  More StrictMode work, keeping Binder \u0026 BlockGuard\u0027s thread-locals in-sync.\n"
    },
    {
      "commit": "5b747191ff8ad43a54d41faf50436271d1d7fcc8",
      "tree": "b55016fca3367035e4d9109bd9ee509b250bd23f",
      "parents": [
        "727de40c6bc7c6521a0542ea9def5d5c7b1c5e06"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Jul 12 11:05:38 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 13:18:05 2010 -0700"
      },
      "message": "StrictMode: gather and return violating stacks in Binder replies\n\nNow, when Thread A has a strict mode policy in effect and does a\nBinder call to Thread B (most likely in another process), the strict\nmode policy is passed along, but with the GATHER penalty bit set which\noverrides other policies and instead gathers all offending stack\ntraces to a threadlocal which are then written back in the Parcel\u0027s\nreply header.\n\nChange-Id: I7d4497032a0609b37b1a2a15855f5c929ba0584d\n"
    },
    {
      "commit": "727de40c6bc7c6521a0542ea9def5d5c7b1c5e06",
      "tree": "0d2f0f400211efbaf131020d7c4d38e647f5bbe3",
      "parents": [
        "d6343c26b8580f61a257a3045bfa124049201116"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Jul 07 16:06:39 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 15 13:18:05 2010 -0700"
      },
      "message": "More StrictMode work, keeping Binder \u0026 BlockGuard\u0027s thread-locals in-sync.\n\nChange-Id: Ia67cabcc17a73a0f15907ffea683d06bc41b90e5\n"
    },
    {
      "commit": "d1313da5999e06be16e52527cfba443f66b333a1",
      "tree": "196b94ffdbc4fbe6104bfa8cce9e06f57d8be89f",
      "parents": [
        "521e9aa7523220c3dc48f6abd32fad6b76eea114",
        "eb6e0df18a6567d38caa039ba0b0e49e2e9b46c3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 10:21:18 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 10:21:18 2010 -0700"
      },
      "message": "am eb6e0df1: Don\\\u0027t build framework tests for simulator target.\n\nMerge commit \u0027eb6e0df18a6567d38caa039ba0b0e49e2e9b46c3\u0027 into gingerbread-plus-aosp\n\n* commit \u0027eb6e0df18a6567d38caa039ba0b0e49e2e9b46c3\u0027:\n  Don\u0027t build framework tests for simulator target.\n"
    },
    {
      "commit": "eb6e0df18a6567d38caa039ba0b0e49e2e9b46c3",
      "tree": "b2250fd3fcb9f7171b0066b03f47aa08415bb550",
      "parents": [
        "c98e431119867dbc4ae3da52d5c374607c0f67b9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:40:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:55:02 2010 -0700"
      },
      "message": "Don\u0027t build framework tests for simulator target.\n\nChange-Id: I70f29c7eb307e4f3ec5702f4eb9d97b4342e2f36\n"
    },
    {
      "commit": "78983a9133d3dd3f08b1ec462a7e2f9e7bfa9e2f",
      "tree": "abcbed59852e25b45b7e0fb70f37733608ab00df",
      "parents": [
        "0a48a1f31dcfb152c166ff5621942c950f8cca72",
        "4055b780bb7e85abcf4754b84e50bf407c45bec8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:45:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 18:45:56 2010 -0700"
      },
      "message": "am 4055b780: Merge \"move native services under services/\" into gingerbread\n\nMerge commit \u00274055b780bb7e85abcf4754b84e50bf407c45bec8\u0027 into gingerbread-plus-aosp\n\n* commit \u00274055b780bb7e85abcf4754b84e50bf407c45bec8\u0027:\n  move native services under services/\n"
    },
    {
      "commit": "08e83bb3b7cc41f603867acbeb1168019cf535fe",
      "tree": "79594e01ef6c3306b890cb944d6f15d3098075c4",
      "parents": [
        "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    },
    {
      "commit": "db386f2c263c6e9e4b825d4c9a320849f8f2c916",
      "tree": "0da1a3ed1d9a0a4ce8576f564bc3ad3dd95ee8af",
      "parents": [
        "98704f14eaeef6c9bcb73fea162f4941dd9bbd87",
        "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 16:36:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 16:36:19 2010 -0700"
      },
      "message": "am c9a11088: Merge \"first step at implementing the native sensor support\" into gingerbread\n\nMerge commit \u0027c9a11088e503b9e3ae52a3f671b2d21f5cd54f06\u0027 into gingerbread-plus-aosp\n\n* commit \u0027c9a11088e503b9e3ae52a3f671b2d21f5cd54f06\u0027:\n  first step at implementing the native sensor support\n"
    },
    {
      "commit": "98704f14eaeef6c9bcb73fea162f4941dd9bbd87",
      "tree": "72bcea6d022ed0f607becdb9ae69c68946cb9363",
      "parents": [
        "50576fa8152557a25e1a231c66d694fffbab34d6",
        "38eea8bf990540360b45b963195a7766c30b55d2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 16:35:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 16:35:55 2010 -0700"
      },
      "message": "am 38eea8bf: Merge \"Remove the YV16 format for simplicity\\\u0027s sake.\" into gingerbread\n\nMerge commit \u002738eea8bf990540360b45b963195a7766c30b55d2\u0027 into gingerbread-plus-aosp\n\n* commit \u002738eea8bf990540360b45b963195a7766c30b55d2\u0027:\n  Remove the YV16 format for simplicity\u0027s sake.\n"
    },
    {
      "commit": "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06",
      "tree": "d6841ee8f8cf79e7079bfb0f53dc053cc5bd670d",
      "parents": [
        "38eea8bf990540360b45b963195a7766c30b55d2",
        "b957b9d63c88efd3a961759424987b99219adeed"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 16:32:04 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 14 16:32:04 2010 -0700"
      },
      "message": "Merge \"first step at implementing the native sensor support\" into gingerbread"
    },
    {
      "commit": "058d0390a44f68b67788021bae9ca1775812997b",
      "tree": "23b97aa83da730d4057a68647f8fd09a37fe636f",
      "parents": [
        "36ff93aa1f489e6af6c2acce38beb0bffd6b8f8a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 07 14:53:13 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 15:12:05 2010 -0700"
      },
      "message": "Remove the YV16 format for simplicity\u0027s sake.\n\nChange-Id: Iee03d100933ba0c67b13d51e0435be3b4cd953cf\n"
    },
    {
      "commit": "b957b9d63c88efd3a961759424987b99219adeed",
      "tree": "930432d7a5ca739d27d494734de339a938ec7fb6",
      "parents": [
        "e558010a623ead3564fe4d656a5963bf05c17edd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 22:21:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 22:21:56 2010 -0700"
      },
      "message": "first step at implementing the native sensor support\n\nin this commit:\n- implemented the C stub\n- implemented the binder interfaces involved\n- implemented most of the C++ client side\n\nmissing:\n- SensorManager cannot connect to the SensorServer yet\n(because there is no SensorServer yet)\n\nChange-Id: I75010cbeef31c98d6fa62fd5d388dcef87c2636b\n"
    },
    {
      "commit": "f8d9379bd834573feca085284970cf686993c330",
      "tree": "d603a4c197ba91ab2103a04d244e3f1004bef9e3",
      "parents": [
        "89ee578b7053d27a50922f82feb94bf6054b330c",
        "d76b67c340d1564abf8d14d976fdaf83bf2b3320"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 18:55:52 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 18:55:52 2010 -0700"
      },
      "message": "am d76b67c3: IME events are now dispatched to native applications.\n\nMerge commit \u0027d76b67c340d1564abf8d14d976fdaf83bf2b3320\u0027 into gingerbread-plus-aosp\n\n* commit \u0027d76b67c340d1564abf8d14d976fdaf83bf2b3320\u0027:\n  IME events are now dispatched to native applications.\n"
    },
    {
      "commit": "d76b67c340d1564abf8d14d976fdaf83bf2b3320",
      "tree": "59c0fff396681a622480a84f4f9c74d188970a11",
      "parents": [
        "fd03582995e0fce963dd0fa0669e3211b74c0dd7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 17:48:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 18:36:46 2010 -0700"
      },
      "message": "IME events are now dispatched to native applications.\n\nAnd also:\n\n- APIs to show and hide the IME, and control its interaction with the app.\n- APIs to tell the app when its window resizes and needs to be redrawn.\n- API to tell the app the content rectangle of its window (to layout\n  around the IME or status bar).\n\nThere is still a problem with IME interaction -- we need a way for the\napp to deliver events to the IME before it handles them, so that for\nexample the back key will close the IME instead of finishing the app.\n\nChange-Id: I37b75fc2ec533750ef36ca3aedd2f0cc0b5813cd\n"
    },
    {
      "commit": "89ee578b7053d27a50922f82feb94bf6054b330c",
      "tree": "3f2c9fc609c55f5ab037d7ffaf7ec31f261904a2",
      "parents": [
        "706623ddb8314850c0551f0b66e24b5f0bd28620",
        "fd03582995e0fce963dd0fa0669e3211b74c0dd7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:46:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 17:46:19 2010 -0700"
      },
      "message": "am fd035829: Add initial gamepad support.\n\nMerge commit \u0027fd03582995e0fce963dd0fa0669e3211b74c0dd7\u0027 into gingerbread-plus-aosp\n\n* commit \u0027fd03582995e0fce963dd0fa0669e3211b74c0dd7\u0027:\n  Add initial gamepad support.\n"
    },
    {
      "commit": "fd03582995e0fce963dd0fa0669e3211b74c0dd7",
      "tree": "8f7fe0e2a437620a7cbe4e494f71fe8ccfdbe2eb",
      "parents": [
        "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 16:10:35 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:04:57 2010 -0700"
      },
      "message": "Add initial gamepad support.\n\nChange-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9\n"
    },
    {
      "commit": "706623ddb8314850c0551f0b66e24b5f0bd28620",
      "tree": "a9e49309fb30bbee68e9cbc970604abcf47571e2",
      "parents": [
        "7a72f84801c3ad74f00f5d3d0da7e2212d07a911",
        "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 13 15:55:05 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 15:55:05 2010 -0700"
      },
      "message": "am c0a7e690: Add Parcel::readExceptionCode() and Parcel::writeNoException()\n\nMerge commit \u0027c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6\u0027 into gingerbread-plus-aosp\n\n* commit \u0027c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6\u0027:\n  Add Parcel::readExceptionCode() and Parcel::writeNoException()\n"
    },
    {
      "commit": "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6",
      "tree": "a0cbda85dcb855134d89f4f1b27f0457f4ee5e7f",
      "parents": [
        "70c6c9a1e2240e82d8eb442b34efa9629ef2bba4"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 13 15:33:35 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 13 15:45:18 2010 -0700"
      },
      "message": "Add Parcel::readExceptionCode() and Parcel::writeNoException()\n\nAdd native Parcel methods analogous to the Java versions.\n\nCurrently, these don\u0027t do much, but upcoming StrictMode work changes\nthe RPC calling conventions in some cases, so it\u0027s important that\neverybody uses these consistently, rather than having a lot of code\ntrying to parse RPC responses out of Parcels themselves.\n\nAs a summary, the current convention that Java Binder services use is\nto prepend the reply Parcel with an int32 signaling the exception\nstatus:\n\n     0: no exception\n     -1: Security exception\n     -2: Bad Parcelable\n     -3: ...\n     -4: ...\n     -5: ...\n\n... followed by Parceled String if the exception code is non-zero.\n\nWith an upcoming change, it\u0027ll be the case that a response Parcel can,\nnon-exceptionally return rich data in the header, and also return data\nto the caller.  The important thing to note in this new case is that\nthe first int32 in the reply parcel *will not be zero*, so anybody\nmanually checking for it with reply.readInt32() will get false\nnegative failures.\n\nShort summary: If you\u0027re calling into a Java service and manually\nchecking the exception status with reply.readInt32(), change it to\nreply.readExceptionCode().\n\nChange-Id: I23f9a0e53a8cfbbd9759242cfde16723641afe04\n"
    },
    {
      "commit": "66fa2b44cadf8694cc1b7e2aae1f8abaff4fc547",
      "tree": "dc7c8991724d6093db703624ff78655745bfe158",
      "parents": [
        "f6bdc764b7a21f8037504e1dc4f81227ea2bedea",
        "8e886be413570fab6c623930a5775dd36a6d11e1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 12:31:35 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 12:31:35 2010 -0700"
      },
      "message": "am 8e886be4: Merge \"Modifications in audio effect engine state management.\" into gingerbread\n\nMerge commit \u00278e886be413570fab6c623930a5775dd36a6d11e1\u0027 into gingerbread-plus-aosp\n\n* commit \u00278e886be413570fab6c623930a5775dd36a6d11e1\u0027:\n  Modifications in audio effect engine state management.\n"
    },
    {
      "commit": "7d850f23c857fe0c0deec9b9ea593d3029665a16",
      "tree": "c5b885b890b6707a42a0f54cb4f2e3d4b7e6eacd",
      "parents": [
        "e339464f1c8efe7e53b761cf44ff5be6e537ecad"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 09 13:34:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 12:27:18 2010 -0700"
      },
      "message": "Modifications in audio effect engine state management.\n\n- Separate the updating of effect engine state from the process call in EffectModule so that the state\nof all effects in the same effect chain is updated simultaneusly before all process functions are called.\n- Added a mechanism for the effect engine to continue being called for processing after receiving the disable\ncommands untils it considers that the framework can stop calling the process function without causing\na glitch or loosing some effect tail.\n- Updated test reverb and equalizer to support this new feature\n\nChange-Id: Icb56ae2c84c076d4dbad6cf733b1a62f823febe7\n"
    },
    {
      "commit": "ceb8465e974ba5fa971ffe1b5b74e94a1bd53f97",
      "tree": "929cd03ef2adce2dfee8422ae2fb3d3551d7ab8d",
      "parents": [
        "bbf0bde5d8311f84b6f0a8d018d78a78429602b7",
        "87bb18579a5eea2e24af78af8c0f54f5455ce8fd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 11:20:04 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 12 11:20:04 2010 -0700"
      },
      "message": "am 87bb1857: Merge changes I2337051b,I19b426cb into gingerbread\n\nMerge commit \u002787bb18579a5eea2e24af78af8c0f54f5455ce8fd\u0027 into gingerbread-plus-aosp\n\n* commit \u002787bb18579a5eea2e24af78af8c0f54f5455ce8fd\u0027:\n  Tweak ObbFile class\n  Allow things that can install packages to set Obb paths\n"
    },
    {
      "commit": "87bb18579a5eea2e24af78af8c0f54f5455ce8fd",
      "tree": "4538368088979c951572d317c7b9af696194c25a",
      "parents": [
        "faccac7616795859af257777900db514d425a106",
        "87315aa1f0b64efcef416628215be89851cc4736"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 11:18:34 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 12 11:18:34 2010 -0700"
      },
      "message": "Merge changes I2337051b,I19b426cb into gingerbread\n\n* changes:\n  Tweak ObbFile class\n  Allow things that can install packages to set Obb paths\n"
    },
    {
      "commit": "87315aa1f0b64efcef416628215be89851cc4736",
      "tree": "e7000fef6bfe18391398e4cd04399054f3a0c18e",
      "parents": [
        "e059b2784fcc89c6cd43301cc6af89cf3b8101f7"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 09:02:18 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jul 12 09:11:24 2010 -0700"
      },
      "message": "Tweak ObbFile class\n\n* Move error messages around to clarify the errors.\n\n* Add extra error check when reading a file.\n\n* Seek to the end of a file when writing the signature so the users of\n  the API don\u0027t have to remember to do it.\n\nChange-Id: I2337051b9f9fa8147c5900237deec790dcd92436\n"
    },
    {
      "commit": "b14f325a0118ffce286155caaabaae149653462c",
      "tree": "9b697de6cf04521e85d54cce2d0d2e2e56222a0b",
      "parents": [
        "0260887ca78330b8dd7009d91859925df94a69d6",
        "289b9b62372ef52a06113b83dfb870e2c2fb325a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 17:03:14 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 09 17:03:14 2010 -0700"
      },
      "message": "am 289b9b62: Add ANativeWindow API for directly drawing to the surface bits.\n\nMerge commit \u0027289b9b62372ef52a06113b83dfb870e2c2fb325a\u0027 into gingerbread-plus-aosp\n\n* commit \u0027289b9b62372ef52a06113b83dfb870e2c2fb325a\u0027:\n  Add ANativeWindow API for directly drawing to the surface bits.\n"
    },
    {
      "commit": "289b9b62372ef52a06113b83dfb870e2c2fb325a",
      "tree": "e444446a331fdbe9b936a0c2570a609675468d05",
      "parents": [
        "2aaa9e9fc5ddc05cedbe530c7a41eca0e3a62b7a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 11:44:11 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 16:58:19 2010 -0700"
      },
      "message": "Add ANativeWindow API for directly drawing to the surface bits.\n\nAlso other cleanup and fixes:\n\n- We now properly set the default window format to 565.\n- New APIs to set the window format and flags from native code.\n- Tweaked glue for simpler handling of the \"destroy\" message.\n- Um, other stuff.\n\nChange-Id: Id7790a21a2fa9a19b91854d225324a7c1e7c6ade\n"
    },
    {
      "commit": "49159f0748c704e53a7bd754f26113d9ab844a97",
      "tree": "a2a55b66f2ebb9b5c3bda1676e48a2a6679fef4a",
      "parents": [
        "49ff1e6c6c857e1a596fa0b75faaaf17cae08621",
        "74bf59b450daf9e7e6bf234f01db164099edbfd5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 08 12:26:32 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 08 12:26:32 2010 -0700"
      },
      "message": "am 74bf59b4: Merge \"Add new glue code for writing native apps.\" into gingerbread\n\nMerge commit \u002774bf59b450daf9e7e6bf234f01db164099edbfd5\u0027 into gingerbread-plus-aosp\n\n* commit \u002774bf59b450daf9e7e6bf234f01db164099edbfd5\u0027:\n  Add new glue code for writing native apps.\n"
    },
    {
      "commit": "85448bbecd4e0909eecfab15b7c3605f114d0427",
      "tree": "3380a9a85e321dc7ee4397dc1b4f22564af117d8",
      "parents": [
        "f7d2b4a2e096ae1f8ac3a2ed8b2f0e30a237f732"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 07 14:27:31 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 08 11:06:59 2010 -0700"
      },
      "message": "Add new glue code for writing native apps.\n\nThis factors out the boiler-plate code from the sample\napp to a common glue code that can be used for everyone\nwriting this style of app: a dedicated app thread that\ntakes care of waiting for events and processing them.\n\nAs part of doing this, ALooper has a new facility to allow\nregistration of fds that cause ALooper_pollOnce() to return\nthe fd that has data, allowing the app to drive the loop\nwithout callbacks.  Hopefully this makes some people feel better. :)\n\nAlso do some other cleanup of the ALooper API, plus some\nactual documentation.\n\nChange-Id: Ic53bd56bdf627e3ba28a3c093faa06a92be522b8\n"
    },
    {
      "commit": "d481cdd4c0305f8afd857fe3ec3fbf189b744370",
      "tree": "947d91c19bf94861bf6605eee52a748f6bccf3b9",
      "parents": [
        "167449e5f810a49741133de375eea1006f7218c0",
        "c9535de8e398d766c95144f9a831f34b2cecfd91"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 07 18:16:01 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 07 18:16:01 2010 -0700"
      },
      "message": "am c9535de8: Merge \"Add OBB file helper class\" into gingerbread\n\nMerge commit \u0027c9535de8e398d766c95144f9a831f34b2cecfd91\u0027 into gingerbread-plus-aosp\n\n* commit \u0027c9535de8e398d766c95144f9a831f34b2cecfd91\u0027:\n  Add OBB file helper class\n"
    },
    {
      "commit": "c9535de8e398d766c95144f9a831f34b2cecfd91",
      "tree": "a7f8dc10f01f25edfa4a339304d6d007c24b7ea5",
      "parents": [
        "b17f4dcfb3edba25bd8c30e60449b9bbcd600a57",
        "7cee34a051eb0087322c8b965e498f88b1aa52d3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 07 18:14:13 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 18:14:13 2010 -0700"
      },
      "message": "Merge \"Add OBB file helper class\" into gingerbread"
    },
    {
      "commit": "167449e5f810a49741133de375eea1006f7218c0",
      "tree": "ab4b2a54ca79801284d0cfae15f70e5136ba4080",
      "parents": [
        "7017e0d5c372db1e470d9881c46b15eade051d76",
        "b17f4dcfb3edba25bd8c30e60449b9bbcd600a57"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Wed Jul 07 17:45:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 07 17:45:21 2010 -0700"
      },
      "message": "am b17f4dcf: Merge \"More native input dispatch work.\" into gingerbread\n\nMerge commit \u0027b17f4dcfb3edba25bd8c30e60449b9bbcd600a57\u0027 into gingerbread-plus-aosp\n\n* commit \u0027b17f4dcfb3edba25bd8c30e60449b9bbcd600a57\u0027:\n  More native input dispatch work.\n"
    },
    {
      "commit": "b17f4dcfb3edba25bd8c30e60449b9bbcd600a57",
      "tree": "0820fc428a7c001e5eb8796ff806ee78f1b1638f",
      "parents": [
        "f3f25bf80b7d21f12442da8f82d17c79dd371692",
        "00fa7bdd69f0868fd17ea7c881c771d785b2fbbd"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Wed Jul 07 17:43:12 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 17:43:12 2010 -0700"
      },
      "message": "Merge \"More native input dispatch work.\" into gingerbread"
    },
    {
      "commit": "b91881fdd1608cc922f105ec552b5505da1fecb9",
      "tree": "a6869c91c5902038650fd5b130cadaec083bc04a",
      "parents": [
        "3338775df7a19e0785c9badcedd90b99cda22013",
        "dacabf97c609a040ada857a7da6c560097448ae3"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 16:34:57 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 07 16:34:57 2010 -0700"
      },
      "message": "am dacabf97: Merge \"Added Visualizer effect.\" into gingerbread\n\nMerge commit \u0027dacabf97c609a040ada857a7da6c560097448ae3\u0027 into gingerbread-plus-aosp\n\n* commit \u0027dacabf97c609a040ada857a7da6c560097448ae3\u0027:\n  Added Visualizer effect.\n"
    },
    {
      "commit": "dacabf97c609a040ada857a7da6c560097448ae3",
      "tree": "feb67557f7f0120296bcc341d18aed20dce2b8d7",
      "parents": [
        "4b9baa69f3b3146edbc623f0670103265c4f4fe5",
        "df9b81ced437b11f8a3fcf4ba3ea6af703d121e2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 07 16:23:30 2010 -0700"
      },
      "message": "Merge \"Added Visualizer effect.\" into gingerbread"
    },
    {
      "commit": "df9b81ced437b11f8a3fcf4ba3ea6af703d121e2",
      "tree": "c80b989df744ea74f62c800a8848813174792cc2",
      "parents": [
        "31e0ffe8444b70500cac319da084c4c45e62aca2"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 02 08:12:41 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 07 11:00:28 2010 -0700"
      },
      "message": "Added Visualizer effect.\n\nThe visualizer enables application to retrieve part of the currently playing audio for visualization purpose.\nIt is not an audio recording interface and only returns partial and low quality audio content as a waveform or\na frequency representation (FFT).\n\nRemoved temporary hack made in MediaPlayer for animated wall papers based on audio visualization (snoop() method.\n\nThis commit also includes a change in AudioEffect class:\n - the enable()/disable() methods have been replaced bya more standard setEnabled() method.\n - some fixes in javadoc\n\nChange-Id: Id092a1340e9e38dae68646ade7be054e3a36980e\n"
    },
    {
      "commit": "7cee34a051eb0087322c8b965e498f88b1aa52d3",
      "tree": "08bb1d6c8850bb688b4eddf7e1a24888719b5e52",
      "parents": [
        "2e6aff8e19ce8292a36fe211f8051dccf1fb9670"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jun 01 10:34:29 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 07 09:57:50 2010 -0700"
      },
      "message": "Add OBB file helper class\n\nObbFile is a binary blob that will be used in packaging large files\nwith smaller APKs.\n\nChange-Id: Ib1594346cfa2f49113de6565af77c24efbd89d63\n"
    },
    {
      "commit": "e24901d3adb28fff72821d4e8e2ccc25b2184550",
      "tree": "7fe734d80c850fa82f33696e9b2f4f7733d697e4",
      "parents": [
        "5219a82f9d64a7d13401dcf9a0703a0ca2cd842d",
        "682674154e3fe88f6061245145f934f25f1a2eb8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 07 09:04:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 07 09:04:19 2010 -0700"
      },
      "message": "am 68267415: Add new native Looper API.\n\nMerge commit \u0027682674154e3fe88f6061245145f934f25f1a2eb8\u0027 into gingerbread-plus-aosp\n\n* commit \u0027682674154e3fe88f6061245145f934f25f1a2eb8\u0027:\n  Add new native Looper API.\n"
    },
    {
      "commit": "00fa7bdd69f0868fd17ea7c881c771d785b2fbbd",
      "tree": "6fff8ad404e57af316c6ce5a20020dc209eb3cc6",
      "parents": [
        "8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 02 15:37:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Jul 03 19:23:01 2010 -0700"
      },
      "message": "More native input dispatch work.\n\nRemoved old input dispatch code.\nRefactored the policy callbacks.\nPushed a tiny bit of the power manager state down to native.\nFixed long press on MENU.\nMade the virtual key detection and cancelation a bit more precise.\n\nChange-Id: I5d8c1062f7ea0ab3b54c6fadb058c4d5f5a9e02e\n"
    },
    {
      "commit": "682674154e3fe88f6061245145f934f25f1a2eb8",
      "tree": "a105ce9f0ae4d88732bfc8fb1a52d4474f17bc86",
      "parents": [
        "8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 02 18:52:01 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 02 18:57:02 2010 -0700"
      },
      "message": "Add new native Looper API.\n\nThis allows us to avoid exposing the file descriptor of\nthe event queue; instead, you attach an event queue to\na looper.  This will also should allow native apps to be\nwritten without the need for a separate thread, by attaching\nthe event queue to the main thread\u0027s looper and scheduling\ntheir own messages there.\n\nChange-Id: I38489282635895ae2cbfacb88599c1b1cad9b239\n"
    },
    {
      "commit": "f601ce2c1455cbfee3289309d20e55172df71bf6",
      "tree": "880eb6e83e11c2d0b819271ea5446253b0f603e7",
      "parents": [
        "1cbf9482d7d32bac60741d6e512f3ac921f3a6aa",
        "61af57bfc370ac0bbdf8a262afadf2f60a5bbded"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 02 07:38:30 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jul 02 07:38:30 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: Ifec16490ea2170728cb6ccb18d2e74fcb3478db6\n"
    },
    {
      "commit": "61c55c49073d4b10ca4dfdbb4e86684d11ac9c1c",
      "tree": "db54ecb0cc3ba4558e591818f9c74e9fe05bba4d",
      "parents": [
        "c6e1d88022db800773401c16803e1ab27fd01a7e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 01 21:17:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 01 21:17:56 2010 -0700"
      },
      "message": "remove unused YUV formats\n\nChange-Id: Ie84616f842c7e0329d68e67e65a65d510558004b\n"
    },
    {
      "commit": "c6e1d88022db800773401c16803e1ab27fd01a7e",
      "tree": "cca803afe826f86faab92bdbb70e35f6d672a052",
      "parents": [
        "30fe6fa07a9b9c6e7498198608125add8eb40744",
        "8b49bd1a2f8117e1c22884f0150e72cbcf838f32"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 16:05:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 30 16:05:30 2010 -0700"
      },
      "message": "Merge \"Introduce official public NativeWindow type.\" into gingerbread"
    },
    {
      "commit": "30fe6fa07a9b9c6e7498198608125add8eb40744",
      "tree": "ea9863284f7fdb5aa3c88292ca22d8aff3210a59",
      "parents": [
        "d8ae28854e1ed9bd90d7407f94c2e5ed9028b712",
        "4cfb3a69d2906fc2539dd30508aa6ba8d39065a9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 30 15:59:02 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 30 15:59:02 2010 -0700"
      },
      "message": "Merge \"fix live wallpapers on Droid\" into gingerbread"
    },
    {
      "commit": "4cfb3a69d2906fc2539dd30508aa6ba8d39065a9",
      "tree": "e54fd25fcd98e57a44a51c7b1b18cad05b2c2270",
      "parents": [
        "c19ffcba19f0d94552945105a7e29530b4806dd4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 30 15:43:47 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 30 15:43:47 2010 -0700"
      },
      "message": "fix live wallpapers on Droid\n\nOn omap3 h/w we force opaque formats to RGB_565 instead of RGBX_8888\nbecause the GL driver doesn\u0027t support it. RGBX_8888 is always remapped\nto RGBA_8888.\n\nChange-Id: I0bfabeb98c8d3a399079e6797cf2a0ee95915324\n"
    },
    {
      "commit": "8b49bd1a2f8117e1c22884f0150e72cbcf838f32",
      "tree": "ec6e43ed118268b09cbb61c8eed02c757e9602ed",
      "parents": [
        "3c80a4a044865bdf1289c7896baffa1c082d835c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 13:56:17 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 15:32:04 2010 -0700"
      },
      "message": "Introduce official public NativeWindow type.\n\nNot yet hooked up to anything in the NDK, but requires renaming\nthe existing android_native_window_t type everywhere.\n\nChange-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e\n"
    },
    {
      "commit": "d0097871828bb7d5d6eec06cadd92c2e3358849b",
      "tree": "c570862df0f2c38da96d8b88bb6ba10315810fc7",
      "parents": [
        "294c9fb8990ded73be52a3c1bfddbe1cebcd8b8e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 14:41:59 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 14:41:59 2010 -0700"
      },
      "message": "Fix injection of specially intercepted keys like HOME.\n\nThis change mainly unwinds a premature optimization in the\ndispatch pipeline.\nTo test HOME injection, run \u0027adb shell input keyevent 3\u0027.\n\nChange-Id: I1c4b7377c205da7c898014b8b07fc6dc1d46e4dd\n"
    },
    {
      "commit": "3c80a4a044865bdf1289c7896baffa1c082d835c",
      "tree": "557c89a685e672e44f90f55660da1f989d00a113",
      "parents": [
        "92dbad8ab0c8e242c4c3e52c339ed3296ae7901c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 29 19:20:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 10:49:40 2010 -0700"
      },
      "message": "Implement default key handling for native code.\n\nThe native code now maintains a list of all keys that may use\ndefault handling.  If the app finishes one of these keys\nwithout handling it, the key will be passed back off to Java\nfor default treatment.\n\nChange-Id: I6a842a0d728eeafa4de7142fae573f8c11099e18\n"
    },
    {
      "commit": "ddcb543ac8d9615ea78fbf8341949f54d86e6fbc",
      "tree": "f1caf14fc8301825ec22f68ede3e3022e447ef85",
      "parents": [
        "e42b18677e11d27fa1d3eaa1ffcb1f98c5fc8cbf",
        "0b72e82c5f5d4ab709539c3490d6c7023f680dff"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Tue Jun 29 17:01:04 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 29 17:01:04 2010 -0700"
      },
      "message": "Merge \"Fix native input dispatch in the emulator.\" into gingerbread"
    },
    {
      "commit": "0b72e82c5f5d4ab709539c3490d6c7023f680dff",
      "tree": "c0b9adc3370bd600a9dc5bb8f4ffa4e6151d1977",
      "parents": [
        "5d7f6e614e7ead1fbe40a6886f78c31809bcbd40"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 29 16:52:21 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 29 16:52:21 2010 -0700"
      },
      "message": "Fix native input dispatch in the emulator.\n\nSet a default orientation of ROTATION_0.\nAdded some more careful checks based on whether we have valid\nabsolute axis information from the driver.\nReset key repeating during configuration changes since the keyboard\ndevice may have been removed.\n\nChange-Id: I685960828acffcb17595fc5683309e8064a76714\n"
    },
    {
      "commit": "1eb442eef737051bd2734d823fa4c12c17c1da36",
      "tree": "030a23cdf22e752b508670df865be864a876966b",
      "parents": [
        "2533a6ad3f378db5f160546d10345730f68d676c",
        "c19ffcba19f0d94552945105a7e29530b4806dd4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 29 15:33:36 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 29 15:33:36 2010 -0700"
      },
      "message": "Merge \"remove a hack that was used only used on h/w we no longer support.\" into gingerbread"
    },
    {
      "commit": "c19ffcba19f0d94552945105a7e29530b4806dd4",
      "tree": "903c14e981d7c3ba4016d98529ef8163cf9d2f0c",
      "parents": [
        "f0562b4b071b74a760ad9c9caa0e41687ae6f407"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 29 15:31:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 29 15:31:58 2010 -0700"
      },
      "message": "remove a hack that was used only used on h/w we no longer support.\n\nthis should fix the opal build.\n\nChange-Id: I43d7633696fea5be6bc834293a832d22f6bdfc61\n"
    },
    {
      "commit": "2e9f93e8db509d5236229dc8540e0904c5dbb9f5",
      "tree": "9aa6aa2c4a59b808dd99604afb23eb5a0096d9a2",
      "parents": [
        "059f009d970fb37ac4e408dcf8e1d2d2cdcf0a84"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 28 15:27:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 29 10:43:54 2010 -0700"
      },
      "message": "Update native activity \u0026 event APIs to follow correct conventions.\n\nChange-Id: Ie64fb3a9c68bc9c117fa5621b75d1f609e304e0e\n"
    },
    {
      "commit": "f0562b4b071b74a760ad9c9caa0e41687ae6f407",
      "tree": "7727eecba3edba2862dd90174a3348028dab83fe",
      "parents": [
        "31e0ffe8444b70500cac319da084c4c45e62aca2",
        "8fa4c811e6d0da82282f9db1a32706399ee538bc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 28 20:01:58 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 28 20:01:58 2010 -0700"
      },
      "message": "Merge changes I93dfc4c8,I781953d6 into gingerbread\n\n* changes:\n  fix[2798925] Gingerbread TOT not booting\n  Revert \"Revert \"fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger\"\"\n"
    },
    {
      "commit": "8fa4c811e6d0da82282f9db1a32706399ee538bc",
      "tree": "7605cedca3a805f2845df27b8a5094f6901abf7c",
      "parents": [
        "781953d62dc17d761e39540f0480e5ca7451cdbe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 28 19:54:17 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 28 19:54:17 2010 -0700"
      },
      "message": "fix[2798925] Gingerbread TOT not booting\n\nFixed a typo where checking against the wrong constant caused GL_TEXTURE_EXTERNAL_OES\nto be used with a regular texture, which some GL driver will choke on.\n\nChange-Id: I93dfc4c8fa674433bbb678eee31954e9a8d0cb4b\n"
    },
    {
      "commit": "349703effce5acc53ed96f7ed8556131f0c65e18",
      "tree": "359217d5076e3005c724b2117a59ffec81e7a83b",
      "parents": [
        "f2b544f5ae7676f7ab4cdf3379b2ed3c60a65def"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 22 01:27:15 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 28 19:10:54 2010 -0700"
      },
      "message": "Native input event dispatching.\n\nTarget identification is now fully native.\nFixed a couple of minor issues related to input injection.\nNative input enabled by default, can be disabled by setting\nWindowManagerPolicy.ENABLE_NATIVE_INPUT_DISPATCH to false.\n\nChange-Id: I7edf66ed3e987cc9306ad4743ac57a116af452ff\n"
    },
    {
      "commit": "781953d62dc17d761e39540f0480e5ca7451cdbe",
      "tree": "b5762ff0e04ff7cdbd0a8a0df2b6cf74db8ce369",
      "parents": [
        "1cb3fdc91e1b82a5afe064714a1b530cc05577a7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 25 18:02:21 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 25 18:02:21 2010 -0700"
      },
      "message": "Revert \"Revert \"fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger\"\"\n\nThis reverts commit 330dd304a471d260a73e342a240921c03c825f99.\n"
    },
    {
      "commit": "53334cdb81bab4a4dfd0a41d2ef50709015a36c8",
      "tree": "1dfd6bd330fac24a95168349f8d96af0f058fc7f",
      "parents": [
        "0379118827ef7e81a70e88e5910f5c7536d8b945"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jun 23 17:38:20 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 25 11:59:35 2010 -0700"
      },
      "message": "Various fixes and improvements in audio effects implementation\n\nEffect API:\n- Use different definitions for audio device, channels, formats... in AudioSystem and EffectApi:\n  Removed media/AudioCommon.h file created for initial version of EffectApi\n- Indicate audio session and output ID to effect library when calling EffectCreate(). Session ID can be useful to optimize\nthe implementation of effect chains in the same audio session. Output ID can be used for effects implemented in audio hardware.\n- Renamed EffectQueryNext() function to EffectQueryEffect() and changed operating mode:\n  now an index is passed for the queried effect instead of implicitly querying the next one.\n- Added CPU load and memory usage indication in effects descriptor\n- Added flags and commands to indicate changes in audio mode (ring tone, in call...) to effect engine\n- Added flag to indicate hardware accelerated effect implementation.\n- Renamed EffectFactoryApi.h to EffectsFactoryApi.h for consistency with EffectsFactory.c/h\n\nEffect libraries:\n- Reflected changes in Effect API\n- Several fixes in reverb implementation\n- Added build option TEST_EFFECT_LIBRARIES in makefile to prepare integration of actual effect library.\n- Replaced pointer by integer identifier for library handle returned by effects factory\n\nAudio effect framework:\n- Added support for audio session -1 in preparation of output stage effects configuration.\n- Reflected changes in Effect API\n- Removed volume ramp up/down when effect is inserted/removed: this has to be taken care of by effect engines.\n- Added some overflow verification on indexes used for deferred parameter updates via shared memory\n- Added hardcoded CPU and memory limit check when creating a new effect instance\n\nChange-Id: I43fee5182ee201384ea3479af6d0acb95092901d\n"
    },
    {
      "commit": "fd23461c2b9e482262f5af6b96fcabf99fecca7f",
      "tree": "de5e699694f34f0c61997068c0d379595b440ba1",
      "parents": [
        "dd1880ee5bea09e9d37c6db29ef20e49d619c094"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "brucex.j.beare@intel.com",
        "time": "Fri Jun 25 09:08:12 2010 -0700"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "brucex.j.beare@intel.com",
        "time": "Fri Jun 25 09:08:12 2010 -0700"
      },
      "message": "Fix missing NL\n\nChange-Id: I323f0c01d2e9ad4c9f07cad24bf6b63edc28ad62\nSigned-off-by: Bruce Beare \u003cbrucex.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "e91a5db35b0faecb9387ba09341713568b1ae86c",
      "tree": "c066471d9aa6ba58ea3f3d4b3f5da2e8c3e160d5",
      "parents": [
        "69a4817e3e1e368e758ff8c238deb5ee26963c04"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 23 16:50:30 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 23 16:51:07 2010 -0700"
      },
      "message": "Remember to initialize timestamps in the dispatch allocator\n\nChange-Id: I83a2d353c34ff84a7d130e602c6dedc6a5541944\n"
    },
    {
      "commit": "a95e4cb62f3642cb190d032dbf7dc40d9ecc6973",
      "tree": "ae4437444a3d3ebeff48dabfd1e9c11fc14620ac",
      "parents": [
        "ef730e6ececa96a3e0576140eea707f7c48cd66c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 18 18:09:33 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 22 11:21:50 2010 -0700"
      },
      "message": "First stab at attaching native event dispatching.\n\nProvides the basic infrastructure for a\nNativeActivity\u0027s native code to get an object representing\nits event stream that can be used to read input events.\n\nStill work to do, probably some API changes, and reasonable\ndefault key handling (so that for example back will still\nwork).\n\nChange-Id: I6db891bc35dc9683181d7708eaed552b955a077e\n"
    },
    {
      "commit": "07ccf5ad7edfeeebb79208ad3e8a52917fe038a8",
      "tree": "9c1f269584648a4c4591ec0b885eb3811952538a",
      "parents": [
        "875500b47ac74a164f7792ce89a16d600ea72695"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 21 17:45:29 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 21 18:22:09 2010 -0700"
      },
      "message": "remove unused YUV formats\n\nChange-Id: Id0ae28b1700cf771cdbe0ca27b139d32cab90b2a\n"
    },
    {
      "commit": "ef8f96a717554a85aa63a60f8c61be2afbd12a5c",
      "tree": "0a6550aabca59a3e91a5a3d88bdd5351ce14d043",
      "parents": [
        "d91ac98a8ead216b12af6df61d90229b74c7f0f6",
        "27b3a7a75960d026655f3acd1de8a672e80a5776"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Jun 21 15:31:01 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 21 15:31:01 2010 -0700"
      },
      "message": "Merge \"Start of work on passing around StrictMode policy over Binder calls.\" into gingerbread"
    },
    {
      "commit": "d91ac98a8ead216b12af6df61d90229b74c7f0f6",
      "tree": "6d30e2403c332266e81949da0e7b780a054e5a10",
      "parents": [
        "28333315c6f62b303de2ec0ac9e48158ed419f06"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 21 15:19:26 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 21 15:19:26 2010 -0700"
      },
      "message": "fix [2785833] valgrind error in android::Layer::requestBuffer\n\nfix uninitialized variable\n\nChange-Id: I99e1b619ae8c88dd9d77b3abf4762f801019047e\n"
    },
    {
      "commit": "28333315c6f62b303de2ec0ac9e48158ed419f06",
      "tree": "119e2b116d4d13b1dd2b8e59c53290e0f3cf70a9",
      "parents": [
        "7e73a2ce17740abd028d9944c423e191e5b4854c",
        "f8b4b4408cb864bf604608221eafa9d37323d348"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 21 15:11:18 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 21 15:11:18 2010 -0700"
      },
      "message": "Merge \"Added support for the GL_TEXTURE_EXTERNAL target\" into gingerbread"
    },
    {
      "commit": "7fbdc84e87dd3a0e196b9803bb04495d11e9cb8a",
      "tree": "32691f639ef71365b602795db215f11f457397a5",
      "parents": [
        "e47e3f3855a062ba0338a57eeda2f12a0f7a1fa8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 20:52:56 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 21 13:59:34 2010 -0700"
      },
      "message": "More native input event dispatching.\n\nAdded ANRs handling.\nAdded event injection.\nFixed a NPE ActivityManagerServer writing ANRs to the drop box.\nFixed HOME key interception.\nFixed trackball reporting.\nFixed pointer rotation in landscape mode.\n\nChange-Id: I50340f559f22899ab924e220a78119ffc79469b7\n"
    },
    {
      "commit": "27b3a7a75960d026655f3acd1de8a672e80a5776",
      "tree": "cc5036a00b976b7757f26212abf49ed11f779cd9",
      "parents": [
        "f25c560dcdc0c04e11152fff11f521dae03522cd"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Jun 18 13:07:53 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Mon Jun 21 12:56:35 2010 -0700"
      },
      "message": "Start of work on passing around StrictMode policy over Binder calls.\n\nThis is (intendend to be) a no-op change.\n\nAt this stage, Binder RPCs just have an additional uint32 passed around\nin the header, right before the interface name.  But nothing is actually\ndone with them yet.  That value should right now always be 0.\n\nThis now boots and seems to work.\n\nChange-Id: I135b7c84f07575e6b9717fef2424d301a450df7b\n"
    },
    {
      "commit": "5c225b1680e696ae8bbf505a1997d6f720672f74",
      "tree": "932326fd02ee91d8a64adfcc9415027646c56563",
      "parents": [
        "3a0146cd29fae3c5bc29d8d535d67826284f8cc9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 16 01:53:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 13:27:16 2010 -0700"
      },
      "message": "Even more native input dispatch work in progress.\n\nAdded more tests.\nFixed a regression in Vector.\nFixed bugs in pointer tracking.\nFixed a starvation issue in PollLoop when setting or removing callbacks.\nFixed a couple of policy nits.\n\nModified the internal representation of MotionEvent to be more\nefficient and more consistent.\n\nAdded code to skip/cancel virtual key processing when there are multiple\npointers down.  This helps to better disambiguate virtual key presses\nfrom stray touches (such as cheek presses).\n\nChange-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c\n"
    },
    {
      "commit": "f8b4b4408cb864bf604608221eafa9d37323d348",
      "tree": "ede6098c2dd841e667123e238562ad796519be3b",
      "parents": [
        "2d468c5d73cc1cefbcfa8d98e30622c54756918c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 14 21:20:00 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 15 17:31:17 2010 -0700"
      },
      "message": "Added support for the GL_TEXTURE_EXTERNAL target\n\nThis will allow us to support YUV surfaces.\n\nChange-Id: I2d4da75f1006a5285bdc552695d4caeecccf2183\n"
    },
    {
      "commit": "92266a7894becc1cdf2298fd02380749ab036131",
      "tree": "f759cbe807243a216ec4ecb4ba12793c8550b62a",
      "parents": [
        "a6c52938b144c2bbd8c1e22d24629b12e35c99a3",
        "9c3cda04d969912bc46184f2b326d1db95e0aba5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 15 16:44:23 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 15 16:44:23 2010 -0700"
      },
      "message": "Merge \"More work in progress on native events.\" into gingerbread"
    },
    {
      "commit": "9c3cda04d969912bc46184f2b326d1db95e0aba5",
      "tree": "cdeb4a4bfa83aa335ab840969fe214058a0d566e",
      "parents": [
        "60e8c33d6f6caad2e963e91abca16a85cd3be82a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 15 01:31:58 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 15 16:43:18 2010 -0700"
      },
      "message": "More work in progress on native events.\n\nRefactored the code to eliminate potential deadlocks due to re-entrant\ncalls from the policy into the dispatcher.  Also added some plumbing\nthat will be used to notify the framework about ANRs.\n\nChange-Id: Iba7a10de0cb3c56cd7520d6ce716db52fdcc94ff\n"
    },
    {
      "commit": "f1d3802ea2e0c68f3f6e7524c2450379aae670a8",
      "tree": "09f253a46061d984df1e08f1f69300878698536c",
      "parents": [
        "7e900cbf1d600a8895e63a0247f45c116ff05172"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 14 15:44:41 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Jun 14 15:46:08 2010 -0700"
      },
      "message": "Support for multiple tests\n\nThe build system enforces some invariants that were being ignored\nbefore.\n\nChange-Id: Ie7675042af7f961a507386c13b2a0b592b591af8\n"
    },
    {
      "commit": "d890cbf700695c869e6b45cddf7f132484697588",
      "tree": "c9a77409aa8525c35cd1d00e3e7d819b3fef95fa",
      "parents": [
        "43a9527c54b71cb17515591af37eeeef6c22e3ff"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 20:21:19 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 20:21:19 2010 -0700"
      },
      "message": "Remove PollLoop from host build.\n\nWe can\u0027t build (and we don\u0027t need) PollLoop in the SDK on all platforms.\n\nChange-Id: I3b0f327bbb8bc58b9b8630b0161cf360403fea68\n"
    },
    {
      "commit": "43a9527c54b71cb17515591af37eeeef6c22e3ff",
      "tree": "9a14a3a9ba426fabd07a761a5cf0e0a4714428cb",
      "parents": [
        "46b9ac0ae2162309774a7478cd9d4e578747bfc2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 19:35:19 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 19:35:19 2010 -0700"
      },
      "message": "Fix include paths.\n\nChange-Id: Ifda45688f9f02710a74d5d7a7d902bacf1441e2e\n"
    },
    {
      "commit": "46b9ac0ae2162309774a7478cd9d4e578747bfc2",
      "tree": "46ad021a41e25ca9f1250b709a29b724dc6b504d",
      "parents": [
        "f62c57d684b83df7d2817db976c0afdb500ae92a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 22 18:58:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 17:42:16 2010 -0700"
      },
      "message": "Native input dispatch rewrite work in progress.\n\nThe old dispatch mechanism has been left in place and continues to\nbe used by default for now.  To enable native input dispatch,\nedit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.\n\nIncludes part of the new input event NDK API.  Some details TBD.\n\nTo wire up input dispatch, as the ViewRoot adds a window to the\nwindow session it receives an InputChannel object as an output\nargument.  The InputChannel encapsulates the file descriptors for a\nshared memory region and two pipe end-points.  The ViewRoot then\nprovides the InputChannel to the InputQueue.  Behind the\nscenes, InputQueue simply attaches handlers to the native PollLoop object\nthat underlies the MessageQueue.  This way MessageQueue doesn\u0027t need\nto know anything about input dispatch per-se, it just exposes (in native\ncode) a PollLoop that other components can use to monitor file descriptor\nstate changes.\n\nThere can be zero or more targets for any given input event.  Each\ninput target is specified by its input channel and some parameters\nincluding flags, an X/Y coordinate offset, and the dispatch timeout.\nAn input target can request either synchronous dispatch (for foreground apps)\nor asynchronous dispatch (fire-and-forget for wallpapers and \"outside\"\ntargets).  Currently, finding the appropriate input targets for an event\nrequires a call back into the WindowManagerServer from native code.\nIn the future this will be refactored to avoid most of these callbacks\nexcept as required to handle pending focus transitions.\n\nEnd-to-end event dispatch mostly works!\n\nTo do: event injection, rate limiting, ANRs, testing, optimization, etc.\n\nChange-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25\n"
    },
    {
      "commit": "b8bb78f54b48868465a9d69d65fda08524ab5ae1",
      "tree": "fadbdd8dd989ce2b3b29cd780fabc91d7f98dd09",
      "parents": [
        "2fd73a452268d2acb6e72a1d23a422085ed3c510"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jun 10 13:32:16 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jun 11 16:47:33 2010 +0800"
      },
      "message": "Change camera interface to support multiple cameras.\n\nChange-Id: Ie88fe706d2278acf762eca87780de349434778a4\n"
    },
    {
      "commit": "62a2aa01528e70c63aef60a6f48929da5a06761a",
      "tree": "605561d8fddc392de300c72b5acd95a410f535ae",
      "parents": [
        "66b89a62aa6d5599ad4d11d891b5028587d4c6be"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:14:26 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Thu Jun 10 11:25:51 2010 -0700"
      },
      "message": "Fix String8 to free its memory only after assignment operations based on pointers are finished in case that pointer referred to the string\u0027s original contents.\n\nChange-Id: I6961f3cf10ba3b728579ea63262db750a4cf8577\n"
    },
    {
      "commit": "5e14010b1fc066dfcbc0a577d59492687c99667d",
      "tree": "221d256bf258e97b3e7e7c953a679a9104792374",
      "parents": [
        "1debc66521f699bbf0a8eb80cababaef8bc63607"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 19:54:15 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 20:10:02 2010 -0700"
      },
      "message": "allow re-targetting of surfaces\n\nSurfaces can now be parcelized and sent to remote\nprocesses. When a surface crosses a process\nboundary, it looses its connection with the\ncurrent process and gets attached to the new one.\n\nChange-Id: I39c7b055bcd3ea1162ef2718d3d4b866bf7c81c0\n"
    },
    {
      "commit": "1debc66521f699bbf0a8eb80cababaef8bc63607",
      "tree": "718d23f3d018d6d30c2428cd121464cab6ff85bc",
      "parents": [
        "c44c4742e7d79f6fe846f807bb26ad8b3cd16f68"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 15:40:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 15:40:56 2010 -0700"
      },
      "message": "fix [2751143] Device crashes when in a text box for too long"
    },
    {
      "commit": "fae5cb2b356a1fef172b43066180a7ab4c32dbac",
      "tree": "55e73b81c3a666ab1165603238e7ca43495ff99c",
      "parents": [
        "7623da435e45c7c03ef6a00a43675deb6645f070"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:26:32 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:57:41 2010 -0700"
      },
      "message": "optimize Surface.readFromParcel()\n\nthis is called for each relayout() and used to create a full Surface (cpp)\nwhich in turn did some heavy work (including an IPC with surfaceflinger),\nmost of the time to destroy it immediatelly when the returned surface\n(the one in the parcel) was the same.\n\nwe now more intelligentely read from the parcel and construct the new\nobject only if needed.\n\nChange-Id: Idfd40d9ac96ffc6d4ae5fd99bcc0773e131e2267\n"
    },
    {
      "commit": "7623da435e45c7c03ef6a00a43675deb6645f070",
      "tree": "b789cdc5e60ccc4474bd319b1dbb4e1a7e3f3858",
      "parents": [
        "593c05ce7bcf7b6d94bd8c50da2b818cf05116b1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 01 15:12:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:57:41 2010 -0700"
      },
      "message": "split surface management from surface\u0027s buffers management\n\nChange-Id: If3c5655d1231f8f0c49ba68f972b1b20c93b3f87\n"
    },
    {
      "commit": "593c05ce7bcf7b6d94bd8c50da2b818cf05116b1",
      "tree": "7dd70eab8cf6b3dc140e5eedbe01164349d987de",
      "parents": [
        "66236db38dbaae229a86005309b9f7c74eabc998"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 02 23:28:45 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:57:40 2010 -0700"
      },
      "message": "clean-up client management.\n\nsimplified things a lot, the biggest change is that the concept\nof \"ClientID\" is now gone, instead we simply use references.\n\nChange-Id: Icbc57f80865884aa5f35ad0d0a0db26f19f9f7ce\n"
    },
    {
      "commit": "cefb01abbfdb175e0c4b298126bcb4a98bf6371f",
      "tree": "fdf01eb997e5a8053bd8527ba7ad6994b8e8776a",
      "parents": [
        "2ea200c5a7c13e6a7e8bfdb04e96066a38b19240",
        "8aba232dbce3d7a1e3efd5fa41c37810de79d0ea"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 03:38:25 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 04 03:38:25 2010 -0700"
      },
      "message": "Merge \"Add KEY_SUPPORTED_METERING_MODES and fix some typos.\" into kraken"
    },
    {
      "commit": "8aba232dbce3d7a1e3efd5fa41c37810de79d0ea",
      "tree": "895d4ec947f9974da6bd1152ea393893863e9239",
      "parents": [
        "5f5df382e5b87f02399f21c916e0ebb6c48c759d"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 14:18:32 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Jun 04 17:18:17 2010 +0800"
      },
      "message": "Add KEY_SUPPORTED_METERING_MODES and fix some typos.\n\nbug:2737111\nChange-Id: I108ae7057786921bf99385ad66dbc1f02d6a1448\n"
    },
    {
      "commit": "2ea200c5a7c13e6a7e8bfdb04e96066a38b19240",
      "tree": "4cce0e6e3096c7cf4c22fe668687b49e6bfc3c50",
      "parents": [
        "5f5df382e5b87f02399f21c916e0ebb6c48c759d",
        "65b65459e6ac59f8a257009df8014467ae0838ee"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jun 04 00:14:46 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 04 00:14:46 2010 -0700"
      },
      "message": "Merge \"Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\" into kraken"
    },
    {
      "commit": "5f5df382e5b87f02399f21c916e0ebb6c48c759d",
      "tree": "17291c68df4f7836674bf9a0f53753261795a83f",
      "parents": [
        "266b74e8759e76fedec60ec1ffa88cfbd86cc91d",
        "f7f6333831e7b991d92abeddfbd46c2884afa405"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 03 22:32:05 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 03 22:32:05 2010 -0700"
      },
      "message": "Merge \"Add camera metering mode API.\" into kraken"
    },
    {
      "commit": "65b65459e6ac59f8a257009df8014467ae0838ee",
      "tree": "5f9ba01afd1e0ffe85f4b700c1a16f9b998c807d",
      "parents": [
        "501b2b400a15a43849ff84c5da4e68d23ed726cf"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jun 01 23:49:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jun 03 03:21:53 2010 -0700"
      },
      "message": "Issue 2667801: [Audio Effect Framework] AudioFlinger, AudioMixer AudioTrack modifications.\n\nFirst drop of audio framework modifications for audio effects support.\n\n- AudioTrack/AudioRecord:\nAdded support for auxiliary effects in AudioTrack\nAdded support for audio sessions\nFixed left right channel inversion in setVolume()\n\n- IAudioFlinger:\nAdded interface methods for effect enumeraiton and instantiation\nAdded support for audio sessions.\n\n- IAudioTrack:\nAdded method to attach auxiliary effect.\n\n- AudioFlinger\nCreated new classes to control effect engines in effect library and manage effect connections to tracks or\noutput mix:\n  EffectModule: wrapper object controlling the effect engine implementation in the effect library. There\n\tis one EffectModule per instance of an effect in a given audio session\n  EffectChain: group of effects associated to one audio session. There is one EffectChain per audio session.\n\tEffectChain for session 0 is for output mix effects, other chains are attached to audio tracks\n\twith same session ID. Each chain contains a variable number of EffectModules\n  EffectHandle: implements the IEffect interface. There is one EffectHandle object for each application\n\tcontrolling (or using) an effect module. THe EffectModule maintians a list of EffectHandles.\n\nAdded support for effect modules and effect chains creation in PlaybackThread.\nmodified mixer thread loop to allow track volume control by effect modules and call effect processing.\n\n-AudioMixer\nEach track now specifies its output buffer used by mixer for accumulation\nModified mixer process functions to process tracks by groups of tracks with same buffer\nModified track process functions to support accumulation to auxiliary channel\n\nChange-Id: I26d5f7c9e070a89bdd383e1a659f8b7ca150379c\n"
    },
    {
      "commit": "f7f6333831e7b991d92abeddfbd46c2884afa405",
      "tree": "bbe6fb84932164301709ddde62af18ad95ad405e",
      "parents": [
        "00e21f8eb57a7ae2c19516aa0290ab4fb5f251c2"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 03 16:34:18 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Jun 03 16:34:18 2010 +0800"
      },
      "message": "Add camera metering mode API.\n\nbug:2737111\nChange-Id: Ie986fee56ebeaaed2d2efb757701dfe3ffdec8d8\n"
    },
    {
      "commit": "a0612e41dd5e6e9ec0a89e8e7437a3dafec0ee10",
      "tree": "f3ec2ef02455cab9e515b5fe0d8dbec32e7efa87",
      "parents": [
        "1e1e292edcb75fdef93fe63b12355bfef642e5bc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 12 15:34:55 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 01 15:57:44 2010 -0700"
      },
      "message": "fix a bug where fading in/out of opaque 32-bits windows wasn\u0027t working\n\nopaque 32-bits windows are now allocated as RGBX_8888 buffers and\nSurfaceFlinger always uses GL_MODULATE instead of trying to\noptimize to GL_REPLACE when possible (makes no sense on\nh/w accelerated GL).\n\nwe still have a small hack for devices that don\u0027t support\nRGBX_8888 in their gralloc implementation where we revert to\nRGBA_8888.\n"
    },
    {
      "commit": "770492cb2b19f6a36ad748cd05fbedfbb9a67dfa",
      "tree": "3c87a789492e52b3c26b1de9608f42690b86c2cd",
      "parents": [
        "cdfd5fe2c89a30a31f9de5a5481e8997f014a89b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 14:22:23 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 17:19:16 2010 -0700"
      },
      "message": "more clean-up in preparation of bigger changes\n\nthe most important change here is the renaming of\nISurfaceFlingerClient to ISurfaceComposerClient\n\nChange-Id: I94e18b0417f50e06f21377446639c61f65f959b3\n"
    },
    {
      "commit": "198975bb010531e6e21f35582fb7040960364473",
      "tree": "ce4cb91c18415d9d5fec44f88828c138c2d3160e",
      "parents": [
        "64ff6ab4df0fa7660584b2a2bfe9a003ca481ac5",
        "d2c2929c94bec68741b85f4174e11307fb65157f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 04:34:13 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 28 04:34:13 2010 -0700"
      },
      "message": "Merge \"Add video frame parameter.\" into kraken"
    },
    {
      "commit": "d2c2929c94bec68741b85f4174e11307fb65157f",
      "tree": "510d29a3a37649ae4ff7111450404b6c041ee5f1",
      "parents": [
        "df0364de6f7be68e003729c262fe2731b82ae10e"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 17:32:41 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri May 28 17:32:41 2010 +0800"
      },
      "message": "Add video frame parameter.\n\nThe image format of preview frames and video frames may be different.\nWe need another parameter for video frame format.\n\nbug:2720893\nChange-Id: I966a31b0ce8cab25cdde65db65a18c8cbe9c7bd6\n"
    },
    {
      "commit": "c7b388c2b3a9558c85e3730a7c6b261392ce493e",
      "tree": "38725561e04c5e754c0c3b2a240a507ea98f6cf4",
      "parents": [
        "df0364de6f7be68e003729c262fe2731b82ae10e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 27 19:41:15 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 27 19:55:43 2010 -0700"
      },
      "message": "more clean-up of Surfaceflinger\u0027s client management\n\nSurfaceComposerClient now only exist on the WindowManager side,\nthe client side uses the new SurfaceClient class, which only\nexposes what a client needs.\n\nalso instead of keeping mappings from IBinder to SurfaceComposerClients\nwe have a SurfaceClient per Surface (referring to the same IBinder), this\nis made possible by the fact that SurfaceClient is very light.\n\nChange-Id: I6a1f7015424f07871632a25ed6a502c55abfcfa6\n"
    },
    {
      "commit": "0d3c0063aa998bc32e7f22114e38a0f8df61ad65",
      "tree": "81c52a94a3a163d92468078e58d06fbcb134faca",
      "parents": [
        "7d1508b854dff2b9b3469b5eef7e2123eada1cd7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 26 22:26:12 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 26 22:26:12 2010 -0700"
      },
      "message": "minor clean-up GLclampx -\u003e GLclampf"
    },
    {
      "commit": "7d1508b854dff2b9b3469b5eef7e2123eada1cd7",
      "tree": "7929ad907515ffa138023614a2163d219e1f4dcc",
      "parents": [
        "923770333574fd71674781a9a62f40e8acaf5ef1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 26 22:19:19 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 26 22:19:19 2010 -0700"
      },
      "message": "clean-up dead-code"
    },
    {
      "commit": "923770333574fd71674781a9a62f40e8acaf5ef1",
      "tree": "f7ac29b5c4b207305d9c3972d763009a20f8cb3f",
      "parents": [
        "663baddda9de01d0a7eccffaeb7ce39899e95146"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 26 22:08:52 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 26 22:10:04 2010 -0700"
      },
      "message": "Make sure to use filtering while in fixed-size mode"
    },
    {
      "commit": "663baddda9de01d0a7eccffaeb7ce39899e95146",
      "tree": "31f08ccadbdb385ab1920e0ced067f21d49f5d78",
      "parents": [
        "64f7549b0e0e2b77e698ae88389465342d3f28d7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 26 21:31:09 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 26 21:31:09 2010 -0700"
      },
      "message": "oopsie. forgot to displatch SET_BUFFERS_GEOMETRY\n"
    }
  ],
  "next": "2ce19af45bf4c5e311a73df474ffe88d96d118c5"
}
