)]}'
{
  "log": [
    {
      "commit": "2d817f75969cf3942ae3bcb9d194b9c095288dc7",
      "tree": "4e575bd35a1ba634708e84341d9a8b19b7f84c17",
      "parents": [
        "7d146197873e9bd5c1618a4ae10bcd13c821e1ce"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 16:30:40 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 16:53:56 2010 -0700"
      },
      "message": "Free scanBuf in ZipFileRO\n\nIn the success case, the 65kB scanBuf was not freed!\n\nAlso, get rid of annoying complaints about ssize_t from printf in error\ncases.\n\nChange-Id: If154ac19bf47637f898b4ec8c8e27c9a073a7b81\n"
    },
    {
      "commit": "00e5c61366d3d3d62c259277823ea15a14f68ad4",
      "tree": "a4550b43fbec48553d0e04e4b1eedc9bef7ccdac",
      "parents": [
        "d973a533da16a1fbf13aa1b58ddf60d7d7c9b4ec",
        "6328cdc89e099806a1893b89e4c724d596272d9e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 30 14:48:25 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 30 14:48:25 2010 -0700"
      },
      "message": "Merge \"Improve thread safety of input mappers.\" into gingerbread"
    },
    {
      "commit": "6328cdc89e099806a1893b89e4c724d596272d9e",
      "tree": "691dfe8a5296cdc6c6773351b21114e7a34aec86",
      "parents": [
        "04d7e83e65e246e154b5b346e3eb0081b741ae88"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 29 18:18:33 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 30 14:43:58 2010 -0700"
      },
      "message": "Improve thread safety of input mappers.\n\nAlso fixed bug where old touch screen size could be reported by\ngetMotionRange if an orientation change occurred but the user has not\nyet touched the screen.\n\nBug: 2877345\nChange-Id: I7878f47458f310ed6ebe6a5d1b2c9bec2c598ab9\n"
    },
    {
      "commit": "154a320069a316491c25b716f2aeea8c51a758e8",
      "tree": "a134148c3f13d24f3aca4ebc574899669d3efa63",
      "parents": [
        "4609b0a8fcfbed9b893301232dfa3b70bb30e4e2",
        "27eecb704a27c1c73ed3449eba0307d8138b9c2e"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jul 30 12:08:31 2010 -0700"
      },
      "message": "resolved conflicts for merge of 27eecb70 to gingerbread\n\nChange-Id: If064f2f4950fc1a4ff38e6927fe2120af76b26f1\n"
    },
    {
      "commit": "050b56244ff46d43e4886018d7cd20f0b1dc02b9",
      "tree": "1c0cfcd08dbd18b386bebe5dd2cbeb1c945ccbda",
      "parents": [
        "3fb627525e077fa5452a99ac1e2a7e9c41995044"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 16:51:38 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 18:18:00 2010 -0700"
      },
      "message": "Added SensorManager.getMinDelay()\n\nExposed the new \"min delay\" sensor property through native and\njava sensor apis. This allows the caller to know what is the\nmaximum rate at which a sensor can return events, or, if a sensor\nworks in \"update\" mode (events returned only when the value changes).\n\nAlso augmented SensorManager.regusterSensorEvent() so that it can\naccept a value in microsecond in addition to the 4 constants already\ndefined.\n\nChange-Id: If425e9979892666df8c989d7de3c362230fa19e0\n"
    },
    {
      "commit": "83407b993f79e06470100f605748aba41cbeb966",
      "tree": "3d07a0bafba647b56cfb83013c0a65786cc62e64",
      "parents": [
        "3855980b4355017fa9a4988d7b150f3222075198"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 17:41:35 2010 -0700"
      },
      "message": "fix inaccurate copyrights\n\nChange-Id: I33b0f68f2da34ca4728211d83159cf32a127f6dd\n"
    },
    {
      "commit": "571180c4c72e0bb4f930f8971edf000a652f10f6",
      "tree": "db7e1ec2ce58c64c250d035a15db3d5288d4c49e",
      "parents": [
        "aab985b951c4cf5ec2753ffbec516164b3c03c3a",
        "466b22b76e438b3419cedbe782ab71b8ade18260"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 29 13:53:37 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 29 13:53:37 2010 -0700"
      },
      "message": "Merge \"Attempt to fix the SDK build\" into gingerbread"
    },
    {
      "commit": "466b22b76e438b3419cedbe782ab71b8ade18260",
      "tree": "c407a0750d7a221815fbf07087ec3173a0250587",
      "parents": [
        "6dea6f4e71b53e421564d783c227cbe0a2469183"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 29 13:16:38 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 29 13:42:45 2010 -0700"
      },
      "message": "Attempt to fix the SDK build\n\nOn the assumption that the local min() function declaration is in\nconflict with some \u0027min\u0027 #define floating around, rename the local\nfunction to min_of().\n\nChange-Id: I62aa27f213c6093cc78805de611cf4aa75f0eef2\n"
    },
    {
      "commit": "aab985b951c4cf5ec2753ffbec516164b3c03c3a",
      "tree": "2072dd6ce828bcfae5fd9f88c852367099912f5f",
      "parents": [
        "6ec402b5ae33c8927694d8522b4cc6a5c8ba974e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 29 13:05:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 29 13:05:52 2010 -0700"
      },
      "message": "Fix touch input in landscape mode.\n\nChange-Id: I7d47e9b02e6443ed604a6bf842028a5db934d90d\n"
    },
    {
      "commit": "6ec402b5ae33c8927694d8522b4cc6a5c8ba974e",
      "tree": "5d4b19eda9ade71d7e34635479426f1dd484e8c2",
      "parents": [
        "6dea6f4e71b53e421564d783c227cbe0a2469183"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 28 15:48:59 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 29 12:54:27 2010 -0700"
      },
      "message": "DO NOT MERGE: Fix input event injection ANRs on UI thread.\n\nAdded a new asynchronous injection mode and made the existing\nsynchronization mechanism more robust.\n\nChange-Id: Ia4aa04fd9b75ea2461a844c5b7933c831c1027e6\n"
    },
    {
      "commit": "7b40518e56a3238b28b24a786a2ff22d5a425765",
      "tree": "c16e2ed15ce137d5fd9852b4d174b19877eb061a",
      "parents": [
        "a0ae8bc5c62b12269f20cbebdb0d8614e4e8eb1a",
        "a4879bad704981da014206380eca93163f4c5a2b"
      ],
      "author": {
        "name": "Chris Tate",
        "email": "ctate@android.com",
        "time": "Wed Jul 28 18:14:51 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 18:14:51 2010 -0700"
      },
      "message": "Merge \"Change unistd.h to stddef.h to be correct\" into gingerbread"
    },
    {
      "commit": "a4879bad704981da014206380eca93163f4c5a2b",
      "tree": "43ba2e498263f9901d449f473aa53f3f5ee954e3",
      "parents": [
        "e30de4e6a312aa921633d119f2518f4b07a7effa"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:46:12 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:46:12 2010 -0700"
      },
      "message": "Change unistd.h to stddef.h to be correct\n\nsize_t should be defined through inclusion of stddef.h instead of unistd.h\n\nChange-Id: Ieaadacfca1e1c44c2533ea95f73fc060c1519b52\n"
    },
    {
      "commit": "8c5d9430d2f029be0c1100f7b3c38a2fb9fe99b6",
      "tree": "c949a293706e2d5a7678752e4a8bc913a70313af",
      "parents": [
        "9f2a91bc2b01c2cc60f73a0bae673225fdddec09",
        "9d90ed71ccf45bc1e422ee2abc9acf0a806b9319"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:37:20 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 16:37:20 2010 -0700"
      },
      "message": "Merge \"Add unistd.h for size_t typedef to fix sim-eng\" into gingerbread"
    },
    {
      "commit": "9d90ed71ccf45bc1e422ee2abc9acf0a806b9319",
      "tree": "388949d378d71236471652b5f26d6f6f73580e6c",
      "parents": [
        "bae6fe242ff9a97840ff0c5d9d87c0575d261682"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:31:24 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:31:24 2010 -0700"
      },
      "message": "Add unistd.h for size_t typedef to fix sim-eng\n\nChange-Id: Ida4f1742547f39539b601f13182c722aa7cf863e\n"
    },
    {
      "commit": "9f2a91bc2b01c2cc60f73a0bae673225fdddec09",
      "tree": "4896baaf07143ebe2be37685c49714b223e3f100",
      "parents": [
        "bae6fe242ff9a97840ff0c5d9d87c0575d261682",
        "51c70e3e41ee8bedc1d951a06a74202dafa13009"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 28 16:30:56 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 16:30:56 2010 -0700"
      },
      "message": "Merge \"fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot dequeue all allocated buffers at once.\" into gingerbread"
    },
    {
      "commit": "bae6fe242ff9a97840ff0c5d9d87c0575d261682",
      "tree": "428e2e84aef9faeaf4a89d9663a42438649fcc36",
      "parents": [
        "bc1daf016020ce022ceb971f09e862da5ee82b1d",
        "b100cbf178e91d6652ebbad3ed36684cacb9d10e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 28 15:36:48 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 15:36:48 2010 -0700"
      },
      "message": "Merge \"Support streaming of compressed assets \u003e 1 megabyte\" into gingerbread"
    },
    {
      "commit": "b100cbf178e91d6652ebbad3ed36684cacb9d10e",
      "tree": "acb386c8adee2d0390193fc631f841f8d76ea5d7",
      "parents": [
        "0c39b6c65bcb96ed6438c7d792a67708409d8f0f"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 26 11:24:18 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jul 28 15:33:28 2010 -0700"
      },
      "message": "Support streaming of compressed assets \u003e 1 megabyte\n\nCompressed assets larger than one megabyte are now decompressed on demand\nrather than being decompressed in their entirety and held in memory.  Reading\nthe data in order is relatively efficient, as is seeking forward in the stream.\nSeeking backwards is supported, but requires reprocessing the compressed data\nfrom the beginning, so is very inefficient.\n\nIn addition, the size limit on compressed assets has been eliminated.\n\nChange-Id: I6e68247957e6c53e7e8ba70d12764695f1723bad\n"
    },
    {
      "commit": "6d0fec2de3601821f4f44eeb7d7deedebb2b7117",
      "tree": "9fdea32c5691a6d0bcb3085df47f42a8e6ecd565",
      "parents": [
        "b350bec514eb9fee473e4ef62680c53e992dc49b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 23 21:28:06 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 28 14:16:15 2010 -0700"
      },
      "message": "Refactor input reader to support new device types more easily.\n\nRefactored the input reader so that each raw input protocol is handled\nby a separate subclass of the new InputMapper type.  This way, behaviors\npertaining to keyboard, trackballs, touchscreens, switches and other\ndevices are clearly distinguished for improved maintainability.\n\nAdded partial support for describing capabilities of input devices\n(incomplete and untested for now, will be fleshed out in later commits).\n\nSimplified EventHub interface somewhat since InputReader is taking over\nmore of the work.\n\nCleaned up some of the interactions between InputManager and\nWindowManagerService related to reading input state.\n\nFixed swiping finger from screen edge into display area.\n\nAdded logging of device information to \u0027dumpsys window\u0027.\n\nChange-Id: I17faffc33e3aec3a0f33f0b37e81a70609378612\n"
    },
    {
      "commit": "51c70e3e41ee8bedc1d951a06a74202dafa13009",
      "tree": "d917c80c3421a1312cfefc3e2ca7db25fce62a37",
      "parents": [
        "eab07e5c1d48d45f76ac2dd4a45c8a3457aa290d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 27 20:11:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 27 20:11:35 2010 -0700"
      },
      "message": "fix [2873058] Surface::dequeueBuffer blocks on last buffer, i.e. cannot dequeue all allocated buffers at once.\n\nthis situation happened when the last buffer needed to be resized\n(or allocated, the first time). the assumption was that the buffer\nwas in use by SF itself as the current buffer (obviously, this\nassumption made no sense when the buffer had never been allocated, btw).\n\nthe system would wait until some other buffer became the \"front\" buffer.\n\nwe fix this problem by entirely removing the requirement that the\nbuffer being resized cannot be the front buffer. instead, we just\nallocate a new buffer and replace the front buffer by the new one.\n\nthe downside is that this uses more memory (an extra buffer) for a\nbrief amount of time while the old buffer is being reallocated and\nbefore it has actually been replaced.\n\nChange-Id: I022e4621209474ceb1c671b23deb4188eaaa7285\n"
    },
    {
      "commit": "7bcad8a315f12bd6251a998781efac7b11c2ca84",
      "tree": "44f9ded1cd1a31254607ddddc2c08cad3d4b6546",
      "parents": [
        "eb75888e6479317151c2ed44d47bd28ef567a4c7"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 27 09:49:11 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 27 12:28:57 2010 -0700"
      },
      "message": "Replace several IPCThreadState::get() lookups with one.\n\nAlso, make StrictMode\u0027s ThreadLocal final.\n\nChange-Id: I08d400ed254fa67bb7a3dae1227f205a54c00df0\n"
    },
    {
      "commit": "b54a3c95801da5464bbfcbb551545b543ca4d46c",
      "tree": "4ad702a20a858ec5951c6e7c277a0cc73a684fe5",
      "parents": [
        "efba8bf53aa6d0efb8cf778aaa63a482b813d2b1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 18:57:41 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 18:57:41 2010 -0700"
      },
      "message": "Fix a memory corruption when writting Sensor into a parcel\n\nChange-Id: I03f703ae2224f43924031bfea4c68aa979bb9f05\n"
    },
    {
      "commit": "23e8de26b7b3d04daf08526f314c2fdd2f8fee65",
      "tree": "239037f931ad847efc861c12c94b68c855a894d6",
      "parents": [
        "5df13ef30e7dd58e4e718e6d949ac3d1f5af94e0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 15:59:50 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 16:09:39 2010 -0700"
      },
      "message": "propagate sensor event rate properly\n\nChange-Id: I32e67d30e4295285a6827956cc8161b2025d70bc\n"
    },
    {
      "commit": "1bf797857e025e8a71db86fb9e79765a767ec1eb",
      "tree": "e8d1aabae069f2b7368be746b99667eb150363f5",
      "parents": [
        "ff7049ab2886acc73e145367118646f7741ce333"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 23:41:37 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 17:57:29 2010 -0700"
      },
      "message": "new SensorService\n\nremove old sensor service and implement SensorManager\non top of the new (native) SensorManger API.\n\nChange-Id: Iddb77d498755da3e11646473a44d651f12f40281\n"
    },
    {
      "commit": "ff7049ab2886acc73e145367118646f7741ce333",
      "tree": "a57f82a48605aca4b9a40b95028efa976742d4b3",
      "parents": [
        "a5fe776a7933b2241858ef83f01b812c7badc231"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jul 19 16:09:26 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jul 19 16:09:26 2010 -0700"
      },
      "message": "Remove some debug logging that I accidentally committed.\n\nChange-Id: Ib182455fad5e5b3f3f59b3ff24f59dcd7f638292\n"
    },
    {
      "commit": "d3616592fe1b315b589766c4b74ce728fc4968f5",
      "tree": "ef2bc2b0bed3aa307d444d8cab413bec5722ea7c",
      "parents": [
        "ace999b096739d376d4845c0ba94599197ff8477"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 17:21:06 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 17:46:03 2010 -0700"
      },
      "message": "Fix trackball down and movement bugs.\n\nBug: 2823788\nChange-Id: Icb0c392b58f7e735614460b5eb87439cb73ac4f2\n"
    },
    {
      "commit": "c8c79a654d4ae8e3a883854e19cc2df757f72d82",
      "tree": "c5efa0a0080a5b9860ac2cec6581593cad4ae2fe",
      "parents": [
        "00ba884436dc8b222ad850c73c936d87bf4e84de",
        "5ee65f0d441ca558bc95b60c1468f2aadfeeddbd"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 16 15:14:44 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 16 15:14:44 2010 -0700"
      },
      "message": "Merge \"Re-use existing Surface objects when reading them from parcels.\" into gingerbread"
    },
    {
      "commit": "00ba884436dc8b222ad850c73c936d87bf4e84de",
      "tree": "ca4d18c6f004cf59a54508fa4e99f01f81e8753e",
      "parents": [
        "e068b46408f3ff390b47dc78ccf10fab76883051"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 15:01:56 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 15:11:24 2010 -0700"
      },
      "message": "Fix individual pointer id up/down reporting.\n\nFix a minor threading bug in InputManager dump.\n\nChange-Id: Ic2eecf7df5a8dc9f40561fcb03ebe58a2c073778\n"
    },
    {
      "commit": "5ee65f0d441ca558bc95b60c1468f2aadfeeddbd",
      "tree": "fe143a0721ac44a3d2c34a46ad5240ea2d586f76",
      "parents": [
        "eec69d2923636b2aaa51df93bacc2b3bbb742736"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jul 15 17:29:15 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 16 13:03:15 2010 -0700"
      },
      "message": "Re-use existing Surface objects when reading them from parcels.\n\nThis change adds a process-global cache of previously deserialized Surface\nobjects so that if a Surface object wrapping the same ISurface gets received\nagain the same Surface can be used.  This is important because the \u0027tail\u0027\npointer in the SharedBufferClient is stored only on the client side, and needs\nto be the same for all the Surface objects wrapping an ISurface instance.  This\nsolves the problem by making there only be one Surface object wrapping an\nISurface per process.\n\nChange-Id: I4bf0b8787885c56277622fca053022d2bb638902\n"
    },
    {
      "commit": "e33348ba54cd68d6936cffd4507037c14d4b10c2",
      "tree": "1429dd836a48b3f49ee2a27623ff47b5c272c827",
      "parents": [
        "bd623daff1f261a0e794f059d90ba5907eb5a89a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 23:54:05 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 00:02:48 2010 -0700"
      },
      "message": "Fix bug with phantom input windows.\n\nAdd dumpsys integration for the native input dispatcher.\nAdd some InputDevice API stubs.\nAdd an appendFormat helper method to String8 for printf style\nstring formatting mainly for debugging purposes.\nUse generic ArrayList\u003cWindowState\u003e everywhere in WindowManagerService\nto eliminate unnecessary casts all over.\n\nChange-Id: I9d1e3bd90eb7222d10620200477f11b7bfd25e44\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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ],
  "next": "770492cb2b19f6a36ad748cd05fbedfbb9a67dfa"
}
