)]}'
{
  "log": [
    {
      "commit": "ca99fb8f65f3ea249c56fb6dccefffb54e87696e",
      "tree": "6071c87bf800c60d8c2f8dbd85a2f0c2b6e669f7",
      "parents": [
        "daeec8c5b335ba84aa932a80e6319be5d71f1956"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 14 16:43:44 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 14 16:43:44 2010 -0700"
      },
      "message": "fix [2594950] Flash: Zooming in on some content crashes the Nexus One and causes it to reboot (runtime restart)\n\nWe now limit the size of the surface to the maximum size supported by the GPU.\nOn Nexus One this will 2048 -- it could be different on other devices.\nSurface creation fails if the limit is exceeded.\n\nChange-Id: I9ecfc2e9c58c9e283782b61ebfc6b590f71df785\n"
    },
    {
      "commit": "775fa3cd32ffbb1c27011388287c5bc2b968e3bb",
      "tree": "ee6dbe548d447b7cf337af1fd81161933a664a03",
      "parents": [
        "35c1a2dc1f874fea4600d8c59f8ad4a61edc5624"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 09 06:11:48 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Apr 09 06:11:48 2010 -0700"
      },
      "message": "Additional fix for isssue 2548710: Native AudioTrack resources never freed.\n\nThis changes fixes the issue for the direct output thread that was not\naddressed by commit 71f37cd8a175ee00635cb91506d6810fd02b5b51.\n\nChange-Id: I1bbe26be5f444415dd97270e49257650f5d2858f\n"
    },
    {
      "commit": "deea502a920d3739efae5a29c6fbf56780d68501",
      "tree": "3e97de9342e02549a42f7de706763a5431ebe916",
      "parents": [
        "54de5d19bcdf0addf19fe55599bb5b3835e85690"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 31 12:21:17 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 31 12:36:34 2010 -0700"
      },
      "message": "Fix isssue 2548710: Native AudioTrack resources never freed.\n\nThe problem is a bug in AudioFlinger::MixerThread::prepareTracks_l() that makes that even if the TrackHandle\nis destroyed, the corresponding Track will remain active as long as frames are ready for mixing.\nIf the track uses shared memory (static mode) and the sound is looped, this track will play for ever.\n\nThe fix consists in removing the track from active list immediately if the track is terminated.\n\nChange-Id: I4582aa1d981079ab79be442fb6185f5afaed5cf3\n"
    },
    {
      "commit": "c85e12e07559b7a36f6b831112a7e677a4f83ceb",
      "tree": "3552620b2a0ba895bf41b4587f5199ab7df863b6",
      "parents": [
        "77e26d6822bdba470c4704440fdafcc256475b4e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 30 21:04:17 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 30 21:04:17 2010 -0700"
      },
      "message": "Revert \"fix [2542425] memory leak during video recording\"\n\nThis reverts commit 544592e14f8d7643238e40ba9879727497900f35.\n"
    },
    {
      "commit": "77e26d6822bdba470c4704440fdafcc256475b4e",
      "tree": "5fd50fb4ef04634bd4383041447a1dbd81847574",
      "parents": [
        "964d29a953d273867090c8cb746e8dade511091d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 30 16:53:40 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 30 19:02:59 2010 -0700"
      },
      "message": "fix [2542425] memory leak during video recording\n\n[Sorted|Keyed]Vector\u003cTYPE\u003e would leak their whole storage when resized\nfrom the end and TYPE had trivial dtor and copy operators.\n\nChange-Id: I8555bb1aa0863df72de27d67ae50e20706e90cf5\n"
    },
    {
      "commit": "caeddc7236a41bc51e60d54f5fa0e67cddd7aba6",
      "tree": "b84d3fb2486cbc8c0a1a826617fdf1cb28eb2587",
      "parents": [
        "afa2eac17aa5b23af5c89a8542142a47fe8c9914"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 29 13:45:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 29 13:45:18 2010 -0700"
      },
      "message": "fix [2542425] memory leak during video recording\n\nVector::sort() is using _do_copy() incorrectly; _do_copy() calls the\ncopy constructor, not the assignment operator, so we need to destroy\nthe \"destination\" before copying the item.\n\nChange-Id: Iaeeac808fa5341a7d219edeba4aa63d44f31473c\n"
    },
    {
      "commit": "c8620b60d67390d2bd0fa0ce53cc63fc18c50244",
      "tree": "b289d7614f9950bdf8de025be2daa984a1f9ceb6",
      "parents": [
        "016093a2c19b23985366b1ac2eb7cba730b62d46"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 25 14:34:49 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 25 14:34:49 2010 -0700"
      },
      "message": "fix [2545826] calling into gralloc with external lock held\n\nChange-Id: I2d0e017382404c684c768a0dd0423d574213f10a\n"
    },
    {
      "commit": "67954789490f901676c170f4bcea1345551373a4",
      "tree": "8747a17bd29a1cf46f09c53addc728ab52966bd1",
      "parents": [
        "7d94746bb5a633eb2379e19e248a293725276da8",
        "26d244281a62c909acfd7527da256a9413241122"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 19 17:20:08 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 19 17:20:08 2010 -0700"
      },
      "message": "Merge \"libutils Condition are now PRIVATE by default\""
    },
    {
      "commit": "26d244281a62c909acfd7527da256a9413241122",
      "tree": "604db48636694e35f1f60ce41fd3e07542e12cc2",
      "parents": [
        "2cfdc6bed2ae9c1267570537a6a9521d69c2cb05"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 19 16:14:13 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 19 16:16:43 2010 -0700"
      },
      "message": "libutils Condition are now PRIVATE by default\n\nCondition must be initialized with SHARED for the old behavior, where\nthey can be used accross processes.\n\nUpdated the two places android that require SHARED conditions.\n\nPRIVATE conditions (and mutexes) use more efficient syscalls.\n\nChange-Id: I9a281a4b88206e92ac559c66554e886b9c62db3a\n"
    },
    {
      "commit": "440fd870b20b4720e11c9ea71d2a3284f8cf2f59",
      "tree": "104d72391ed281ca7093a0ec374705387dcedc94",
      "parents": [
        "deba00ca2ec735b2a2286edec656262b70a2677e"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 18 17:55:03 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 18 18:13:57 2010 -0700"
      },
      "message": "Ensure that binder incalls to the system process keep the fg cgroup\n\nOn binder incalls, the handler thread is given the caller\u0027s priority by the\ndriver, but not the caller\u0027s cgroup.  We have explicit code that sets the\nhandler\u0027s cgroup to match the caller\u0027s, *except* that the system process\nexplicitly disables this behavior.  This led to a siuation in which we were\nrunning binder incalls to the system process at nice\u003d10 but cgroup\u003dfg.\n\nThat\u0027s fine as far as it goes, except that if a GC happened in the handler\nthread, it would be promoted to foreground priority and cgroup both, to avoid\nhaving the GC take forever.  Then, when GC finished, the original priority\nis reset, and the cgroup set *based on that priority*.  This would push the\nhandler thread into nice\u003d10 cgroup\u003dbg_non_interactive -- which matches the\ncaller, but is supposed to be impossible in the system process.\n\nThe end result of this was that we could be running \"lengthy\" operations in\nthe system process in the background.  Unfortunately, some of the operations\nthat wound up like this would hold important global system locks for up to\ntwenty seconds as a result, making the entire device unresponsive to input\nfor that period.\n\nThis CL fixes the binder incall setup to ensure that within the system process,\na binder incall is always begun from the normal foreground priority as well\nas cgroup.  In practice now the device still becomes laggy/sluggish when the\noffending lock-holding time-consuming incall occurs, but since it still runs\nas a foreground task it is able to proceed to completion within a short time\nrather than taking 20 seconds.\n\nFixes bug #2403717\n\nChange-Id: Id046aeabd0e80c48eef94accc37842835eab308d\n"
    },
    {
      "commit": "d6ce1004643c0edb6bd9f123877a2610674a803d",
      "tree": "ad0137ab397c607d53cb2cc35288c9124f317e56",
      "parents": [
        "7cdc0f99eb0731018a7430740ed374bf4dcf5ae8",
        "101e77a31bd0c4cc49280a7dba78507fef08072f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Mar 17 09:16:27 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 17 09:16:27 2010 -0700"
      },
      "message": "Merge \"Fix issue 2416481: Support Voice Dialer over BT SCO.\""
    },
    {
      "commit": "ab02873e8f4e235b0db800521dd0c969ed38c0b9",
      "tree": "54754cb5af99ddd885337a16410f180648b10728",
      "parents": [
        "b7f853e57b3ba884a9e5390baf004415c2556e61"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 16 16:41:46 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 16 17:54:27 2010 -0700"
      },
      "message": "fix [2511580] Window poop on screen - drop down list left some residual when it resized\n\nChange-Id: Ib9a3622e7a568ba26717a93b5bfa4a191651f4d0\n"
    },
    {
      "commit": "101e77a31bd0c4cc49280a7dba78507fef08072f",
      "tree": "ec1792bf8902e5d4858dbfe5f84419a75b283c3a",
      "parents": [
        "b3a5395f4a26600c01aec1522e6ea8efdb7eecfb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Mar 11 14:47:00 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 16 17:32:18 2010 -0700"
      },
      "message": "Fix issue 2416481: Support Voice Dialer over BT SCO.\n\n- AudioPolicyManager: allow platform specific choice for opening a direct output.\n Also fixed problems in direct output management.\n- AudioFliinger: use shorter standby delay and track inactivity grace period for direct output\nthread to free hardware resources as soon as possible.\n- AudioSystem: do not use cached output selection in getOutput() when a direct output\ncan be selected.\n\nChange-Id: If44b50d29237b8402ffd7a5ba1dc43c56f903e9b\n"
    },
    {
      "commit": "d343e3d5e3177806205b9452b0b43907e28afd9a",
      "tree": "a094c9ea996f2d1ceb872340a192741ea6395635",
      "parents": [
        "80586f4230f974c2a3fe2b8aa398ffd6764e3a3a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 15 18:15:20 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 15 18:15:20 2010 -0700"
      },
      "message": "fix [2515291] Native crash and runtime restart while trying to preview captured picture on Sapphire\n\nif a buffer couldn\u0027t be allocated because of an OOM, SF could, in some case dereference\na null pointer.\n\nChange-Id: I5321248c38a21e56d5278b6aada2694e64451378\n"
    },
    {
      "commit": "08abf1fa13a541b8c5eb477dbf9b33d11d97b103",
      "tree": "67bb33d61662809fbb27d890debd6cfcf4667c95",
      "parents": [
        "7f2d3df232f3938302774a45b960216a3ae5dbd6"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sat Mar 13 12:33:15 2010 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Sun Mar 14 10:55:57 2010 -0700"
      },
      "message": "Fix bug 2203203 Route STREAM_VOICE_CALL to A2DP when not in call.\n\nChange-Id: I5581702780308658415dc4ad19fbe409fdc5c368\n"
    },
    {
      "commit": "55fa25161a7626ae6a15bc2cc46e22771455ed80",
      "tree": "415784ce2ab3126dd1d8a081c70bd811aca1add4",
      "parents": [
        "e156e6478f8393dc519a903d48ef09b3eabf32ad"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 11 15:06:54 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 11 15:06:54 2010 -0800"
      },
      "message": "implement connect/disconnect in our native_window_t implementations\n\nthe framebuffer implementation doesn\u0027t do anything special with this\nbut the surfaceflinger implementation makes sure the surface is not used\nby two APIs simultaneously.\n\nChange-Id: Id4ca8ef7093d68846abc2ac814327cc40a64b66b\n"
    },
    {
      "commit": "d12965934712ed0b9c1a264a6934dc0dad839ffd",
      "tree": "59920890e11f3732f5bba3d0507077297da8c014",
      "parents": [
        "06cc3e1b5dc2486732013f218b7d02aae6288a9e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 09 19:17:47 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 11 12:55:39 2010 -0800"
      },
      "message": "fix [2483456] Video orientation is wrong on Droid for some videos\n\nChange-Id: I450191f1335f57bffc51aff3e27295395847dbc0\n"
    },
    {
      "commit": "c3897a2aea5342f5a638f052fcab77b361b85a77",
      "tree": "54b9159cc7265d4cc0f2cd36676138d12ffc0554",
      "parents": [
        "b8d57d8483084d99f7d13686582d238844fbba6e",
        "e4623e87548022987bcd0fe362d078b844356143"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Mar 09 18:43:57 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 09 18:43:57 2010 -0800"
      },
      "message": "Merge \"Use proper config to enable LVMX\""
    },
    {
      "commit": "e4623e87548022987bcd0fe362d078b844356143",
      "tree": "89b5b3f1942eb488018817892fc62edd56d5abb4",
      "parents": [
        "080b8a84d98b94984bd3762cb9318f49793476b6"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Mar 09 18:13:59 2010 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Mar 09 18:13:59 2010 -0800"
      },
      "message": "Use proper config to enable LVMX\n\nChange-Id: Ifa75a82884b99aeee139e055f40e7c510cf28213\n"
    },
    {
      "commit": "82fecb01df67f5e3321618df29079b9ce56a30e4",
      "tree": "28fb3a80711a00d385d75d5e9b78b9a5edd0b096",
      "parents": [
        "080b8a84d98b94984bd3762cb9318f49793476b6"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 09 15:00:30 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 09 17:18:05 2010 -0800"
      },
      "message": "Add ability for some manifest attributes to reference resources.\n\nThis loosens our restriction on many manifest attributes requiring\nliteral string values, to allow various ones to use values from\nresources.  This is only allowed if the resource value does not change\nfrom configuration changes, and the restriction is still in place\nfor attributes that are core to security (requesting permissions) or\nmarket operation (used libraries and features etc).\n\nChange-Id: I4da02f6a5196cb6a7dbcff9ac25403904c42c2c8\n"
    },
    {
      "commit": "d5ea969b41d02d6fe1a54637b46a809d06ad4d4b",
      "tree": "5e1d957c0a853723d09159afe0284838f372d4e6",
      "parents": [
        "71b2c240fd19e085d492ca9125aa75a347e410a6"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Mar 05 12:18:01 2010 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Tue Mar 09 14:16:01 2010 -0800"
      },
      "message": "Initial version of LifeVibes integration.\nAlso changed tabs to spaces in other audioflinger files.\n"
    },
    {
      "commit": "84cf7d9e881f28018235fe024e6fac5b26f318df",
      "tree": "04712e6f27a1b853dd3f378bbb3ebdee4974193c",
      "parents": [
        "b51357d774cfaf30df84a54b562b8401477a836f"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 09 09:26:08 2010 -0800"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Mar 09 12:45:55 2010 -0800"
      },
      "message": "Fix bug 2329540\n Part 1 of the fix: when the user doesn\u0027t elect to use the car dock\n for music and media, the APM was not aware of the device being\n docked.\n This is fixed by dissociating the notification for the APM of\n the docking to the dock from the sink state change of the A2DP\n device.\n Also missing was forcing the volumes to be reevaluated whenever\n the device is docked or undocked, as volumes for docks may\n differ, even when the same output device is being used.\n\nChange-Id: If5314e27821a71adbd6df6fdf887c45208241d96\n"
    },
    {
      "commit": "948d69fca450a5a85e3e3e17d5776bfb26e48b85",
      "tree": "dced50dd4d2a0372405a728361a60cc503db1138",
      "parents": [
        "7d3f8ed3a5878e3dc8046eaa1fa0524a6ff51344"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:29:09 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:30:56 2010 -0800"
      },
      "message": "improve SF logging/debugging a little bit\n\nChange-Id: I6a57f89c25defc293fd748cc1fbd710031c02ec2\n"
    },
    {
      "commit": "7d3f8ed3a5878e3dc8046eaa1fa0524a6ff51344",
      "tree": "17b1cd61ebe23f6884e75b5bcf942c7129e44c7a",
      "parents": [
        "3d85d27a38bf6cdaae34b5c8a97d9183e7329a0e",
        "c2e30de00cf1990bef88e0e34929f242bae02d06"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:24:27 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 08 19:24:27 2010 -0800"
      },
      "message": "Merge \"Fix a small bug where we could compute SharedBufferStack\u0027s tail incorrectly.\""
    },
    {
      "commit": "c2e30de00cf1990bef88e0e34929f242bae02d06",
      "tree": "9c1eb61d2de2796cda956265200eff3b1d91770c",
      "parents": [
        "773694abb4a64dc802d1d872a108c435741c84b7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:23:26 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:23:26 2010 -0800"
      },
      "message": "Fix a small bug where we could compute SharedBufferStack\u0027s tail incorrectly.\n\nAlso add \"tail\" to the debug dump().\n\nChange-Id: I04b1ea375dfc9ddcc22f0c6b6cd01300e507572e\n"
    },
    {
      "commit": "f23a5e052e3847cad23710d940254739ffd35a48",
      "tree": "753a6007ecd24dd33fcda0069f1e0b4245ef0e0f",
      "parents": [
        "4d0e1ddf5dea997e4e053aa5413a28c37dff4a5b",
        "fcfeb4b5970c8f361634429934a2518d7e8328dd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 15:35:44 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 08 15:35:44 2010 -0800"
      },
      "message": "Merge \"fixes for [2474091] Saw Poor behaviour playing a video.\""
    },
    {
      "commit": "fcfeb4b5970c8f361634429934a2518d7e8328dd",
      "tree": "5a8337f84c6d707b28c9be732842555c622786d6",
      "parents": [
        "8addafe823381addbb8b9ca4edeca846fa13122f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 11:14:20 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 11:14:20 2010 -0800"
      },
      "message": "fixes for [2474091] Saw Poor behaviour playing a video.\n\n- fix a bug when hacking video buffers into gralloc buffers\n where the buffer size was incorrect this was causing the\n \"direct-form-texture\" mode to fail\n\n- also when the above fails, make sure to revert to the\n \"mdp copy mode\" before going to \"slow mode\"\n\n- finally disable completely the \"direct-from-texture\" mode\n for now. It cannot work because the allocated buffers can\u0027t\n respect the GPU constraints (alignment and such). We\u0027ll\n have to find a solution for that.\n"
    },
    {
      "commit": "219795f5d0a84cc06df262c1d2b5dfe82793d57b",
      "tree": "0cf1e5835d16c64a2dca64c14945fc9d66e95437",
      "parents": [
        "ef70c8971cf4c2e45e18187f403db44e9ddd6c7d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Mar 06 15:46:31 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Mar 08 06:50:44 2010 -0800"
      },
      "message": "Fix issue 2317760: Change the priority between wired headset and A2DP.\n\nModified audio policy manager so that wired headset has precedence over A2DP headset.\n"
    },
    {
      "commit": "194e485dd1a6a38ce1bdd38589bafa637ce53c26",
      "tree": "7cc5ca350459a14cb3bcac780b7b38215f34d9b5",
      "parents": [
        "61a2c93ad93ffa63c7c39568c34b3fa284e622b4",
        "4f1fcc2890f7db5509740c3daedf51ee3a38869e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 05 16:01:47 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 05 16:01:47 2010 -0800"
      },
      "message": "Merge \"Fix issue 2428563: Camera rendered inoperable by voice call interruption.\""
    },
    {
      "commit": "4f1fcc2890f7db5509740c3daedf51ee3a38869e",
      "tree": "e4d043825e143afdfb9f6283404a40396512b0f3",
      "parents": [
        "5500621e72abff8bd753fdb781dbc423978bca13"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 02 18:38:06 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Mar 05 11:54:23 2010 -0800"
      },
      "message": "Fix issue 2428563: Camera rendered inoperable by voice call interruption.\n\nThe problem is that AudioRecord never exits read() when a timeout occurs while trying\nto get new PCM data from audio hardware input buffer: it just keeps waiting and retrying until stop() is called.\nIn the same time, opencore AndroidAudioInput::audin_thread_func() loop cannot be exited when stuck\nin AudioRecord::read() because the iExitAudioThread flag can only be sampled when AudioRecord::read()\nreturns. We remain stuck with the audio input thread running.\n\nThe fix consists in modifying AudioRecord behavior in case of timeout when getting new PCM samples.\nWe now wait only one timeout period and try to restart audio record, in case the problem is due to a media_server\nprocess crash. If this fails, we exit read() with a number of bytes read equals to 0 so that\nAndroidAudioInput::audin_thread_func() loop can exit.\n\nAlso modified Audioflinger::RecordThread() loop so that we attempt to recover from HAL read errors.\nIn case of read error, the input stream is forced to standby so that next read attempt does a\nreconfiguration and restart of the audio input device.\n"
    },
    {
      "commit": "9855a0575efe1fbd5df662aee465b4c9a09c3871",
      "tree": "cb93c8936ecbda8ce27e230f197d46390ea0cccf",
      "parents": [
        "532c4a70d3c2d9a78990cbd7bb70864c058578ff"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 04 16:26:06 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 04 16:32:32 2010 -0800"
      },
      "message": "Calculate bitmask array sizes correctly in the EventHub\n\nWe\u0027ve gotten lucky to date:  the previous calculation of bitmask array\nsizes, (maxval+1)/8 only works properly when \u0027maxval\u0027 is one less than\na multiple of 8.  Fortunately, this has either been the case for us,\nor there has been sufficient \u0027unused\u0027 space at the end of the defined\nmax value range that we haven\u0027t wound up overreading/overwriting the\nallocated buffers.\n\nChange-Id: I563a93a86644ab9f19489565e06c28e06bb53abc\n"
    },
    {
      "commit": "2032f98f8c6176be7819bd3bc4459a05542c5b85",
      "tree": "53a9ca87925a684228549f8a8efbc121945378d0",
      "parents": [
        "5c8a613f7ed66ccdfa40305e969c9b6b0e046397"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 04 16:00:29 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 04 16:00:29 2010 -0800"
      },
      "message": "Fix #2489986 : The key bitmask needs to cover all possible keys\n\nChange-Id: Ieebd2f879e6b6fbc0388655dd66f34be89e809a0\n"
    },
    {
      "commit": "6687fb103da248213a31c859a5f424e4feccfb25",
      "tree": "63a1b51fedfa288a11724460e39314cced8a0296",
      "parents": [
        "f0895e8530719500262fb9b43a395399bf834b11"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 04 00:58:29 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Mar 04 11:52:14 2010 -0800"
      },
      "message": "Fix some bugs.\n\nBug #2376231: Apps lose window focus (and back key causes ANR) if the\nlock screen is dismissed while the phone is in landscape mode\n\nThis is another case where we weren\u0027t recomputing the focused window\nafter changing the visibility policy.\n\nbug #2479958: Investigate source of \"Resources don\u0027t contain package\nfor resource number 0x7f0a0000\"\n\nUm, okay, so it turns out there were bugs all over the place where\nwe would load an XML resource from a another application, but not\nuse the Resources for that application to retrieve its resources...!\nI think the only reason any of this stuff was working at all was\nbecause it typically only cared about retrieving the resource\nidentifiers of the items (it would look up the values later).\n\nBug #2401082: Passion ERE26 monkey crash - InputMethodManagerService\n\nAdd some null checks.\n"
    },
    {
      "commit": "71c3eb2a389ce405ea3286271422e2da52e828de",
      "tree": "251040659761c8b3dd927d2b5a817c2ef26d4919",
      "parents": [
        "bbd20a6ac4f5073016bf8bef07ca3b1bea3ea42d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 02 17:19:29 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 02 17:37:45 2010 -0800"
      },
      "message": "Maybe fix issue #2482201: Paired bluetooth device looks like a qwerty keyboard\n\nWe now only consider a device to be a default keyboard if its name\nhas \"-keypad\".  A hack, but whatever.\n\nAlso add some debug logging for the input state to help identify such\nissues in the future.\n"
    },
    {
      "commit": "4fe6ac33d14ba3998fff5f289d36b0f9dd67fa28",
      "tree": "74e1ffb9104e2c6d605cff34f71a2aa28482451e",
      "parents": [
        "32f027250bcc3cfff26c3648750696ce85f07136"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Mar 02 15:39:44 2010 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Mar 02 16:44:46 2010 -0800"
      },
      "message": "surfaceflinger: remove un-cached buffers hack for Adreno\n\nChange-Id: I5ae4e74bfa3e25b55be2cddf7b3c51368a140ab9\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "134ccbd131c87bfe712ca4e3af5f18e9d11dc040",
      "tree": "918100dea7b054e012192dba956248f58a98e87b",
      "parents": [
        "37e168eec4f4c7ed414487b2c6b32350754ac548"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Feb 26 02:47:27 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Mar 02 08:20:13 2010 -0800"
      },
      "message": "Issue 2071329: audio track is shorter than video track for video capture on sholes\n\nAdd API to retrieve number of frames dropped by audio input kernel driver.\n\nSubmitted on behalf of Masaki Sato \u003cmasaki.sato@motorola.com\u003e\n"
    },
    {
      "commit": "8eca036d24f2e7865ab5ccb057b043e2c32b75bf",
      "tree": "c95da74a8ebd8ccb839d9657532a41df906a1eda",
      "parents": [
        "7a0f7e233ac9507d71e4b9c5abf8b8923817aa23"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 01 17:43:39 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Mar 01 20:42:14 2010 -0800"
      },
      "message": "Fix issue #2448075: aapt doesn\u0027t fix up activity-alias android:targetActivity links\n\nAnd related:\n\n- The aapt tool now sets a resource configurations sdk level to match any configs\n  that have been set (for example if you specify density your sdk level will be\n  at least 4).\n- New option to modify the targetPackage attribute of instrumentation.\n- Clean up of aapt options help.\n- Fix of UI type values to leave 0 for \"unspecified\".\n- Make the UI mode config APIs public.\n"
    },
    {
      "commit": "064e1e672e62094b32f8cf7a77a3b04c3309dc79",
      "tree": "1bd60f1efaec92479bedb0cd7edf95dcc8098f12",
      "parents": [
        "285dbde2e0cd0057be070ded3be8f5f453147edc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 17:51:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 18:36:14 2010 -0800"
      },
      "message": "fix [2425395] portrait UI briefly shows in landscape\n\nthe \"freeze\" timeout was not initialized properly which caused it\nto kick-in immediately instead of after 5s\n"
    },
    {
      "commit": "285dbde2e0cd0057be070ded3be8f5f453147edc",
      "tree": "b9b6c52aae0b3dffef51d7113713ffad60a6a365",
      "parents": [
        "46a26c63ed0a4322551ae0d8bac3c558d45d20dc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 16:09:43 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 18:34:50 2010 -0800"
      },
      "message": "Added a name to Surface created by SurfaceFlinger\n\nUpdated the window manager to use this new facility.\nSurfaces name are now printed by \"dumpsys\".\n"
    },
    {
      "commit": "dc7caf18da8386ad4f02176bf8509d95e5dba6e4",
      "tree": "e27fd67dae80d77695d3ee8e4e525ce060c44e1a",
      "parents": [
        "e26f4a308fbd4809b53262be15b8dd378bb4e10b"
      ],
      "author": {
        "name": "Ficus Kirkpatrick",
        "email": "ficus@android.com",
        "time": "Mon Mar 01 16:33:53 2010 -0800"
      },
      "committer": {
        "name": "Ficus Kirkpatrick",
        "email": "ficus@android.com",
        "time": "Mon Mar 01 16:33:53 2010 -0800"
      },
      "message": "Demote the famous ResourceTypes warning to LOGV.\n\nIt is spamming the log bigtime and can be promoted back to LOGW\nor worse by whoever decides to actually investigate the bug.\n\nChange-Id: I72d950155378f641ebdfbacabae774f5736a52bc\n"
    },
    {
      "commit": "45853c975907ac9b5c4c11e9f74caa2bd01fea24",
      "tree": "74d51c4e9413b2bcae28b47e10f67bb1fca558fa",
      "parents": [
        "32820ca5f93722969129446e18d290ba81a08a5f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 26 18:59:23 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 26 18:59:23 2010 -0800"
      },
      "message": "to help debugging [2461567] Home screen redraw messed up\n\nlog SF\u0027s idea of the front buffer in dumpsys.\n"
    },
    {
      "commit": "83db7782aae2c279e24c56c31a3b25e2c707c9cc",
      "tree": "34ce7653cf0c003748413146a21d45641c52ad95",
      "parents": [
        "4c0c10cb7a0c023b35a38252e94b735c5291cdaa",
        "15498d6a2381c8449186705548c03565b26edc15"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Feb 25 00:14:47 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Feb 25 00:14:47 2010 -0800"
      },
      "message": "Merge \"Fix issue 2327064: Music played via line out is interrupted due to the phone call audio on BT hs.\""
    },
    {
      "commit": "15498d6a2381c8449186705548c03565b26edc15",
      "tree": "0b3a71bb1b57d27b7ab4f25e0df33b56f037e000",
      "parents": [
        "057aa729dd8449da607162349dea30ba2eaf0ad7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 24 11:51:43 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Feb 24 11:54:32 2010 -0800"
      },
      "message": "Fix issue 2327064: Music played via line out is interrupted due to the phone call audio on BT hs.\n\nThis is not a real fix for the issue but a change to make sure that the behavior is consistent regardless of\nexternal condidions (WIFI ON or OFF, music started before call or not, A2DP device same as SCO device...).\n\nAs there is now way to guaranty good quality audio over both SCO and A2DP simultaneously, especially when WIFI is on, We will stick to this behavior:\nWhen music is playing and we are docked to the desk dock and a call is answered with a BT SCO headset, A2DP output will be suspended.\nIf music is restarted during the call, it will appear muted to the user until the call is terminated.\n"
    },
    {
      "commit": "f70c4cebccfda4b4b0d92a0773f6dfa10f3b9574",
      "tree": "94292c242662550649e9dddeff8e61ec269b0108",
      "parents": [
        "30c205b6eab0d3700e936dddb8ec475a497809d4",
        "9e333ab42c5ca09632f56cd5d8e5349e06a632b7"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 24 07:52:27 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 24 07:52:27 2010 -0800"
      },
      "message": "Merge \"Use UTF-8 strings to avoid duplicate caching, part 1\""
    },
    {
      "commit": "057aa729dd8449da607162349dea30ba2eaf0ad7",
      "tree": "e60c09fba2a4cb89f49a4f06f84455193b27429b",
      "parents": [
        "4dffa100310366079d0b78e763988ec3388a6bcd",
        "34248170a7c50b590f693b087f3bb4e1285aa2d7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 23 23:36:37 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 23 23:36:37 2010 -0800"
      },
      "message": "Merge \"Fix issue 2305382: Pick up original call makes a noisy beep when wired headset connected.\""
    },
    {
      "commit": "34248170a7c50b590f693b087f3bb4e1285aa2d7",
      "tree": "28602391e431babe833d9b3c3dc2c5220446dc34",
      "parents": [
        "000073b3154e2823358378632091257179ec532c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 23 09:48:31 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Feb 23 11:00:56 2010 -0800"
      },
      "message": "Fix issue 2305382: Pick up original call makes a noisy beep when wired headset connected.\n\nThe noise is the residual ring tone that is still playing while the call is answered and the\naudio route changed to headset or earpiece.\n\nThe fix consists in muting the ringing tone when changing mode from ringtone to in call\nand delaying the route change until the audio buffers are emptied.\n"
    },
    {
      "commit": "9e333ab42c5ca09632f56cd5d8e5349e06a632b7",
      "tree": "3f9e1b8b26a302f72ebe08468f2fec8ad3a5029a",
      "parents": [
        "fc10cf951a0f12315b96e35a7e8d360748eea302"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 22 22:36:26 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Feb 23 10:02:20 2010 -0800"
      },
      "message": "Use UTF-8 strings to avoid duplicate caching, part 1\n\nStringBlock instances containing UTF-8 strings use a cache to convert\ninto UTF-16, but using that cache and then using a JNI call to NewString\ncauses the UTF-8 string as well as two copies of the UTF-16 string to\nbe held in memory. Getting the UTF-8 string directly from the StringPool\neliminates one copy of the UTF-16 string being held in memory.\n\nThis is part 1. Part 2 will include ResXMLParser optimizations.\n\nChange-Id: Ibd4509a485db746d59cd4b9501f544877139276c\n"
    },
    {
      "commit": "eda65400f5ae301e26c5f52287d831f063069ec2",
      "tree": "7761c37543be75a8f97e40f86fac897edbf7f792",
      "parents": [
        "d2fa75683ad20749f97e12ac2f70e91e25f9def9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 22 03:15:57 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 22 17:30:40 2010 -0800"
      },
      "message": "remove a dependency of surfaceflinger on libskia\n\nlibskia was only used for a small part of SkTransform. We now implement\nTransform is surfaceflinger directly.\n"
    },
    {
      "commit": "98e71ddaede9a0bfb681fd237bec1f66c6c53193",
      "tree": "b99491347832c92e1e5af62d11d3a9baf946dd18",
      "parents": [
        "e4f5055ad281096e5b89c4240be29d2c95a43b65"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 17:30:52 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Feb 21 23:27:25 2010 -0800"
      },
      "message": "remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).\n\nAdd a Flattenable interface to libutils which can be used to flatten\nan object into bytestream + filedescriptor stream.\nParcel is modified to handle Flattenable. And GraphicBuffer implements\nFlattenable.\n\nExcept for the overlay classes libui is now independent of libbinder.\n"
    },
    {
      "commit": "ca6fab2b534fc7b252d0ee7ec2079afff7e5c308",
      "tree": "898e53da55169a6e53b42b83ed8c9c5ce50bf863",
      "parents": [
        "1e10d364f171d69a7bfd57cb7757d7f69964525a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 19 17:51:58 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 19 17:51:58 2010 -0800"
      },
      "message": "Initialize layer position\n"
    },
    {
      "commit": "b6121422ef641dc7317d1c3bf1d38b7d73922250",
      "tree": "80dfecc782b2a9b5e3dfdec96703ffc8a1b6b9bd",
      "parents": [
        "3c8f46c8d82d158aef9d4e757d744fa11fb95ece"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 17 20:22:26 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 17 20:26:47 2010 -0800"
      },
      "message": "Remove a dependency of Region (libui) on Parcel (libbinder).\n"
    },
    {
      "commit": "3db21640519541141137166ce55627cf76e1974b",
      "tree": "48af75f7a13cedb2967007296c510ee312be5134",
      "parents": [
        "40cece49ddf328ceadd8c3cc2503ac500fba7552"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 20:43:39 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 20:43:39 2010 -0800"
      },
      "message": "fix a bug I introduced recently where YUV formats would crash the system\n"
    },
    {
      "commit": "54ed4f6282bdea251455f39b978626026affdbef",
      "tree": "157d34806bbfab22e433c1eafe0e2bf72f832af2",
      "parents": [
        "39696474d715de575949a9cdf12e7ff339896f8d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 17:33:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 17:33:37 2010 -0800"
      },
      "message": "get rid off the YUV formats at the libui layer\n"
    },
    {
      "commit": "713e2f1bf5f97805fe8386379982e9a2be5d3085",
      "tree": "3b7ddd701d56169fac9b6a2d29cab63181c43bb9",
      "parents": [
        "e2fde25f970aa5f3274d6ea603ebcf2c6cca99f2",
        "c9e4a125464b389454619432cbdbcb2d9b11995a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 12:56:56 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 16 12:56:56 2010 -0800"
      },
      "message": "Merge \"minor cleanup.\""
    },
    {
      "commit": "c9e4a125464b389454619432cbdbcb2d9b11995a",
      "tree": "53e02445736e4c5be44cc088b9957ab1c0588abd",
      "parents": [
        "053c9e928bc8aa569572aea97430a63cb8fdc109"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 12 18:50:28 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 12 18:50:28 2010 -0800"
      },
      "message": "minor cleanup.\n"
    },
    {
      "commit": "0d88e7a8d7c436e8375a749aac77d34eb95356c8",
      "tree": "d3fb3f0d27908fd3185032499f11b109e76743e7",
      "parents": [
        "053c9e928bc8aa569572aea97430a63cb8fdc109"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 12 14:09:24 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 12 14:37:42 2010 -0800"
      },
      "message": "Totally remove Unicode.cpp and rely on ICU\n\nUnicode.cpp used a packed data table for character data that essentially\nduplicated ICU\u0027s functionality.\n\nChange-Id: Ia68fe4ac94e89dc68d9a3f45f33f6e648a5500b7\n"
    },
    {
      "commit": "196e3207345baa4ba5af93646f2ca1b67a438aeb",
      "tree": "2738aede10416d2418222aa6d611d27fe1e74838",
      "parents": [
        "fe7a18c4e17a179a0f26e139d3eae20393c1a8ae"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 12 13:01:16 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 12 13:01:16 2010 -0800"
      },
      "message": "Excise code from Unicode.cpp that was dead\n\nRemove some utility functions for discovering character data\nthat ICU probably took over a while ago.\n\nChange-Id: I97abe4de2f51eb2bf48679941258bc501184c3dc\n"
    },
    {
      "commit": "9cce325fae8adcf7560a28eef394489f09bad74d",
      "tree": "3497604564acd2575016d3a331d661f22a8e6db3",
      "parents": [
        "4fae0fd0c9425318094d4c0059331c2c7a996c66"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "1776e77c68971a72ca81b720c2074bae342d3f0a",
      "tree": "34167d23140a28886c2831a5f01db7b6b8bc1bb6",
      "parents": [
        "dfec3a92cbec4f7e95eeeac23c3e69ce6b9aa5e6",
        "d5a4f1ff5bd519cf9b53af5c0a687f156bdf302a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Feb 10 00:07:35 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 10 00:07:36 2010 -0800"
      },
      "message": "Merge \"Remove some logs.\""
    },
    {
      "commit": "d5a4f1ff5bd519cf9b53af5c0a687f156bdf302a",
      "tree": "81a565122b058228ad622e39d2b92a7be66b072e",
      "parents": [
        "9b692da2e32a78fad524b24b52c4616944294fa5"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Feb 10 13:01:48 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Feb 10 13:02:17 2010 +0800"
      },
      "message": "Remove some logs.\n"
    },
    {
      "commit": "dfec3a92cbec4f7e95eeeac23c3e69ce6b9aa5e6",
      "tree": "2e2538f304c364a15bfe5ec0578a1eb1f0c0160e",
      "parents": [
        "a7760d3f05c3102a9ac84533b5751e38cee84d33",
        "a05c8227046081b2648b8150c1a716040eb08121"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Feb 09 20:49:06 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 09 20:49:06 2010 -0800"
      },
      "message": "Merge \"Add exposure compensation parameter.\""
    },
    {
      "commit": "a05c8227046081b2648b8150c1a716040eb08121",
      "tree": "ee1db3cf05075689d3878a7bc3d2e1cdfb449d47",
      "parents": [
        "9b692da2e32a78fad524b24b52c4616944294fa5"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Feb 09 13:38:19 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Feb 09 18:28:50 2010 +0800"
      },
      "message": "Add exposure compensation parameter.\n\nbug:2375993\n"
    },
    {
      "commit": "2b92d89e23e1a2a07d0e0d01c00eed33ea580aff",
      "tree": "e48a80222a08d42335c728ecf493e6288c34a75d",
      "parents": [
        "1b26c6ae58f9f0e37fd0e3ae7c03a74efcdec904"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 08 15:49:35 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 08 15:49:35 2010 -0800"
      },
      "message": "Add support for physically rotated displays\n\nThis feature is currently controled by a system property.\n\"ro.sf.hwrotation\" can be set to either 90 or 270. It\u0027ll cause\nSF to rotate the screen by 90 and 270 degres respectively.\n\nThat is, if the driver reports 800x480 for instance, and\nro.sf.hwrotation is set to 90, applications will \"see\" a\n480x800 display and will run in portrait.\n\nThis is implemented by introducing an extra \"display\"\ntransformation in the GraphicPlane.\n"
    },
    {
      "commit": "a7e380396ea68b2247a61e6fc676724a976223f9",
      "tree": "b51aab06d63397e9688653e32ac4955e73140ab8",
      "parents": [
        "8dccb26901973722164f2a11551fd6d5c52081bf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 04 17:13:06 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 04 17:13:06 2010 -0800"
      },
      "message": "Add support for direct EGLImageKHR use with pushbuffer API\n\nWe now always first try to use the EGLImageKHR directly before\nmaking a copy with copybit. The copy may be needed when\nEGLImage doesn\u0027t support the requested format, which is\ncurrently the case with YUV.\n"
    },
    {
      "commit": "391f3f8b5e8f97e002cbbc6a7535cfd73a8d16b3",
      "tree": "b346a01beb8e74fe47758ba79bd7d26c98b010f6",
      "parents": [
        "077c40fee35f483df961c6a0746ee78b9d1c5a8f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sun Jan 31 14:19:38 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sun Jan 31 17:03:10 2010 +0800"
      },
      "message": "Add float support for set and get in CameraParameters.\n\nbug:2375989\nbug:2375987\n"
    },
    {
      "commit": "077c40fee35f483df961c6a0746ee78b9d1c5a8f",
      "tree": "e191acfba8c0c74b6b06e1c07855fcc0f13880c1",
      "parents": [
        "b0b1eff2bc61008194627190da2b7535677e533a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jan 27 22:55:14 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat Jan 30 20:36:04 2010 +0800"
      },
      "message": "Add focal length and view angle API.\n\nbug:2375989,2375987\n"
    },
    {
      "commit": "0dd0d2944a0a7b985db162dec8b49b77d689d171",
      "tree": "dde15fc2105fbf0aa8af4df71f5d73a16688a3f2",
      "parents": [
        "10e6d20fb3083693fc3e0378b982d08cfd9ce034"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 25 19:00:00 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 29 14:51:06 2010 -0800"
      },
      "message": "Simplify the MemoryDealer implementation\n\nAt some point the implementation became complicated because of\nSurfaceFlinger\u0027s special needs, since we are now relying on gralloc\nwe can go back to much simpler MemoryDealer.\n\nRemoved HeapInterface and AllocatorInterface, since those don\u0027t need\nto be paramterized anymore. Merged SimpleMemory and Allocation.\nMade SimplisticAllocator non virtual.\n\nRemoved MemoryDealer flags (READ_ONLY, PAGE_ALIGNED)\n\nRemoved a lot of unneeded code.\n"
    },
    {
      "commit": "7ccc09a4f357a3d454c137ff2e1969e5aaa9bf2f",
      "tree": "2f7c53a53868b964246da36554802704f4de788a",
      "parents": [
        "0f5bcea6f579b195a5ae3f8a7e6463353eac9669"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 13:42:59 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jan 28 13:42:59 2010 -0800"
      },
      "message": "Remove verbose log from AudioPolicyManagerBase.\n"
    },
    {
      "commit": "2550f8557f1d0d9eeb9b0fffe5c83864324a9589",
      "tree": "b9b8be6cf5b834c61cf78f81e0ced17370f06a8a",
      "parents": [
        "fded92688e64942eef7f1aaf2845674a6e9b0773",
        "e9ed2721f4e1f06494e8c90684af9a2490d44a29"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 27 14:21:20 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 27 14:21:20 2010 -0800"
      },
      "message": "Merge \"Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync\""
    },
    {
      "commit": "556a6fed124adf9494bd7e1702ce0f665220e998",
      "tree": "dac1cfe03d228d8a37e2001422aa8dcaefdb4192",
      "parents": [
        "9d3ad2b296cc6a327bd1f3e1155a47b68ab60f79",
        "f091e833d339d344fbc4815bcc87ce97d8535cd8"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Wed Jan 27 09:20:19 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 27 09:20:19 2010 -0800"
      },
      "message": "Merge \"Add support for setting camera display orientation.\""
    },
    {
      "commit": "e9ed2721f4e1f06494e8c90684af9a2490d44a29",
      "tree": "83f4a6843ce5c9aac355d22f6ce810c33d95b0c3",
      "parents": [
        "26ae5b2f6644bb7514aafaead8f6af7e925c1b0f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 19 17:37:09 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jan 26 18:40:39 2010 -0800"
      },
      "message": "Fix issue 2285561: New AudioFlinger and audio driver API needed for A/V sync\n\nAdded getRenderPosition() API to IAudioFlinger to retreive number of audio frames\nwritten by AudioFlinger to audio HAL and by DSP to DAC.\n\nAdded getRenderPosition() API to AudioHardwareInterface to retreive number of audio frames\nwritten by DSP to DAC.\n\nExposed AudioTrack::getPosition() to AudioSink() to make it available to media player.\n\nRemoved excessive log in AudioHardwareGeneric.\n"
    },
    {
      "commit": "f091e833d339d344fbc4815bcc87ce97d8535cd8",
      "tree": "abf06e2d345aa1d73348c8380194633973dff6b6",
      "parents": [
        "fafd2adbaac51b801af6503a7fc80d1cc2dc3794"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 17:49:48 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jan 26 11:07:07 2010 -0800"
      },
      "message": "Add support for setting camera display orientation.\n"
    },
    {
      "commit": "1b5cf329eaecdcbf734feec3336ff029b2b8a264",
      "tree": "6569185128f882ffbf97ec3ba79aa5110405d393",
      "parents": [
        "fa289ea7af2e9f56aecd23015a12c925c694aacd"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue Jan 26 10:27:15 2010 -0800"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue Jan 26 10:28:52 2010 -0800"
      },
      "message": "Revert \"Fix failure to open AVRCP input device due to EPERM.\"\n\nThis reverts commit e6b1bbd8acca3f6e174c24cf4eb23a66db2d08a2.\n"
    },
    {
      "commit": "2b2c2e3a35287fdd9a292ab981d5708e2bbfe07c",
      "tree": "69d36b0ffbfcc97ea7702c0a47e985d347caefc2",
      "parents": [
        "80370aa83bce8287a761d090d37349112ee3e79f",
        "7c360aaf6cd95ec8cce8f97c4a314114951c1cbb"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Jan 25 18:12:47 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 25 18:12:47 2010 -0800"
      },
      "message": "am 425324e9: am e834722f: Merge \"Fix failure to open AVRCP input device due to EPERM.\" into eclair\n\nMerge commit \u0027425324e97bba75cd69bb6c81de6248529540e6fe\u0027\n\n* commit \u0027425324e97bba75cd69bb6c81de6248529540e6fe\u0027:\n  Fix failure to open AVRCP input device due to EPERM.\n"
    },
    {
      "commit": "43c0b0a1f6b025ae84013cdaa663ee892ac8e4da",
      "tree": "f09028a08d14f78b959934f1fed99c8ff3f0d900",
      "parents": [
        "5e4b03124898d84a16f4ef46c01f25f61a1af238"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 25 08:49:09 2010 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Jan 25 14:00:10 2010 -0800"
      },
      "message": "Fix issue 2378022: AudioService should direct volume control to STREAM_VOICE_CALL stream when STREAM_VOICE_CALL stream is active.\n\nModified AudioService.getActiveStreamType() so that STREAM_VOICE_CALL is selected when a track using this stream\ntype is playing.\n\nChanded isMusicActive() for a more generic isStreamActive(stream) method in AudioSystem, IAudioFlinger and AudioFlinger.\n"
    },
    {
      "commit": "88eeff5270991df178ee09ffda7ce5076c9a1e59",
      "tree": "00b0f5754d265cd28d73a02e0da7eec83aebfd1b",
      "parents": [
        "703111327eac2f3228de1f165d23fa3bf86120ba"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Jan 25 15:18:18 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Jan 25 15:20:23 2010 +0800"
      },
      "message": "Change key to KEY_SUPPORTED_JPEG_THUMBNAIL_SIZES for consistency.\n\nbug:2375986\n"
    },
    {
      "commit": "703111327eac2f3228de1f165d23fa3bf86120ba",
      "tree": "19b9bca89dc6aa5a4ed43b73a9d5ba35335d3e91",
      "parents": [
        "18b0997a7b743b57bbd22045ecc2ffb8d4a95db7",
        "5994a330ac949e7706540f22cd73d76d9f2a96cb"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 18:08:23 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 22 18:08:23 2010 -0800"
      },
      "message": "Merge \"Add support for 180/270 degrees rotation.\""
    },
    {
      "commit": "5994a330ac949e7706540f22cd73d76d9f2a96cb",
      "tree": "46250601cda14ac8a44572be4566a8ac0869701d",
      "parents": [
        "32f6863e218e19f8a3daab7e345bb4ae6587865a"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 16:30:39 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 16:30:39 2010 -0800"
      },
      "message": "Add support for 180/270 degrees rotation.\n"
    },
    {
      "commit": "519f29f5d8e097b3a35a650d92ed0ad07773c9e2",
      "tree": "5d9c75dd3ea3c752e99c2c52c73d946d2c8570f1",
      "parents": [
        "3983e26292173fb08de57b8617de9193e8f0d2f9",
        "9014726d8954a003323d65ba639b2544f8ecea2e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 22 11:52:08 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 22 11:52:08 2010 -0800"
      },
      "message": "Merge \"return an error when Surface::lock() is called while the surface is already locked.\""
    },
    {
      "commit": "9014726d8954a003323d65ba639b2544f8ecea2e",
      "tree": "490f2e83220785fb5cfa2d5ee8161d4c43e85cf8",
      "parents": [
        "edfd97c0f2e679e86699a0f6c4df65ea21ecff15"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 22 11:47:55 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 22 11:47:55 2010 -0800"
      },
      "message": "return an error when Surface::lock() is called while the surface is already locked.\n"
    },
    {
      "commit": "52e7200b6e020bba978c36e3a928493a3f2c8a92",
      "tree": "9c752d7d277ba2dfb9789763369a7373888557a2",
      "parents": [
        "d28d5be75b41fe48f486f9b83ae8685496983f5a"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 17:31:06 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 20:20:08 2010 -0800"
      },
      "message": "Add an orientation parameter for overlay, so we can do camera preview in portrait mode.\n"
    },
    {
      "commit": "edfd97c0f2e679e86699a0f6c4df65ea21ecff15",
      "tree": "45a7fb9ad27b7031e2ca5cfd26552aa10e4853a3",
      "parents": [
        "8c3b597aa7a627ab6979e58a173502cc505cb0df"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:04:56 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:29:34 2010 -0800"
      },
      "message": "fix [2324665] texture leak in surfaceflinger when using camera\n"
    },
    {
      "commit": "8c3b597aa7a627ab6979e58a173502cc505cb0df",
      "tree": "8bcb212e089d8641060c242710ef7fbc581fe46b",
      "parents": [
        "aa774c3e81d9ab685461ca0ab368086f669e4d1f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:27:30 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:27:30 2010 -0800"
      },
      "message": "fix a texture leak introduced recently.\n\ncreate the texture name once and for all for a given BufferSource\nand make sure to recreate it when we\u0027re forced to delete the texture.\n"
    },
    {
      "commit": "c81bb207c67e82f25c8ec15a533dbdc2435d83f7",
      "tree": "dafff205e6a48beb2dcdc2fc28577a31c99bf8e5",
      "parents": [
        "9110cdd7b75ea732afe1e6898a00bb162d791f58"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jan 20 19:36:49 2010 -0800"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jan 20 19:56:24 2010 -0800"
      },
      "message": "Fix failure to open AVRCP input device due to EPERM.\n\nSleep for 100us and try to open the input device again if it fails, with a\nmaximum of 10 attempts.\n\nWe need the retry logic because setting permissions on a new input device is\nracy. The init process watches for new input device (via uevent) and sets the\npermission on them in devices.c:make_device(). However at the same time\nEventHub.cpp watches for new input devices from the system_server process, and\nimmediately tries to open them. I can\u0027t see a simple way to avoid this race\ncondition.\n\nAs best as I can tell this race condition has always exisited.\nThere must have been some timing change that happened recently that causes us\nto hit this race condition much more often. See repro notes in referenced bug.\n\nBug: 2375632\n"
    },
    {
      "commit": "5fdea8d5b0a015433e01849a6c862c147e16346c",
      "tree": "aa64093317df178cde7b8252e600039826e7f7bd",
      "parents": [
        "ecc99c003b4aca7d7d2f268f927558db4cbddfe1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:31:53 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:31:53 2010 -0800"
      },
      "message": "fix [2363362] [Sapphire] Corrupted raw picture displayed during snapshot\n\nhandled all cases where the scale factor of a video is out of bounds of\nsupported scale factors in copybit.\n"
    },
    {
      "commit": "ecc99c003b4aca7d7d2f268f927558db4cbddfe1",
      "tree": "ce0d4257ccfca6dad1867d7e7e83ca85475cd51e",
      "parents": [
        "42d095aaa54a762ef74d219854aca8e1a7c6f5f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:56:07 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:07:44 2010 -0800"
      },
      "message": "part of fix for [2363362] [Sapphire] Corrupted raw picture displayed during snapshot\n\nmake sure to fallback properly to software when copybit operation fails.\nwith this change, the preview image will at least be displayed in b\u0026w\n(since GL doesn\u0027t support the yuv format). This would also fix\n2363506, but that one is now handled more cleanly.\n"
    },
    {
      "commit": "42d095aaa54a762ef74d219854aca8e1a7c6f5f6",
      "tree": "7a6fb58d690b4ac586406a259fcd5a19d5469b3b",
      "parents": [
        "f221217a67ade328fba844f9c2c0a3b83d013cac",
        "1faed6608655409cdd9c703cdbceedc03cb40bde"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:44:53 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 20 13:44:53 2010 -0800"
      },
      "message": "Merge \"fix [2363506] [Sapphire] Video playback broken\""
    },
    {
      "commit": "1faed6608655409cdd9c703cdbceedc03cb40bde",
      "tree": "d1322035bc57f859960ccefd2a4075a96ff32986",
      "parents": [
        "084e7c4ee8d4c6d54561347e2fe76bcdbd9f19da"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:24:14 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:24:14 2010 -0800"
      },
      "message": "fix [2363506] [Sapphire] Video playback broken\n\ndon\u0027t try to use copybit for incompatible buffers\n"
    },
    {
      "commit": "da3529b468404e160c1b98a94d5d31f8234d0ad1",
      "tree": "eca7919c6b84925a0195532834cb9a1c058104d2",
      "parents": [
        "6c3067a055072909219e9eadbe4b146bc2451130"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Dec 10 01:03:50 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Jan 13 09:25:13 2010 -0800"
      },
      "message": "Create base class for audio policy manager.\n\nFirst implementations of audio policy manager in Eclair branch have shown that most code is common to all platforms.\nCreating AudioPolicyManagerBase base class will improve code maintainability and readability.\n\nAudio policy manager code for platforms using generic audio previously in AudioPolicyManagerGeneric is replaced by AudioPolicyManagerBase.\nAudio policy manager test code previously in AudioPolicyManagerGeneric is moved to AudioPolicyManagerBase.\n\nAlso added a wake lock for delayed commands in AudioPolicyService.\n"
    },
    {
      "commit": "8a468f2fd6183d5a6e512aafbdaaad4d1b495390",
      "tree": "6774d0fca90c9e8012832484506d33e5f736248e",
      "parents": [
        "2671d4eb6530166ea04064e43167281ecd53e88a",
        "bf41fc2be70c37d4ec31fc904e76621f664957bb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 22 10:01:39 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 22 10:01:39 2009 -0800"
      },
      "message": "am 0c5cc224: am d20a55af: Merge change Iccfa50fe into eclair\n\nMerge commit \u00270c5cc224b052654ee38d39effce427a47697481b\u0027\n\n* commit \u00270c5cc224b052654ee38d39effce427a47697481b\u0027:\n  Fix issue 2323920: Notification \u0026 A2DP audio stutter.\n"
    },
    {
      "commit": "7e2aad1e27fd52292d5b4dade6f411b3fc5a5e8a",
      "tree": "9d4864f4a6ca7ba7f575a0e3db96319bb52fa7ff",
      "parents": [
        "c717b34fa141a4fe8c6af1ad8aa367576cf85c6d"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Dec 18 05:47:48 2009 -0800"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Dec 22 09:06:46 2009 -0800"
      },
      "message": "Fix issue 2323920: Notification \u0026 A2DP audio stutter.\n\nModified AudioFlinger duplicating output thread so that audio tracks are not mixed until both outputs (A2DP and hardware) have exited standby mode. This avoids to have one output far ahead of the other and audio frames dropped because the compensation mechanism cannot keep up.\nAlso calculate the maximum wait time in OutputTrack::write() based the on smallest frame count of all output threads instead of the frame count of the thread the OutputTrack is connected to. This avoids starving the thread with the smallest frame count by waiting too long on the other thread.\nSince the frame count was reduced on hardware output to reduce latency the difference between A2DP and hardware outputs frame counts had become problematic.\nAlso increased the number of overflow buffers to cope with bigger timing differences among outputs.\n"
    },
    {
      "commit": "839604c7694127cde6b5af226aa4c44c3dddc177",
      "tree": "62768835ee4ccba96b8dc23f365d8d6201081fec",
      "parents": [
        "eb301e0ace03f69e79c9be204fd52182f774f85e",
        "f5430db059be3e771c004d0ada594bf8820d0517"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 11 01:16:08 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 11 01:16:08 2009 -0800"
      },
      "message": "am f9b0e826: fix [2269582] [TOP-10][Passion_1506][APT:Camera]Sometimes camera preview screen is truncated after launching and back to home screen by home key repeatedly\n\nMerge commit \u0027f9b0e826689cca5ecbd40aa49f3ea7f7c73ad2a2\u0027 into eclair-mr2\n\n* commit \u0027f9b0e826689cca5ecbd40aa49f3ea7f7c73ad2a2\u0027:\n  fix [2269582] [TOP-10][Passion_1506][APT:Camera]Sometimes camera preview screen is truncated after launching and back to home screen by home key repeatedly\n"
    },
    {
      "commit": "f5430db059be3e771c004d0ada594bf8820d0517",
      "tree": "e291c558ae63d711f9570038ce2dd78ccdef3874",
      "parents": [
        "f414887b3c7af00a66c7f8b105dfd9fd2cb3ec2f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 11 00:56:10 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 11 00:56:10 2009 -0800"
      },
      "message": "fix [2269582] [TOP-10][Passion_1506][APT:Camera]Sometimes camera preview screen is truncated after launching and back to home screen by home key repeatedly\n\nWhen a surface is removed from the screen while it holds a \"freeze lock\", the\nrelease of that lock happens in the destructor as a \"safety net\". However, it\ndoesn\u0027t trigger an update at that point.\n\nMake sure that \"freeze locks\" are released from the transaction at the point\na surface is removed from the screen (if it\u0027s not on screen, it shouldn\u0027t\nprevent the screen to redraw, and therefore cannot hold a freeze lock).\nThe refresh corresponding to that transaction will pick it up as soon as possible.\n"
    },
    {
      "commit": "3fb6f499f828efd1f696912202c726a2c6f04c42",
      "tree": "8dd322bffef48a0cad5a7965b7b14d30af521afc",
      "parents": [
        "2c05ff5518f07889af1446c99d97198dc92e82cc",
        "8f03b47432f007b1fb3438608361ebf4e3a1310b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 10 19:48:05 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 10 19:48:05 2009 -0800"
      },
      "message": "am 083a557c: fix [2319255] crash in openGL : from the media recorder stress test.\n\nMerge commit \u0027083a557c25e0032bc4900f335b6643d0badd09ce\u0027 into eclair-mr2\n\n* commit \u0027083a557c25e0032bc4900f335b6643d0badd09ce\u0027:\n  fix [2319255] crash in openGL : from the media recorder stress test.\n"
    },
    {
      "commit": "2c05ff5518f07889af1446c99d97198dc92e82cc",
      "tree": "f00cf8b8506854939deac5e1390fd2a398ae215c",
      "parents": [
        "f4f3a4680744a90a0835d6594093dfef6bfcfc97",
        "ccb5b89029ca3f653fbfa32a7b6ed82bf227541c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 10 18:05:19 2009 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Dec 10 18:05:19 2009 -0800"
      },
      "message": "Merge change I6478884a into eclair-mr2\n\n* changes:\n  Add string resource type inspection\n"
    },
    {
      "commit": "b2bf11e3894b6da45a63025f21c9fa51f7aad98b",
      "tree": "104ff11f3a4d220f6da0d61b5e06246e5a29acf2",
      "parents": [
        "1aa171322a1818e4655944ac1a0e75f1348f1453",
        "c5e181f8b347ad89874e0c6c7d2eea8d0465a478"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 10 17:40:41 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 10 17:40:41 2009 -0800"
      },
      "message": "am 76169da0: fix [2315900] Monochrome camera preview screen after launching camera\n\nMerge commit \u002776169da0e84b0fcf621aeac6141af3ee85bc7c1e\u0027 into eclair-mr2\n\n* commit \u002776169da0e84b0fcf621aeac6141af3ee85bc7c1e\u0027:\n  fix [2315900] Monochrome camera preview screen after launching camera\n"
    },
    {
      "commit": "495c1be36368ea70b2ce9541531273dd29fcac0d",
      "tree": "651e59f069e8d9aab8b1bf89ecd3c26ef2d1a9fd",
      "parents": [
        "39dd1631831d5aa2974c1161c3f8782f3e9c2f0b",
        "8d96b7af4bb94aa1e554389c9bd3ab18106396f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 10 16:43:09 2009 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Dec 10 16:43:09 2009 -0800"
      },
      "message": "am d8c752ef: Merge change Ib548dbb2 into eclair\n\nMerge commit \u0027d8c752ef74bc6d8b412defe35caf1a19be15eb8b\u0027 into eclair-mr2\n\n* commit \u0027d8c752ef74bc6d8b412defe35caf1a19be15eb8b\u0027:\n  improve video performance to minimize the tearing effect seen in 720p movies\n"
    },
    {
      "commit": "8f03b47432f007b1fb3438608361ebf4e3a1310b",
      "tree": "c2971689ed314285bc32d7b226e51cf364e9373f",
      "parents": [
        "c0012deacc14f871062ebc1756d5290d8a8b5ad3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 10 15:52:29 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 10 15:59:08 2009 -0800"
      },
      "message": "fix [2319255] crash in openGL : from the media recorder stress test.\n\nnever call eglCreateImageKHR() with a NULL native buffer, which can\nhappen in OOM conditions.\n"
    },
    {
      "commit": "ccb5b89029ca3f653fbfa32a7b6ed82bf227541c",
      "tree": "e9309127a1fd7077222e8068817bf94829dd2736",
      "parents": [
        "07b4185c7494744d0886115c7d8a6a389210bea3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Dec 10 14:20:15 2009 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Dec 10 14:22:08 2009 -0800"
      },
      "message": "Add string resource type inspection\n\nAllows \"aapt dump --values resource\" to print out whether a string in a\nResStringPool is in UTF-8 or UTF-16 encoding.\n\nChange-Id: I6478884a70a3b46fee862dece6cb33454fc34843\n"
    },
    {
      "commit": "c5e181f8b347ad89874e0c6c7d2eea8d0465a478",
      "tree": "b637cb7ac5eabf5897345fbf7c39ce68ff9e6edb",
      "parents": [
        "cb94f70d5cfecf69f4f470497703befb270f6565"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 09 14:32:56 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 09 15:26:29 2009 -0800"
      },
      "message": "fix [2315900] Monochrome camera preview screen after launching camera\n\nthis was introduced by a recent change. when we try to figure out the size of\nthe yuv-\u003ergb temporary buffer, the output resolution has not been computed yet\nand an invalid buffer size is used. most of the time the allocation fails\nand the system reverts to \"standard\" GL will uses onle the Y plane.\n\nthe allocation of the temporary buffer is moved to onDraw(), the first\ntime it is called, by that time, the window is positioned properly.\n"
    }
  ],
  "next": "d0aeccebe2d1539a9f0b5f19beb6c272a60d3cc6"
}
