)]}'
{
  "log": [
    {
      "commit": "ae9fc03bdccda709101291bbcd3beaa5b6daebfc",
      "tree": "69367f760a943f9eda3edabcb1130302ea6cb0d8",
      "parents": [
        "6b2c56a299eb05deef2b887549e29e9e9f0f2cf6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 18 15:51:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 18 16:58:27 2010 -0700"
      },
      "message": "Add support for throttling motion events.\n\nChange-Id: I24b3a17753e91ecda60a60fe5cd2e6b3260e033d\n"
    },
    {
      "commit": "cfa275908a220c5e1cf496f7fdde1c04e24e95da",
      "tree": "d2e9038d4ca2c988e7aebf193760c360785fa869",
      "parents": [
        "6ab94608750776bcaaee56696cfcfb16ce29db8a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 17 20:19:23 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 17 20:22:04 2010 -0700"
      },
      "message": "revert hwcomposer HAL changes. DO NOT MERGE.\n\nThis reverts commit:\n94364b91a2894bf037b8beb027132fbb812e1434\nf8e705dea48f77f1c2532fdbadd4997dd1851af0\nb59beb5ca68d0228f60dda60d85e2d0226b33215\ne0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20\n"
    },
    {
      "commit": "72ce42352c1c229e05d910b4176f3cddb608e814",
      "tree": "95407408da3e93ca27be17c5e7667ab089c14e2a",
      "parents": [
        "a1af0d7c80a0119630926810644e6cdee481ba80",
        "2cbecea4c9627d95377fc3e3b8a319116cee7feb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 17 17:05:38 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 17 17:05:38 2010 -0700"
      },
      "message": "Merge \"Fix possible race conditions during channel unregistration.\" into gingerbread"
    },
    {
      "commit": "2cbecea4c9627d95377fc3e3b8a319116cee7feb",
      "tree": "da379443f3e609953e9e1aa1f8d8325ad42d2a68",
      "parents": [
        "90291577a08f582e0978651f55dd950f40eb111d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 17 15:59:26 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 17 17:03:42 2010 -0700"
      },
      "message": "Fix possible race conditions during channel unregistration.\n\nPreviously, the input dispatcher assumed that the input channel\u0027s\nreceive pipe file descriptor was a sufficiently unique identifier for\nlooking up input channels in its various tables.  However, it can happen\nthat an input channel is disposed and then a new input channel is\nimmediately created that reuses the same file descriptor.  Ordinarily\nthis is not a problem, however there is a small opportunity for a race\nto arise in InputQueue.\n\nWhen InputQueue receives an input event from the dispatcher, it\ngenerates a finishedToken that encodes the channel\u0027s receive pipe fd,\nand a sequence number.  The finishedToken is used by the ViewRoot\nas a handle for the event so that it can tell the InputQueue when\nthe event has finished being processed.\n\nHere is the race:\n\n1. InputQueue receives an input event, assigns a new finishedToken.\n2. ViewRoot begins processing the input event.\n3. During processing, ViewRoot unregisters the InputChannel.\n4. A new InputChannel is created and is registered with the Input Queue.\n   This InputChannel happens to have the same receive pipe fd as\n   the one previously registered.\n5. ViewRoot tells the InputQueue that it has finished processing the\n   input event, passing along the original finishedToken.\n6. InputQueue throws an exception because the finishedToken\u0027s receive\n   pipe fd is registered but the sequence number is incorrect so it\n   assumes that the client has called finish spuriously.\n\nThe fix is to include a unique connection id within the finishedToken so\nthat the InputQueue can accurately confirm that the token belongs to\nthe currently registered InputChannel rather than to an old one that\nhappened to have the same receive pipe fd.  When it notices this, it\nignores the spurious finish.\n\nI\u0027ve also made a couple of other small changes to avoid similar races\nelsewhere.\n\nThis patch set also includes a fix to synthesize a finished signal\nwhen the input channel is unregistered on the client side to\nhelp keep the server and client in sync.\n\nBug: 2834068\nChange-Id: I1de34a36249ab74c359c2c67a57e333543400f7b\n"
    },
    {
      "commit": "8c11e952305327183db9f7be719e4c94fde15a7c",
      "tree": "79f9c9fcd7c3e59f96de249dad6e47149a6de0ed",
      "parents": [
        "e6bfceeb10a01c8e89f712c0ffddc9e5e3ad1842"
      ],
      "author": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Thu Aug 12 20:26:23 2010 -0700"
      },
      "committer": {
        "name": "Irfan Sheriff",
        "email": "isheriff@google.com",
        "time": "Tue Aug 17 15:27:54 2010 -0700"
      },
      "message": "DO NOT MERGE WifiLock extensions for high performance mode\n\nAdd extension to WifiLock to allow apps to operate\nin high performance mode (high power \u0026 disable suspend\noptimizations for battery consumption).\n\nBug: 2834260\nChange-Id: I8b33d307f3d569bc92ba2139b9ed224ffc147547\n"
    },
    {
      "commit": "b6ef8bad8a48fdc28770cf34d0c9efefc7fdd815",
      "tree": "38db8ab7ed4e5a211556158ca7250f67fd400306",
      "parents": [
        "f1f48bc7f200f54c76b22d845d8ba8419879b375",
        "1a1cd3a878b6389c097e34d114b60cf953edaeaa"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 17 04:46:29 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 17 04:46:29 2010 -0700"
      },
      "message": "Merge \"GPS: Initialize XTRA support when GPS is enabled\" into gingerbread"
    },
    {
      "commit": "1a1cd3a878b6389c097e34d114b60cf953edaeaa",
      "tree": "898ab6b9b494d958a5e3570cd19afd17449b49ef",
      "parents": [
        "833533c9292f860e4dfc060a4eba6429cd259ed4"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 17 07:42:54 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Tue Aug 17 07:45:47 2010 -0400"
      },
      "message": "GPS: Initialize XTRA support when GPS is enabled\n\nBUG: 2923148\n\nChange-Id: If9a643e385c6c567b30f47d4caa35fa812a2ba43\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "90291577a08f582e0978651f55dd950f40eb111d",
      "tree": "145c005c421e6bae376d7193b8819709192d10a5",
      "parents": [
        "80810f86e93866674f3a4ca61f84887e7717aa63"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 16 14:19:45 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 16 18:33:50 2010 -0700"
      },
      "message": "Throttle userActivity calls from input dispatcher.\n\nResults in an approximately 60% reduction in InputDispatcher thread CPU time.\n(Went from 3% to 1% when measured with CPU frequency scaling disabled.)\n\nChange-Id: Ia6e6087a719ee518fe37b428a871c7240bd4143f\n"
    },
    {
      "commit": "567722eee190f7cf88dc7ea95167db76d5514842",
      "tree": "970afc373019504fade863b2f384f152d181b1ed",
      "parents": [
        "f76a05e985c249f2540eb8925f673b5c63b9566b",
        "1ebccf531d1049853b3b0630035434619682c016"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Aug 15 17:33:02 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Aug 15 17:33:02 2010 -0700"
      },
      "message": "Merge \"Fix problems with determining when to kill apps for wake usage.\" into gingerbread"
    },
    {
      "commit": "1ebccf531d1049853b3b0630035434619682c016",
      "tree": "92e426918dc4dd2068fba01e69797113b59eb63c",
      "parents": [
        "a8d9291d7f93d1aa0d24d71d65c7de2894812177"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Aug 15 13:04:34 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Aug 15 17:27:29 2010 -0700"
      },
      "message": "Fix problems with determining when to kill apps for wake usage.\n\nAlso improve debug printing of various times.\n\nChange-Id: Ifcc288fd1bcbf44c069875ba97925b9e7ffe9a48\n"
    },
    {
      "commit": "6a73368be44f45a80cc4b65dc57b9ff529cb2d89",
      "tree": "368c4feadfd7295b112dd2592386d8dc9e8228d4",
      "parents": [
        "e300b8c10c306b575bbbec29d5572ba92a97785e",
        "10f5c99223663ec0de21c52c1206c3d35cc2fb15"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 13 16:29:48 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 13 16:29:48 2010 -0700"
      },
      "message": "Merge \"fix a typo that prevented glTexImage2D codepath to work\" into gingerbread"
    },
    {
      "commit": "10f5c99223663ec0de21c52c1206c3d35cc2fb15",
      "tree": "708c53d9c02b244ae5156bc18ae541f913d3f245",
      "parents": [
        "ab5750115df3143de46cee934422ffea65765480"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 13 16:25:13 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 13 16:25:13 2010 -0700"
      },
      "message": "fix a typo that prevented glTexImage2D codepath to work\n\nChange-Id: I36a3bf9d1d2eacd9b14e00b0a6c53bf88bba381c\n"
    },
    {
      "commit": "e300b8c10c306b575bbbec29d5572ba92a97785e",
      "tree": "97b5bdef9a898c2e8e5b973116a26f8a35cfb3d1",
      "parents": [
        "a8d9291d7f93d1aa0d24d71d65c7de2894812177",
        "b738fb9938631a2e4540f9a9308f49e6be5565b8"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri Aug 13 15:59:53 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 13 15:59:53 2010 -0700"
      },
      "message": "Merge \"DO NOT MERGE Always set/remove default routes.\" into gingerbread"
    },
    {
      "commit": "b738fb9938631a2e4540f9a9308f49e6be5565b8",
      "tree": "cfca74d28113fdc7a0282a10b04c2df90a2582e0",
      "parents": [
        "e05184f271f9882a5bf828e353aea40e0c06ff69"
      ],
      "author": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri Aug 13 14:16:12 2010 -0700"
      },
      "committer": {
        "name": "Robert Greenwalt",
        "email": "robdroid@android.com",
        "time": "Fri Aug 13 15:53:13 2010 -0700"
      },
      "message": "DO NOT MERGE Always set/remove default routes.\n\nMust clean up default route if a default 3g connection is replaced\nby a non-default (ie, mms) connection on teh same interface.\n\nAlso stop mucking with all connections dns and routes - do it only\nfor the connection that has changed.\n\nbug:2865974\nChange-Id: Ifdf49080fa0413a4d826813706c809975a562dfa\n"
    },
    {
      "commit": "9adb9c3b10991ef315c270993f4155709c8a232d",
      "tree": "445c2437eeb4b3b5fa5597dc0538c04e0fdf490e",
      "parents": [
        "3f442ece257d416b48f7803a4cc263f0215faa0d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 13 14:09:56 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 13 15:17:49 2010 -0700"
      },
      "message": "Various battery info things:\n\n- Now track wake locks in battery history.\n- Now track sensors in battery history.\n- Some filtering of sensory data.\n- Fixes to some data that wasn\u0027t cleared when resetting battery stats.\n- Print amount discharged since last charge.\n\nAnd the big part -- keep track of wake locks held per process,\nand kill processes that hold wake locks too much while they are in\nthe background.  This includes information in the battery stats\nabout the process being killed, which will be available to the\ndeveloper if the app is reported.\n\nChange-Id: I97202e94d00aafe0526ba2db74a03212e7539c54\n"
    },
    {
      "commit": "94364b91a2894bf037b8beb027132fbb812e1434",
      "tree": "921da7245e7faab6feb77527d658b1e896867e4b",
      "parents": [
        "c8d0d6307fc5cdd24083113456ac33790a5fb94a"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Aug 12 23:21:40 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 13 10:10:48 2010 -0700"
      },
      "message": "surfaceflinger: don\u0027t check HWComposer numLayers unless one exists\n\nChange-Id: I4b83f7bf7ba1318c70054117f14e759fe0ad105c\n"
    },
    {
      "commit": "c8d0d6307fc5cdd24083113456ac33790a5fb94a",
      "tree": "e4d9377fecbf0e8b9f90e476f2f7b6892c137b7a",
      "parents": [
        "686a95055896c221c62fe7f4c3dda137809df91e",
        "8cc93b9b21310bd49d293152e4d68cedce8a72ef"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 13 08:00:14 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 13 08:00:14 2010 -0700"
      },
      "message": "Merge \"Fix issue 2909189: System property ro.audio.silent no longer mutes system.\" into gingerbread"
    },
    {
      "commit": "b7d1be01ae44428b947823fc48c1c126dcaa9732",
      "tree": "ab55969a9463aea5f5299a4d84b51856617f7d3d",
      "parents": [
        "404bffbeabbfa8c3f95cd92856d015a4d36e8a60",
        "f8e705dea48f77f1c2532fdbadd4997dd1851af0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 12 15:07:29 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 12 15:07:29 2010 -0700"
      },
      "message": "Merge \"Fix a couple issues with the new hwcomposer HAL\" into gingerbread"
    },
    {
      "commit": "f8e705dea48f77f1c2532fdbadd4997dd1851af0",
      "tree": "0c63e3e5b0d2035b57386db4a9b54f52f751c333",
      "parents": [
        "b59beb5ca68d0228f60dda60d85e2d0226b33215"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 12 15:03:26 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 12 15:03:26 2010 -0700"
      },
      "message": "Fix a couple issues with the new hwcomposer HAL\n\n- we now clear the framebuffer upon request from the HAL\n- the HAL list size could get out of sync with reality\n- there was also an issue where sometime we could run past the list\n\nChange-Id: Ic3a34314aed24181f2d8cc787096af83c046ef27\n"
    },
    {
      "commit": "fb86ce93079db4465a61489275c65bcf8ce4669e",
      "tree": "ae97d26d4d93bdf22b4f0b07773aded740e4ee16",
      "parents": [
        "65f2490e1baa6eac5905cbc638e69581ebcd8dee"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 18:11:23 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 18:15:29 2010 -0700"
      },
      "message": "Add watermark support.\n\nUse these system properties:\n\nro.watermark.text\nro.watermark.height\nro.watermark.x\nro.watermark.y\nro.watermark.color\nro.watermark.shadow.radius\nro.watermark.shadow.dx\nro.watermark.shadow.dy\nro.watermark.shadow.color\n\nIf ro.watermark.text is not set, no watermark will be shown.  All others\nhave reasonable defaults if they are not set.\n\nChange-Id: Ibe4a01e6f1c576494ae2462e2688cdfaa8c62cb8\n"
    },
    {
      "commit": "65f2490e1baa6eac5905cbc638e69581ebcd8dee",
      "tree": "bb452743751bd25305e736701838a16ddc89be3e",
      "parents": [
        "bb65ae020f802bae3e80dd8e05845fee5d6bc2cb",
        "b59beb5ca68d0228f60dda60d85e2d0226b33215"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 17:32:25 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 11 17:32:25 2010 -0700"
      },
      "message": "Merge \"should fix sim build, hopefully\" into gingerbread"
    },
    {
      "commit": "b59beb5ca68d0228f60dda60d85e2d0226b33215",
      "tree": "ae2ddeb41adbf4a17262eb3b6859effe4970616c",
      "parents": [
        "e0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 17:31:33 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 17:31:33 2010 -0700"
      },
      "message": "should fix sim build, hopefully\n\nChange-Id: I5390bd34dcca36fef43b5169386fff1b04cc842b\n"
    },
    {
      "commit": "90dc48b17f673b7e334e3254ea633450f994226c",
      "tree": "862edc239bc21f1ddc4f15d57768bf6ffd39325c",
      "parents": [
        "24d7050ca605804efd5fde03f0d0d8d1d052c247",
        "e0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:24:46 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 11 16:24:46 2010 -0700"
      },
      "message": "Merge \"call into hwcomposer HAL when present\" into gingerbread"
    },
    {
      "commit": "24d7050ca605804efd5fde03f0d0d8d1d052c247",
      "tree": "82e2e1563a5a36dda808f6c7c201df3e7f4eda2b",
      "parents": [
        "8e7515d9c938f5addd08d97bccfccfa976e76c11",
        "8514b92bc4dfab58aa762d75322e4c285b6ada17"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:21:01 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 11 16:21:01 2010 -0700"
      },
      "message": "Merge \"don\u0027t handle the transparent region of a layer in draw()\" into gingerbread"
    },
    {
      "commit": "8e7515d9c938f5addd08d97bccfccfa976e76c11",
      "tree": "b38fccc0b445bc09278b123aeea61a701fb1d669",
      "parents": [
        "025822a03a09337ec382e708c5a798fe805109ed",
        "1efba9a61716356014f4c452fd9e099c5ebe9bd0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:20:38 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 11 16:20:38 2010 -0700"
      },
      "message": "Merge \"get rid of our LayerVector implementation\" into gingerbread"
    },
    {
      "commit": "025822a03a09337ec382e708c5a798fe805109ed",
      "tree": "69a32098e0550ae31999100a59782a6c4c691fa6",
      "parents": [
        "95af0c14a64ef264d2b362ded4ca2b5a169d1066",
        "ff1d4102882ae9641a61fc4a3937866521bb72dc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:19:16 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 11 16:19:16 2010 -0700"
      },
      "message": "Merge \"keep a list of visible sorted surfaces\" into gingerbread"
    },
    {
      "commit": "95af0c14a64ef264d2b362ded4ca2b5a169d1066",
      "tree": "fba4bb178de08e99f4c71f882809bab315cec33a",
      "parents": [
        "bd1c082cf90d07e3ccb017b72e59b5ccad81dd07",
        "a41ca77fabe1c7ad12ebb9b69b9e786c07d49fa0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 11 16:15:48 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 11 16:15:48 2010 -0700"
      },
      "message": "Merge \"Add support for the PointerLocation overlay.\" into gingerbread"
    },
    {
      "commit": "e0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20",
      "tree": "85ed9093e65551a73553d19d5e6122d051ef574b",
      "parents": [
        "8514b92bc4dfab58aa762d75322e4c285b6ada17"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 10 17:14:02 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:08:45 2010 -0700"
      },
      "message": "call into hwcomposer HAL when present\n\nChange-Id: I70f31c69a9436a43860e78977442863ecba6d27b\n"
    },
    {
      "commit": "8514b92bc4dfab58aa762d75322e4c285b6ada17",
      "tree": "3a76202641f0c159baf59bb77eeb708e09be62b8",
      "parents": [
        "1efba9a61716356014f4c452fd9e099c5ebe9bd0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 10 20:42:20 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:05:06 2010 -0700"
      },
      "message": "don\u0027t handle the transparent region of a layer in draw()\n\nthis is already taken into consideration in computeVisibleRegion\nand therefore not needed at draw time.\n\nChange-Id: I3fc7336d22f1147dfcd3a20fd71bf79b946d971f\n"
    },
    {
      "commit": "1efba9a61716356014f4c452fd9e099c5ebe9bd0",
      "tree": "92f59d2d9146a58da50cbfe1f1e76221ef44d5c3",
      "parents": [
        "ff1d4102882ae9641a61fc4a3937866521bb72dc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 10 18:09:09 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:05:05 2010 -0700"
      },
      "message": "get rid of our LayerVector implementation\n\nwe now use SortedVector\u003c\u003e with a special compare implementation.\n\nChange-Id: I910459cf3b3c8993b55ad0786a8c348369262de5\n"
    },
    {
      "commit": "ff1d4102882ae9641a61fc4a3937866521bb72dc",
      "tree": "63fd377016ac4465aab9a12afcf75ed07706b273",
      "parents": [
        "91a7f5fef8a9fc496acef23f513cb48139e8dff5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 10 17:19:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:04:51 2010 -0700"
      },
      "message": "keep a list of visible sorted surfaces\n\nChange-Id: Ib815eeff894f8a3b1e79fbbf8186d5d91bb60285\n"
    },
    {
      "commit": "bd1c082cf90d07e3ccb017b72e59b5ccad81dd07",
      "tree": "3d39390b4c25ab3fdf9abce37307717ca061cdf1",
      "parents": [
        "8ea71511c64e61fe23004889ff7032f991a751c8",
        "f4c454bac9cfd804603e65c5195f49a344adf82d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 15:16:01 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 11 15:16:01 2010 -0700"
      },
      "message": "Merge \"New system property \"sys.boot_completed\" set to 1 when boot completed.\" into gingerbread"
    },
    {
      "commit": "a41ca77fabe1c7ad12ebb9b69b9e786c07d49fa0",
      "tree": "65d87a9c55c869843540884f0fbced6a69841895",
      "parents": [
        "c3fc2d03d58a258c53c9265a70143d4af076b764"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 11 14:46:32 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 11 14:46:32 2010 -0700"
      },
      "message": "Add support for the PointerLocation overlay.\n\nThis change involves adding a new method to IWindowManager,\nmonitorInput() that returns an InputChannel to receive a copy of all\ninput that is dispatched to applications.  The caller must have\nthe READ_INPUT_STATE permission to make this request (similar to\nother window manager methods such as getKeycodeState).\n\nChange-Id: Icd14d810174a5b2928671ef16de73af88302aea0\n"
    },
    {
      "commit": "f4c454bac9cfd804603e65c5195f49a344adf82d",
      "tree": "039e9405d49a1a33f6843795b0926a94a16e361c",
      "parents": [
        "a5ae50cd838b5725c63ed485292aae4edd1a98cb"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 12:47:41 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 12:47:41 2010 -0700"
      },
      "message": "New system property \"sys.boot_completed\" set to 1 when boot completed.\n\nChange-Id: Ie3fc0b1efdfb637b0c780064a71e8c1575e15ca3\n"
    },
    {
      "commit": "a02b8b05dd1e8b8cf169e1f89542ef835b11fc13",
      "tree": "aa1b5fb6b900c064d9914f51c9c3817a2c46f9df",
      "parents": [
        "9902196f9885d369e37cf44084e3f04513511ab0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 05 16:14:17 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 11 11:20:53 2010 -0700"
      },
      "message": "Move OBB file reading to DefaultContainerService\n\nThe system_server shouldn\u0027t touch files on the SD card. This change\nmoves the things that touch the SD card out to the\nDefaultContainerService so that it will get killed if the SD card goes\naway instead of the system_server.\n\nChange-Id: I0aefa085be4b194768527195532ee6dddc801cfc\n"
    },
    {
      "commit": "8cc93b9b21310bd49d293152e4d68cedce8a72ef",
      "tree": "3e5f40c40334597f88362847019d9c1737fed6d1",
      "parents": [
        "259b4c860212dd528b25d1cce6e74be01afed85c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 11 05:20:11 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 11 05:20:11 2010 -0700"
      },
      "message": "Fix issue 2909189: System property ro.audio.silent no longer mutes system.\n\nFixed regression introduced by commit 2a6b80bc65c4782b5a7168b300e1dc5ec9f617ee:\nmaster mute was not working if no effect chains were present on session 0.\n\nChange-Id: I66d107e045d159cb94d29c7476fa1e12d92f2ae7\n"
    },
    {
      "commit": "6c6d57c6a04eed154de1f7d9b544c2cb34a83dac",
      "tree": "f393cc7f74a83f83c5654b89adc96a12b48dffc2",
      "parents": [
        "63cca69157eae17da2a5492d1bcb7330061a52ac",
        "5e7833a571967d1dbc8618ac96ad6a379bcdf66a"
      ],
      "author": {
        "name": "Konstantin Lopyrev",
        "email": "klopyrev@google.com",
        "time": "Mon Aug 09 17:03:10 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 09 17:03:10 2010 -0700"
      },
      "message": "Merge \"Fix focus notification\" into gingerbread"
    },
    {
      "commit": "5e7833a571967d1dbc8618ac96ad6a379bcdf66a",
      "tree": "f8de5fbf04b798bec177bab0171d1ad77fcfd150",
      "parents": [
        "c6dc45700bf0c18708b0ad2f695ea85fadcbf131"
      ],
      "author": {
        "name": "Konstantin Lopyrev",
        "email": "klopyrev@google.com",
        "time": "Mon Aug 09 17:01:11 2010 -0700"
      },
      "committer": {
        "name": "Konstantin Lopyrev",
        "email": "klopyrev@google.com",
        "time": "Mon Aug 09 17:01:11 2010 -0700"
      },
      "message": "Fix focus notification\n\nChange-Id: I51d73100695ceb70620754a1897ace681a26d839\n"
    },
    {
      "commit": "2a6b80bc65c4782b5a7168b300e1dc5ec9f617ee",
      "tree": "fc777c3694d8739aba7a44caedc867c7b87b88a9",
      "parents": [
        "8fb2e6e4720385961083a150a3e848ccaef544ae"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 23:43:43 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 09 05:48:20 2010 -0700"
      },
      "message": "Fixed several audio effects problems.\n\n- Fixed constant inversions in AudioEffect.java\n- Do not return error when enabling an already enabled effect\n- Update cached effect state in native AudioEffect class when effect is enabled/disabled by command() method\n- Remove click when restarting effect during disable sequence\n- Fixed problem in master mute management when volume control is delegated to effect.\n\nChange-Id: I6df4ce9fcc54fdc7345df858f639d20d802d6712\n"
    },
    {
      "commit": "f9624764711f9806cd8a8a95c4a0613995bab04a",
      "tree": "37236ac39268ae8c5fda88429a6fe649affc5fc9",
      "parents": [
        "8e15afe799bbe8d332640c1f2b57b5e0458a9625"
      ],
      "author": {
        "name": "Konstantin Lopyrev",
        "email": "klopyrev@google.com",
        "time": "Wed Jul 14 17:02:37 2010 -0700"
      },
      "committer": {
        "name": "Konstantin Lopyrev",
        "email": "klopyrev@google.com",
        "time": "Fri Aug 06 13:27:31 2010 -0700"
      },
      "message": "Adding a way for Hierarchy Viewer to get the focused window.\n\nChange-Id: I01e6ab4aa24d632fba586cb9e112d8d9df1a681a\n"
    },
    {
      "commit": "5723dfe8c87d0887b8926f43637ed300466890d2",
      "tree": "1bb85eaf9fed48cda01d142a570dbe905f2a440a",
      "parents": [
        "4c5d28cee0537c83ff0e5bc0daaae78f68dfc7c8"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Aug 06 10:06:26 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Aug 06 10:15:15 2010 -0400"
      },
      "message": "GPS: Don\u0027t set XTRA download pending flag at boot time.\n\nXTRA data downloads are now strictly on demand from the GPS engine.\nAlso fix typo in handleDownloadXtraData()\n\nChange-Id: Ied1a6e2e62134add4d965326aae909c86f834682\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "1d62c7737c33f92e79f0a180b05969f52484e64c",
      "tree": "efbe9186ce59fc46ddfe08f1d7005c7e2fbf5188",
      "parents": [
        "b9605886d1a94de624b6feb5a81bb37f41653437"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Aug 06 11:32:24 2010 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Aug 06 11:52:38 2010 +0800"
      },
      "message": "Fix the build\n\nChange-Id: I410e2fd057b68e1b5b5b33ee10178a01d3c9b2fa\n"
    },
    {
      "commit": "2d94231ef91c732f649ff7af9520ee9eac441b16",
      "tree": "34907f59357a6b7896c2fa8ce94a5a7e58687b27",
      "parents": [
        "499b743851aa84b9fc1a7e445e189946bc47ad5d"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Aug 05 12:17:37 2010 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Aug 06 08:40:50 2010 +0800"
      },
      "message": "Add SIP service into system server.\n\nChange-Id: Icc39e4e54768cfdcc1b20a3efe6206009b9a8d10\n"
    },
    {
      "commit": "9b87770f53c55a313a7fdc6f553265aabbde3446",
      "tree": "7d3c18b9f003d8c059407fa45b1e7c4f3ee62586",
      "parents": [
        "8c5035696b0aaf30ae49594b845f663fe633ac88",
        "d0a2f86f357f346639a6648b4004266865c979b4"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Aug 04 20:33:32 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 04 20:33:32 2010 -0700"
      },
      "message": "Merge \"Fix crash when startForeground posts a broken Notification.\" into gingerbread"
    },
    {
      "commit": "e2f7417529439d4ff3fd23fbe7fc1fcac4230385",
      "tree": "cafb6120bf33d5e342baacf35f9b77dce0effa75",
      "parents": [
        "508715259c332613240b2399c77d35ea7214f91a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 13:35:33 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 13:35:33 2010 -0700"
      },
      "message": "Failure to move .dex in eng builds is not fatal\n\nWhen moving between program locations or application names, the .dex\nfile is moved by installd. However, in engineering builds, the\napplications are run through dexopt on-demand. If the .dex file fails to\nmove, we can ignore it because it\u0027s most likely because the .dex file\ndoes not exist yet.\n\nChange-Id: Id5c4dbfa33f19c976acd9f184ccd637752326629\n"
    },
    {
      "commit": "deb112674e9940a46c87fa4e3bae5d8d1ee84ef3",
      "tree": "f5ddf3474923811905ddd1f645a9d7be7d6dd7f5",
      "parents": [
        "866362fcb4db93584143c21934ea355cbf9e0757"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 02 11:36:21 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 04 08:44:31 2010 -0700"
      },
      "message": "Only allow one movePackage operation in-flight\n\nWhen a movePackage operation is requested, don\u0027t allow multiple requests\nto pile up for one package. Once a move is completed, an observer will\nreceive the message and be allowed to call movePackage again.\n\nChange-Id: Ie3842b6d96446febc0037bf9b8f1ca250735edc2\n"
    },
    {
      "commit": "d0a2f86f357f346639a6648b4004266865c979b4",
      "tree": "686b2bfe2b7deda215e330f84786f834c7003350",
      "parents": [
        "e339464f1c8efe7e53b761cf44ff5be6e537ecad"
      ],
      "author": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Tue Aug 03 15:29:31 2010 -0400"
      },
      "committer": {
        "name": "Daniel Sandler",
        "email": "dsandler@android.com",
        "time": "Wed Aug 04 10:52:51 2010 -0400"
      },
      "message": "Fix crash when startForeground posts a broken Notification.\n\nThe NotificationManager tries to crash the calling app, but\nin the case of a service calling startForeground, the caller\nis the ActivityManager, so system_server goes down.\n\nNotificationManagerService#enqueueNotificationInternal is a\nnew internal-only method that accepts a UID/PID to use when\npunishing bogus notifications (such as the one in\nhttp://b/2869787).\n\nChange-Id: I84a9854bae630bc90288cebb94f174809d5dac8c\n"
    },
    {
      "commit": "389a916769aaf4b329839285d2f975fc23aadfb4",
      "tree": "ccc2ffd116bdef54f600ab18109e68c69d96b402",
      "parents": [
        "5d46ce24cc46dc57d31f809302af916999114ced"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Aug 03 15:41:05 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Aug 03 15:41:05 2010 -0700"
      },
      "message": "Usage Stats: don\u0027t block writing stats to disk.\n\nI was seeing lots of stack traces of people hung for noticeable\namounts of time when switching between activities.\n\ne.g. On of the common gmail stacks showing this pause was:\n\nandroid.os.StrictMode$StrictModeDiskWriteViolation: policy\u003d391 violation\u003d1\n  at android.os.StrictMode$AndroidBlockGuardPolicy.startHandlingViolationException(StrictMode.java:272)\n  at android.os.StrictMode$AndroidBlockGuardPolicy.onWriteToDisk(StrictMode.java:243)\n  at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:238)\n  at java.io.FileOutputStream.\u003cinit\u003e(FileOutputStream.java:97)\n  at java.io.FileOutputStream.\u003cinit\u003e(FileOutputStream.java:69)\n  at com.android.server.am.UsageStatsService.writeStatsFLOCK(UsageStatsService.java:424)\n  at com.android.server.am.UsageStatsService.writeStatsToFile(UsageStatsService.java:398)\n  at com.android.server.am.UsageStatsService.notePauseComponent(UsageStatsService.java:539)\n  at com.android.server.am.ActivityManagerService.updateUsageStats(ActivityManagerService.java:1856)\n  at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:667)\n  at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2925)\n  at com.android.server.am.ActivityStack.requestFinishActivityLocked(ActivityStack.java:2836)\n  at com.android.server.am.ActivityManagerService.finishActivity(ActivityManagerService.java:2276)\n  at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:237)\n  at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1415)\n  at android.os.Binder.execTransact(Binder.java:320)\n  at dalvik.system.NativeStart.run(Native Method)\n\n  at android.app.ActivityManagerProxy.finishActivity(ActivityManagerNative.java:1454)\n  at android.app.Activity.finish(Activity.java:3260)\n  at android.app.Activity.onBackPressed(Activity.java:1929)\n  at android.app.Activity.onKeyUp(Activity.java:1907)\n  at android.view.KeyEvent.dispatch(KeyEvent.java:1088)\n  at android.app.Activity.dispatchKeyEvent(Activity.java:2087)\n  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1661)\n  at android.view.ViewRoot.deliverKeyEventToViewHierarchy(ViewRoot.java:2543)\n  at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2516)\n  at android.view.ViewRoot.handleMessage(ViewRoot.java:1866)\n  at android.os.Handler.dispatchMessage(Handler.java:99)\n  at android.os.Looper.loop(Looper.java:123)\n  at android.app.ActivityThread.main(ActivityThread.java:3609)\n  at java.lang.reflect.Method.invokeNative(Native Method)\n  at java.lang.reflect.Method.invoke(Method.java:521)\n  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)\n  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)\n  at dalvik.system.NativeStart.main(Native Method)\n\nChange-Id: Id49157bc635017292eaefddc5e22d73f5f4ab05e\n"
    },
    {
      "commit": "321f7fad5c4a6ef27e944dc72e2ddbfb61af81de",
      "tree": "b5bf9e4ff1df05fd412899e020fca38fac896fd0",
      "parents": [
        "3d84280ccc31d12765e2efe03e2dd3ade1acfc33"
      ],
      "author": {
        "name": "Konstantin Lopyrev",
        "email": "klopyrev@google.com",
        "time": "Mon Aug 02 20:01:01 2010 -0700"
      },
      "committer": {
        "name": "Konstantin Lopyrev",
        "email": "klopyrev@google.com",
        "time": "Tue Aug 03 11:21:55 2010 -0700"
      },
      "message": "Making sure that there is no notification when focus changes from something to nothing.\n\nChange-Id: Ib8b3bdd7f5dd999c933a017fe1b34263afe38e4a\n"
    },
    {
      "commit": "09e85dc0270ac9ce660c17ee8290ff2d136b395b",
      "tree": "1f7957006b9cb393315856ef00418733b8073266",
      "parents": [
        "d3579580df0cea7e37334d83ef7a9aa85ad70368"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 02 11:54:41 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Aug 02 11:59:11 2010 -0700"
      },
      "message": "Mute a common-case progress log about input injection\n\nChange-Id: I37c9f5cb239ab93fde3a42f71f2782d8734c53ce\n"
    },
    {
      "commit": "8b61b68b648985df37197de204398f608c4ad8b1",
      "tree": "3060ed71f863619d629b9d3a95f7ca44a40de980",
      "parents": [
        "d2165cfce7911dac66d1195ed9123e79b086d22b",
        "6f89fa07b4105b2e0cfac87db7ce5e7c9b9feead"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jul 30 16:55:37 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 30 16:55:37 2010 -0700"
      },
      "message": "Merge \"Only install after MCS success\" into gingerbread"
    },
    {
      "commit": "6f89fa07b4105b2e0cfac87db7ce5e7c9b9feead",
      "tree": "ee8da2d3ed9867716b4f44526074b868cff3fe5d",
      "parents": [
        "7c600369c9695de73ca37db552eb81b8b89d5e76"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jul 30 16:33:47 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jul 30 16:35:04 2010 -0700"
      },
      "message": "Only install after MCS success\n\nIf MCS dies in the middle of a call during install, only proceed if the\ncall was successful. Otherwise wait for the max retries to be reached\nand run the failure handling code there.\n\nChange-Id: I00a27ea91046ea6521a3cff5e5ffe2c71b2b5bb4\n"
    },
    {
      "commit": "d2165cfce7911dac66d1195ed9123e79b086d22b",
      "tree": "f5b615ce18d786aa15680265dc42a1fe509b2f76",
      "parents": [
        "f0aa24d91d23195f811e317c4cc4ddbe06db8974",
        "cb9ceb1029036363a81952d8ed5dfcbc83e6ff72"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Jul 30 15:20:28 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 30 15:20:28 2010 -0700"
      },
      "message": "Merge \"StrictMode: time violations in Binder calls\" into gingerbread"
    },
    {
      "commit": "cb9ceb1029036363a81952d8ed5dfcbc83e6ff72",
      "tree": "20c48fd7126f64778944060ce2c2d8d4159bc36b",
      "parents": [
        "31b5d5485f7336639d252da7ba979234dbd2f1e1"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Thu Jul 29 14:29:02 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Jul 30 14:28:55 2010 -0700"
      },
      "message": "StrictMode: time violations in Binder calls\n\nChange-Id: I5796993dce98be722cf679b78acaf0c9de0ba461\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": "392edec1162e9d00bcb66b271f43908f75d42ace",
      "tree": "5ecf0d7fb1e22166761f51b530aac6ac88b0f714",
      "parents": [
        "16263d9f8cc01392c2f3678b381ce897647c8c81",
        "3855980b4355017fa9a4988d7b150f3222075198"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 29 15:38:41 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 29 15:38:49 2010 -0700"
      },
      "message": "Merge from open-source froyo\n\nChange-Id: Ifa75fce9bd362b06ecb622219ef501e61e89fd76\n"
    },
    {
      "commit": "3855980b4355017fa9a4988d7b150f3222075198",
      "tree": "c078487e21c67006d0725783a4571c6b79f1f535",
      "parents": [
        "e8605af513e846f6cd223c9e92461189727d8c9b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 29 13:57:56 2010 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jul 29 15:24:15 2010 -0700"
      },
      "message": "Fix a bug where we cleaned an apps external data when upgrading it. :(\n\nChange-Id: I0eee1e7062d334c66d6daa3c43e11a292263aada\n"
    },
    {
      "commit": "31b5d5485f7336639d252da7ba979234dbd2f1e1",
      "tree": "149d0d8de3a73420feac657cb8252f7ee2ce0020",
      "parents": [
        "571180c4c72e0bb4f930f8971edf000a652f10f6",
        "fb1f103191f1cf424a79aaf1cd67d2d1900138e0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 29 14:07:14 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 29 14:07:14 2010 -0700"
      },
      "message": "Merge \"Fix a bug where we cleaned an apps external data when upgrading it. :(\" into gingerbread"
    },
    {
      "commit": "fb1f103191f1cf424a79aaf1cd67d2d1900138e0",
      "tree": "764b1869ec3a254798133506c7059ac491a19bf0",
      "parents": [
        "a0ae8bc5c62b12269f20cbebdb0d8614e4e8eb1a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 29 13:57:56 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 29 13:58:32 2010 -0700"
      },
      "message": "Fix a bug where we cleaned an apps external data when upgrading it. :(\n\nChange-Id: I0eee1e7062d334c66d6daa3c43e11a292263aada\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": "8dc16c27e23dae5bdf65fd2a2ced97c2f645a633",
      "tree": "f13d07246db7fbaaf63550c9dd570da5677c62a0",
      "parents": [
        "a54d7d3d7dd691334189aab20d23c65710092869"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 29 11:39:55 2010 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 29 11:39:55 2010 -0400"
      },
      "message": "Fix typo in GPS mode logic.\n\nMS-Assisted support should not be required for using MS-Based mode.\n\nChange-Id: Ia6ee219674de3e9cc13190b753f8776305a4fa90\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "a54d7d3d7dd691334189aab20d23c65710092869",
      "tree": "c210f11aa8f51610a039b1a2f6a2d59330710940",
      "parents": [
        "493941b8d8a12ee843d9823c0177f8005a7be54f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 06:50:24 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 06:50:24 2010 -0700"
      },
      "message": "Fixed underrun in audioflinger mixer.\n\nWhen all audio tracks have been disabled and the mixer is running idle before the output stream is placed in standby,\nthe mixer sometimes fails to write to the output stream on time to avoid underrun.\n\nThis is because the sleep period used to wait before the next write to output stream is too close to the actual buffer duration.\nIn fact this sleep time is not critical as if we write too early to the output stream, the kernel driver will wait for free buffers\nfrom the audio DSP DMA and we will sleep anyways.\n\nThe fix consists in dividing the calculated wait period by 2 to increase the margin.\n\nChange-Id: I5730887dc2ccce2a511bc858494a6f7da6b392a0\n"
    },
    {
      "commit": "493941b8d8a12ee843d9823c0177f8005a7be54f",
      "tree": "4f65a1e32a5eb1ce656ab9acd9c5020707cc68fd",
      "parents": [
        "7b40518e56a3238b28b24a786a2ff22d5a425765"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 01:32:47 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 29 02:34:40 2010 -0700"
      },
      "message": "Allow creation of an audio effect on a session with no audio tracks.\n\nThis is necessary to allow creating and enabling an effect attached to a particular player\nsession before the playback is started. As a matter of fact, the implementation of the mediaplayer\ndoes not create the AudioTrack before playback starts.\n\nChange-Id: I1266e8885f9d756acc949303321aaac0fbf83e34\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": "f369a9b5f7b2ae75875753caf90ec68fd9dbc144",
      "tree": "65ddddfda965f4d2d140fcbc365317f4307be6db",
      "parents": [
        "56c02dc3d325bab8549ec34b9d6aa7c62ef742d0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 14:47:01 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 14:48:58 2010 -0700"
      },
      "message": "Remove stale temporary ASEC containers\n\nWhen a temporary container is created, its existence should be\nephemeral. However, if there is an error that causes system_server to be\nkilled during the process of creating a finalized ASEC, delete the stale\ncontainers on the next start-up of system_server.\n\nChange-Id: I7be8f94638a824295474c9a95960594848cb726b\n"
    },
    {
      "commit": "56c02dc3d325bab8549ec34b9d6aa7c62ef742d0",
      "tree": "b465b8f43821db74dc7c27afc2b214d882f82978",
      "parents": [
        "b1bb7180ec3446208ea717d96f6a507ea9955a13",
        "c78a8079740bfcad2e4439ccd74da52f6dc7fae2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 14:48:40 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 14:48:40 2010 -0700"
      },
      "message": "Merge \"Fix getTempContainerId()\" into gingerbread"
    },
    {
      "commit": "c78a8079740bfcad2e4439ccd74da52f6dc7fae2",
      "tree": "32980045a8a1e809f407a9c7c9ba51d283bfd004",
      "parents": [
        "7feab3470156c7864fe159115d575c16f0974493"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jul 27 15:18:38 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 14:45:14 2010 -0700"
      },
      "message": "Fix getTempContainerId()\n\ngetTempContainerId() would always return \"smdl2tmp1\" unless you had\nMAX_CONTAINERS number of SD card SDKs, because of an array sort that put\nall the zeros at the beginning.\n\nSwitch from trying to find a hole in the series of numbers to just\ngetting a number that\u0027s one larger than the previous. This reduces the\nalgorithmic complexity and the memory requirements.\n\nBug: 2832580\nChange-Id: I32dc75ef5a6645f594ea47b032d7402e8860ebcd\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": "0c39b6c65bcb96ed6438c7d792a67708409d8f0f",
      "tree": "01bce9458ea87b0d7dbc4e55f0d72eb21f3ca56b",
      "parents": [
        "62d83a0c894b72d9abda1340d278d2aeec11e0fb",
        "84047bc295af663274ced27def33164d6e020b5d"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Jul 28 09:53:12 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 09:53:12 2010 -0700"
      },
      "message": "Merge \"Add a missing break; to restore old functionality and not turn off the screen after 30secs regardless of system preference.\" into gingerbread"
    },
    {
      "commit": "62d83a0c894b72d9abda1340d278d2aeec11e0fb",
      "tree": "341b7d9f9fbd133f676feecd146e3790fe28fe29",
      "parents": [
        "c40d714ca520257bcb5ef2e03e83ea3273d3a0ec",
        "a4c72acfbc6c06588dd26cf41e67a834fc0a54f9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 07:48:49 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 07:48:49 2010 -0700"
      },
      "message": "Merge \"Audio effects: modified command() parameter types.\" into gingerbread"
    },
    {
      "commit": "a4c72acfbc6c06588dd26cf41e67a834fc0a54f9",
      "tree": "f837332558eb9f5bcec50e109878f7d98a644148",
      "parents": [
        "b73045935cd8ec5d1a1c5e7a7ca800448b5789ea"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:40:18 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jul 28 05:49:21 2010 -0700"
      },
      "message": "Audio effects: modified command() parameter types.\n\nThe type of the cmd, cmdSize and *pReplySize parameters of the effect control interface command()\nfunction have been modified from int to uint32_t. This is more consistent with their role.\n\nChange-Id: I84d289fc262d6753747910f06f485597dfee6591\n"
    },
    {
      "commit": "c40d714ca520257bcb5ef2e03e83ea3273d3a0ec",
      "tree": "87bc4979430b652177e084cda82f6708d33fff2b",
      "parents": [
        "b73045935cd8ec5d1a1c5e7a7ca800448b5789ea",
        "ac051ae7ac62532c78f820a0c7347ca36b119132"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Wed Jul 28 04:04:18 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 28 04:04:18 2010 -0700"
      },
      "message": "Merge \"Tethering: Use new ACTION_USB_STATE broadcast to monitor USB connected state\" into gingerbread"
    },
    {
      "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": "b73045935cd8ec5d1a1c5e7a7ca800448b5789ea",
      "tree": "374ad5b9ff406fc285e7d60f5c1436f4a0fd9c00",
      "parents": [
        "9b8e5566f99c55222db4127719440272f63a5361",
        "e73eb531259126728e1d6e6b71ca65da28aaf0e0"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 27 18:34:08 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 27 18:34:08 2010 -0700"
      },
      "message": "Merge \"Cap the size of StrictMode buffering we do before calling DropBox.\" into gingerbread"
    },
    {
      "commit": "e73eb531259126728e1d6e6b71ca65da28aaf0e0",
      "tree": "38447cdab530cfee887e22447531641b529de7fd",
      "parents": [
        "0166c3530535355e7813f54c4e403a21db94a9d2"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 27 16:54:39 2010 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Tue Jul 27 16:54:39 2010 -0700"
      },
      "message": "Cap the size of StrictMode buffering we do before calling DropBox.\n\nChange-Id: I46ea767bd0153c745e9b7eff945dacf5130f8807\n"
    },
    {
      "commit": "84047bc295af663274ced27def33164d6e020b5d",
      "tree": "2b9de925d070488c5205ddedef1b135bd51f98b2",
      "parents": [
        "499bee34c40945f898b7561ca7792ded5b974852"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 27 16:49:10 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Tue Jul 27 16:49:10 2010 -0700"
      },
      "message": "Add a missing break; to restore old functionality and not turn off the screen after 30secs regardless of system preference.\n\nChange-Id: I6d160a1851e1f73bac3775d24cf70d46da59aa47\n"
    },
    {
      "commit": "499bee34c40945f898b7561ca7792ded5b974852",
      "tree": "64c2446094f7b298ab1c9bd353813f22786e9a38",
      "parents": [
        "76d9bf52f31b8f31f64348b736422861c90ab463",
        "c13978afe3adf26dc32766dab300cc066f372618"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Tue Jul 27 10:22:58 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 27 10:22:58 2010 -0700"
      },
      "message": "Merge \"Remove a log message Jason doesn\u0027t like\" into gingerbread"
    },
    {
      "commit": "76d9bf52f31b8f31f64348b736422861c90ab463",
      "tree": "ab9bfa91f80d6366e575fe85103cdfcaf3bb119b",
      "parents": [
        "ca57d1cc89d65dfbd59c749c5736574cd08c7bd3",
        "8c65ee2d509db7dcb50ce4530d52eb5bdca3f917"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jul 27 09:14:42 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 27 09:14:42 2010 -0700"
      },
      "message": "am 8c65ee2d: Merge \"Add a method to let a properly permissioned app directly manipulate the user activity timeout.  We should come up with a better API for this, but this is for a last minute power manager hack to turn off the screen sooner after a phone call ends.\" i\n\nMerge commit \u00278c65ee2d509db7dcb50ce4530d52eb5bdca3f917\u0027 into gingerbread\n\n* commit \u00278c65ee2d509db7dcb50ce4530d52eb5bdca3f917\u0027:\n  Add a method to let a properly permissioned app directly\n"
    },
    {
      "commit": "c13978afe3adf26dc32766dab300cc066f372618",
      "tree": "6654b7b0122981f3106d7fc7f85cb73ba98a1403",
      "parents": [
        "00de721859ca291d0e212a6970f0bd8b3a2f8428"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Mon Jul 26 15:32:00 2010 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Mon Jul 26 15:32:00 2010 -0700"
      },
      "message": "Remove a log message Jason doesn\u0027t like\n\nBug: 2856942\nChange-Id: Ifc5cfc076bfed0918bb203ed9c82a42092ac3939\n"
    },
    {
      "commit": "14bfa398a4e8697ce5822861a684b7d1245e4a85",
      "tree": "e931d659ad7827ebf74d66a0f5c13d949dcd2b60",
      "parents": [
        "3ac8eb7278e3603d1a35fdbd2fff540a235da2ab"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Jul 24 19:58:06 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Jul 24 20:07:17 2010 -0700"
      },
      "message": "Infrastructure to report running services to developer.\n\nChange-Id: Id1aae61323e7b8357c5fcc4bc641aaa57f3b6fde\n"
    },
    {
      "commit": "46730fc78388607fd562044cbaaa26ffc9f65337",
      "tree": "460661e109dcae2b1cae10d77cb287ac37ed6892",
      "parents": [
        "3bee5af8162c177f8c8f4199489a401058ab26a9"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Jul 24 16:32:42 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sat Jul 24 16:34:00 2010 -0700"
      },
      "message": "Fix handling of application disabled state.\n\nChange-Id: I617b76e89eeb75437b384b92f1205bb00b15bb70\n"
    },
    {
      "commit": "7999bff154e96efb0bc9d2b89ec277f0f9ca0d2f",
      "tree": "80395cf53286425b2eea352f48a29c88635e8569",
      "parents": [
        "e8605af513e846f6cd223c9e92461189727d8c9b"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Sat Jul 24 11:50:05 2010 -0400"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Sat Jul 24 11:50:05 2010 -0400"
      },
      "message": "Add a method to let a properly permissioned app directly\nmanipulate the user activity timeout.  We should come up\nwith a better API for this, but this is for a last minute\npower manager hack to turn off the screen sooner after a\nphone call ends.\n\nChange-Id: I76422f952e3e894c90b3311e7d889899c79cbbaa\n"
    },
    {
      "commit": "32123fde1b82fc7f5d04f35e2b972364d4352ec9",
      "tree": "5dea92a5eaf35d3a479d5e53c32d99697f247241",
      "parents": [
        "aea786f42cee6a899e8f78fdbf82cb1cac544430"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 22:19:43 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 23 16:55:24 2010 -0700"
      },
      "message": "Report sensor events to BatteryStats service\n\nChange-Id: I9b83aa709887aa658bc474391573f2d45b6c4eb2\n"
    },
    {
      "commit": "aea786f42cee6a899e8f78fdbf82cb1cac544430",
      "tree": "8e212eff79f6d7c77651bab907768df6b41c2562",
      "parents": [
        "b54a3c95801da5464bbfcbb551545b543ca4d46c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 21:24:39 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 21:24:39 2010 -0700"
      },
      "message": "SensorService handles last known state properly\n\nSensorService now correctly sends the last known\nstate of a sensor as soon as a new connection is made.\nThis fixes the issue where, for instance, an application\ncould wait a long time before getting the light or proximity\nsensor initial state.\n\nChange-Id: Ic41392f3626e26c4f15746c7e17c7ecd44bbb10b\n"
    },
    {
      "commit": "efba8bf53aa6d0efb8cf778aaa63a482b813d2b1",
      "tree": "f40319f8114e065f9f789dd528cadbc93eb0d0ca",
      "parents": [
        "d8653518449e3dbf03fe6f8b11dbdff5ef6ce60e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 16:18:10 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 16:18:10 2010 -0700"
      },
      "message": "filter sensor event by connection\n\nwe now don\u0027t send events down to a connection that has not\nregistered for this event.\n\nChange-Id: I3fe507974d3e99293749bfec2ef871e8a0ee9600\n"
    },
    {
      "commit": "d8653518449e3dbf03fe6f8b11dbdff5ef6ce60e",
      "tree": "b3a73831dbd64dbc6e6ea009f42353513d4e2ff7",
      "parents": [
        "b8e07a51c1849d6894c5773a3daacedd01294218"
      ],
      "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 21:45:57 2010 -0700"
      },
      "message": "propagate sensor event rate properly to the sensor HAL\n\nChange-Id: I1abe4c0fcce423caab79208353fded4d57398227\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": "5df13ef30e7dd58e4e718e6d949ac3d1f5af94e0",
      "tree": "196fdbccb8e8eff1562ee672a67cfe55e22d2bfe",
      "parents": [
        "b9cdead457fb86efc125db8c1c6954c4af1d7388"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 19:09:10 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 16:09:39 2010 -0700"
      },
      "message": "SensorService doesn\u0027t crash if correct HAL is not present\n\nChange-Id: I83700b1a1b43390f5830e1056572bfb16e58e8e4\n"
    },
    {
      "commit": "b9cdead457fb86efc125db8c1c6954c4af1d7388",
      "tree": "11ae1c3b7c7546df6cbe392de639adf875633513",
      "parents": [
        "865991b075de1df8144426b5c2b2f341e4e33d33",
        "42e1b39ac53709d9a9a74cd803e8ded10cf03848"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 16:07:32 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 21 16:07:32 2010 -0700"
      },
      "message": "Merge \"Better dumpsys logs\" into gingerbread"
    },
    {
      "commit": "865991b075de1df8144426b5c2b2f341e4e33d33",
      "tree": "8281e3fa3f81b4e6e4aa9596c1847b76467b4a22",
      "parents": [
        "e4764521353e898554931a557460fc49209fb0a9",
        "6f8b4d28d41508e3a563c12f5841918bb3869819"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 16:07:15 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 21 16:07:15 2010 -0700"
      },
      "message": "Merge \"Added partial support for repporting sensor activity to IBatteryStats\" into gingerbread"
    },
    {
      "commit": "e4764521353e898554931a557460fc49209fb0a9",
      "tree": "261afe438ecda0a438afe04c8a5e1c40bf978d63",
      "parents": [
        "3685db7f5dd8a830a4e096404d4924e12697fb78",
        "1bf797857e025e8a71db86fb9e79765a767ec1eb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 16:06:46 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 21 16:06:46 2010 -0700"
      },
      "message": "Merge \"new SensorService\" into gingerbread"
    },
    {
      "commit": "3685db7f5dd8a830a4e096404d4924e12697fb78",
      "tree": "6e6c42ddea6127f5fdcba3da8c4f05839361695f",
      "parents": [
        "ff0ab64ca49c7a03835d414cd493d5dc37c2eb5e",
        "e8605af513e846f6cd223c9e92461189727d8c9b"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Wed Jul 21 13:55:13 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 21 13:55:13 2010 -0700"
      },
      "message": "am e8605af5: Merge \"Avoid leaking file descriptors when returning drop box events.\" into froyo\n\nMerge commit \u0027e8605af513e846f6cd223c9e92461189727d8c9b\u0027 into gingerbread\n\n* commit \u0027e8605af513e846f6cd223c9e92461189727d8c9b\u0027:\n  Avoid leaking file descriptors when returning drop box events.\n"
    },
    {
      "commit": "6e6d60d4c85ce440d9ef5e5f36e708ed0ced65c6",
      "tree": "89f6e4441aea77dc5a6bf418a88e2aaa571090b4",
      "parents": [
        "2f0dc6d9f50ceece294e9db393583e655d3bf781"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Tue Jul 20 15:24:09 2010 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Wed Jul 21 12:52:21 2010 -0700"
      },
      "message": "Avoid leaking file descriptors when returning drop box events.\n\nWe can\u0027t use Parcel.writeValue() to write the ParcelFileDescriptor, otherwise\nit leaks when returning the value to the caller (the flag gets lost).  Change\nthe way DropBoxManager.Entry gets serialized so that it uses a bit of its own\nflags value to track whether the data is a byte[] or a ParcelFileDescriptor.\n\nModify the dropbox unit test to add extensive checking of Entry serialization\nand deserialization under various circumstances, and to include a regression\ntest to ensure that FD leaking doesn\u0027t happen.\n\nBug: 2847738\nChange-Id: I4ccd17dd03ffab234340cd359e6f3510fdf81193\n"
    },
    {
      "commit": "8ed6ed0b6216a9dfcbcd6a5ba6a62d28a901baec",
      "tree": "0969f3a936ab2f1e7493146eece22edf5f2f39ec",
      "parents": [
        "ff7049ab2886acc73e145367118646f7741ce333"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 13 04:45:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 20 10:31:57 2010 -0700"
      },
      "message": "Audio policy manager changes for audio effects\n\nAdded methods for audio effects management by audio policy manager.\n- control of total CPU load and memory used by effect engines\n- selection of output stream for global effects\n- added audio session id in parameter list for startOutput() and stopOutput().\nthis is not used in default audio policy manager implementation.\n\nModifications of audio effect framework in AudioFlinger to allow moving and reconfiguring\neffect engines from one output mixer thread to another when audio tracks in the same session\nare moved or when requested by audio policy manager.\nAlso fixed mutex deadlock problem with effect chains locks.\n\nChange-Id: Ida43484b06e9b890d6b9e53c13958d042720ebdb\n"
    },
    {
      "commit": "42e1b39ac53709d9a9a74cd803e8ded10cf03848",
      "tree": "36d99627ca19ad7db6cf512ab7c2d5ba11a5be08",
      "parents": [
        "6f8b4d28d41508e3a563c12f5841918bb3869819"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 15:20:39 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 17:57:29 2010 -0700"
      },
      "message": "Better dumpsys logs\n\nChange-Id: Iae65a8547ee5815cc4c3b74d2c9ef17bed7f565d\n"
    },
    {
      "commit": "6f8b4d28d41508e3a563c12f5841918bb3869819",
      "tree": "957946df953dc7240103c1bc8603564a1fa246df",
      "parents": [
        "1bf797857e025e8a71db86fb9e79765a767ec1eb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 15:03:55 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 17:57:29 2010 -0700"
      },
      "message": "Added partial support for repporting sensor activity to IBatteryStats\n\nChange-Id: I2af319d89e49b0f2349ec9d8b0fccac80e9bc047\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": "7203272f35e40bf9d4b76f1b2f9b0077738df118",
      "tree": "502e239de7d45124bc48b1854edbbe3c32996e2c",
      "parents": [
        "9714d2c4d2a7563ce5ffdc1726461b24e9f1e599",
        "0d7e048cf2e38d32568261760aef82d1ee145126"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 19 10:13:27 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 19 10:13:27 2010 -0700"
      },
      "message": "Merge \"Fixed problems in audio effect volume control.\" into gingerbread"
    },
    {
      "commit": "9714d2c4d2a7563ce5ffdc1726461b24e9f1e599",
      "tree": "51a4aca5047a96fc8822cff939a33f00384f33d3",
      "parents": [
        "faf775e772e329e821d81ba735474df097b1e1e9",
        "f4d207b1c2212d6e9adc3e7954a8d14c6b9abc51"
      ],
      "author": {
        "name": "Adam Bliss",
        "email": "abliss@google.com",
        "time": "Mon Jul 19 08:09:19 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 19 08:09:19 2010 -0700"
      },
      "message": "Merge \"Don\u0027t throw an exception from isProviderEnabled and getLastKnownLocation\" into gingerbread"
    },
    {
      "commit": "0d7e048cf2e38d32568261760aef82d1ee145126",
      "tree": "8cc4ce1bd601dae9c7f98d0235ff2be3a28275cf",
      "parents": [
        "faf775e772e329e821d81ba735474df097b1e1e9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 19 06:24:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jul 19 06:31:30 2010 -0700"
      },
      "message": "Fixed problems in audio effect volume control.\n\nFixed the following problems in audio effect volume control in AudioFlinger:\n- Make sure that the volumes returned by EffectChain::setVolume_l() are correct even is\nno change is detected since last call\n- Do not use isEnabled() to validate volume control but mState \u003e\u003d ACTIVE instead as the volume control\nmust be also active in STOPPING and STOPPED states.\n\nChange-Id: Id62da3164fad500ee8a5efd6cd78c77e8fdcb541\n"
    }
  ],
  "next": "f4d207b1c2212d6e9adc3e7954a8d14c6b9abc51"
}
