)]}'
{
  "log": [
    {
      "commit": "536923df75eb53a2c27e889526b200e170e45492",
      "tree": "663afb55a41a2c8a5c9284f10b7ba0075ab7793a",
      "parents": [
        "c378dab087bc2fa6de339fd443194f8409b5df46"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Tue May 18 13:35:45 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Tue May 18 13:35:45 2010 -0700"
      },
      "message": "Split ScriptC Lib into CL, GL, and basic.\n\nChange-Id: Iadab35f2a967a1afd7a2fd13216d0a7acf4b6a50\n"
    },
    {
      "commit": "c378dab087bc2fa6de339fd443194f8409b5df46",
      "tree": "1e56a1e856e01955abb8a993ce226cbae4191675",
      "parents": [
        "1de0b87168837cfcd9318bec5c97d2e7d78d3293"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Mon May 17 17:28:12 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Mon May 17 17:28:12 2010 -0700"
      },
      "message": "Remove excess logging.\n\nChange-Id: Ib4af6428c5fd87c3891f41eca6ca43d84f0edc97\n"
    },
    {
      "commit": "1de0b87168837cfcd9318bec5c97d2e7d78d3293",
      "tree": "6b6cd8ea2a55597e3fd3573072cb85af892be731",
      "parents": [
        "38a9544825c6f3482237f9e29cddee58ebc093c3"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Mon May 17 14:55:34 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Mon May 17 14:55:34 2010 -0700"
      },
      "message": "Remove more pieces of setRoot.  Add pointer to allocation lookup for scripts.\n\nChange-Id: I2c3075d2056f02bb834bfad403dc72da991f3156\n"
    },
    {
      "commit": "38a9544825c6f3482237f9e29cddee58ebc093c3",
      "tree": "a363ec804ba783a89fc3c8415e0adcdd6f40e2c6",
      "parents": [
        "c324d3365a5df0519798c20709830d7965059375",
        "f62b6ff9da05e8f9f6f2d39d2187b39cd16d934b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 17 09:22:01 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 17 09:22:01 2010 -0700"
      },
      "message": "am f62b6ff9: am eb8f850d: Fix issue 2553359: Pandora does not work well with Passion deskdock / Cardock.\n"
    },
    {
      "commit": "e1d07bded7c443f70e3adab15cd3d10ffc0a4000",
      "tree": "f6f48bb837885a0e96231447c5a9296fca5fd8eb",
      "parents": [
        "c3848824f85e774b582758b39df2f739007423ad",
        "8dc80423b62186b80e2c48db147d203cff6f17eb"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 17 09:21:13 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 17 09:21:13 2010 -0700"
      },
      "message": "am 8dc80423: am ae7ca4c3: Fix build error.\n"
    },
    {
      "commit": "c3848824f85e774b582758b39df2f739007423ad",
      "tree": "4726844e97304e8f340e9bbd9e360e295e8e0a84",
      "parents": [
        "ebaa64a7ad66436a56f7a6df2357456e7ec57ddc",
        "a3b5ff075fd055213bde7f4e62dee6e5c88437ba"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 17 09:21:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 17 09:21:03 2010 -0700"
      },
      "message": "am a3b5ff07: am e339c5ed: Add camera focus distances API.\n"
    },
    {
      "commit": "2a466809dffb33314dcb8d791108c8de23104e46",
      "tree": "5320aed249cb93e0af9429494260003d98dfeba2",
      "parents": [
        "9eff99e9d54aa8238a803f4410b5883e47334fd5",
        "2ff19fa9e5920e610074f3fb17d7fc1460fde0a2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 17 09:20:49 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 17 09:20:49 2010 -0700"
      },
      "message": "am 2ff19fa9: am 4606d5dd: Merge \"fix uninitialized variable in DisplayHardware\" into kraken\n"
    },
    {
      "commit": "eb8f850d0b7e53956e917fd9645f808c1a09bc88",
      "tree": "07b5194b348dcd40b46fbf049066e45320099fdb",
      "parents": [
        "533844d9688f7c9269372f97db17c9bc4d19c04b"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 03:26:45 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon May 17 02:23:47 2010 -0700"
      },
      "message": "Fix issue 2553359: Pandora does not work well with Passion deskdock / Cardock.\n\nThe problem is due to a too big difference between the buffer size used at the hardware interface and at the A2DP interface.\nWhen no resampling occurs we don\u0027t notice problems but the timing is very tight. As soon as resampling is activated, the AudioTrack underruns.\nThis is because the AudioTrack buffers are not resized when moving the AudioTrack from hardware to A2DP output.\nThe AudioTrack buffers are calculated based on a hardware output buffer size of 3072 bytes. Which is much less than the A2DP output buffer size (10240).\n\nThe solution consists in creating new tracks with new buffers in AudioFlinger when the A2DP output is opened\ninstead of just transfering active tracks from hardware output mixer thread to the new A2DP output mixer thread.\nTo avoid synchronization issues between mixer threads and client processes, this is done by invalidating tracks\nby setting a flag in their control block and having AudioTrack release the handle on this track (IAudioTrack)\nand create a new IAudioTrack when this flag is detected next time obtainBuffer() or start() is executed.\n\nAudioFlinger modifications:\n- invalidate the tracks when setStreamOutput() is called\n- make sure that notifications of output opening/closing and change of stream type to output mapping are sent synchronously to client process.\nThis is necessary so that AudioSystem has the new stream to output mapping when the AudioTrack detects the invalidate flag in the client process.\nPreviously their were sent when the corresponding thread loop was executed.\n\nAudioTrack modifications:\n- move frame count calculation and verification from set() to createTrack() so that is is updated every time a new IAudioTrack is created.\n- detect track invalidate flag in obtainBuffer() and start() and create a new IAudioTrack.\n\nAudioTrackShared modifications\n- group all flags (out, flowControlFlag, forceReady...) into a single bit filed to save space.\n\nChange-Id: I9ac26b6192230627d35084e1449640caaf7d56ee\n"
    },
    {
      "commit": "ae7ca4c32cb37ea82e77ad1462fbfcd4d6dfabd3",
      "tree": "e76e4f72db70f1d1291f6fa0ae334545906617c5",
      "parents": [
        "e339c5edbebedf446581f18ad70214007309bf4b"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat May 15 13:05:04 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat May 15 13:06:19 2010 +0800"
      },
      "message": "Fix build error.\n\nOriginal name INFINITY conflicts with the macro in math.h.\n\nChange-Id: I9845ed84fca17813dd971239a902cc1e0bad1e3e\n"
    },
    {
      "commit": "e339c5edbebedf446581f18ad70214007309bf4b",
      "tree": "7d03e881cb3e1300aef948eafb85396a58d38e1c",
      "parents": [
        "aef87aa90cf3a6cf9098477683b07994697c45fe"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu May 13 19:31:02 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat May 15 12:40:54 2010 +0800"
      },
      "message": "Add camera focus distances API.\n\nApplications can use this API to estimate the distance\nbetween the subject and the camera.\n\nbug:1955650\nChange-Id: Ie6c8ea4971759cab6c9bcdda2c5ceb5925791c27\n"
    },
    {
      "commit": "4606d5dd95b3dcf3a874f54e6d3d8d1ee95fcdca",
      "tree": "842125fd1c897093f236329f2407381fc657091b",
      "parents": [
        "5d75a181884ad8dbcdf238af422e5c38467b4410",
        "51c66aa4ce2797e21e880824e08de3b1228b3b0a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 14 18:35:34 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 14 18:35:34 2010 -0700"
      },
      "message": "Merge \"fix uninitialized variable in DisplayHardware\" into kraken"
    },
    {
      "commit": "51c66aa4ce2797e21e880824e08de3b1228b3b0a",
      "tree": "aa072b9a1cee264d661fc1e6c75fbe1f0f2ed624",
      "parents": [
        "d95266c6a8f059770b1799958530156a2f537468"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 14 18:33:30 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 14 18:33:30 2010 -0700"
      },
      "message": "fix uninitialized variable in DisplayHardware\n\nthis fixes the issue where the display is all messed-up sometimes.\n\nChange-Id: I20be91b5166bfff0c6d353a777351842c9df8e95\n"
    },
    {
      "commit": "a250f20b02c85fd50dd0d7fb1290e7a95ea2893f",
      "tree": "0499d1c824d4f3e21f1b8c35687048c5f66aca21",
      "parents": [
        "14d8db969bb01e51b67c4c38ae2bb44baf25fe49",
        "ec67275e5f7edb2fe4e6f76ab8b4e01e8990bc92"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 16:53:05 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 14 16:53:05 2010 -0700"
      },
      "message": "Merge \"Delete legacy setDefine API.\""
    },
    {
      "commit": "ec67275e5f7edb2fe4e6f76ab8b4e01e8990bc92",
      "tree": "64f9f7040afae6890e966387cef6f848d18f7349",
      "parents": [
        "b42315d37ab22e64ef88d3aed38ed75fd7071eed"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 16:51:22 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 16:51:22 2010 -0700"
      },
      "message": "Delete legacy setDefine API.\n\nChange-Id: I1bae13533ab9efea3d3b0ebb6a3711343e922f8a\n"
    },
    {
      "commit": "c3ae11271dfe253de141608985ea49ee2cf830f4",
      "tree": "944a07c0e7ebaff1f41e2b8e7972f8d429880251",
      "parents": [
        "71491ab2456182072589997e6ccd309c9b4acb5f",
        "b42315d37ab22e64ef88d3aed38ed75fd7071eed"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 16:30:50 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 14 16:30:50 2010 -0700"
      },
      "message": "Merge \"Delete old createFromClass methods. It no longer makes sense to create type info from Java since this cannot be exported to scripts.  The new flow is in the opposite direction.\""
    },
    {
      "commit": "b42315d37ab22e64ef88d3aed38ed75fd7071eed",
      "tree": "83bf21d63651d54b4c30bfa6badbd854d000460e",
      "parents": [
        "f603d212552485c634e25f3556f847dc2b022bd5"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 16:29:20 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 16:29:20 2010 -0700"
      },
      "message": "Delete old createFromClass methods.\nIt no longer makes sense to create type info from Java since this\ncannot be exported to scripts.  The new flow is in the opposite direction.\n\nChange-Id: I9b46e3f57abf84c01326bd9b9b834f3ff0f7c504\n"
    },
    {
      "commit": "71491ab2456182072589997e6ccd309c9b4acb5f",
      "tree": "5f318217c3bb78c6dfeae7688a124bdcadb673a0",
      "parents": [
        "ca4d143146a225a73ef402ea32f82edafc6ce2b7",
        "963b0cdbaf206050fb537c21641c0ee26a48611e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri May 14 16:11:43 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 14 16:11:43 2010 -0700"
      },
      "message": "Merge \"resolved conflicts for merge of cbf26fd3 to master\""
    },
    {
      "commit": "ca4d143146a225a73ef402ea32f82edafc6ce2b7",
      "tree": "22f44d17bd364fb7c11c1cfc70912c309e7de729",
      "parents": [
        "a6418d8bc98c941633fae14afe0140a40b9ce711",
        "f603d212552485c634e25f3556f847dc2b022bd5"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 16:00:04 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 14 16:00:04 2010 -0700"
      },
      "message": "Merge \"Change RS to use the passed surface size rather than EGL size. Its possible that during a resize the EGL information could be stale so caching this is bad.  The surface size should always be correct.\""
    },
    {
      "commit": "963b0cdbaf206050fb537c21641c0ee26a48611e",
      "tree": "60260bc8d86a9dd32b09c341d6b99622610d32b7",
      "parents": [
        "aa8da3dc405dca80c6aff71a7c17f883edea2814",
        "cbf26fd3bc2dc0d6377daf65b498ca11b96e601c"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri May 14 15:49:42 2010 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri May 14 15:49:42 2010 -0700"
      },
      "message": "resolved conflicts for merge of cbf26fd3 to master\n\nChange-Id: I1feb7266c1d5cdebbfb8b8fa0d87d986953a20b6\n"
    },
    {
      "commit": "f603d212552485c634e25f3556f847dc2b022bd5",
      "tree": "a2112e01bd2f7d72465717a153216a6d8b6e63f4",
      "parents": [
        "54db59c3594e887a412a24713fc3daa1c2404593"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 15:30:29 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Fri May 14 15:30:29 2010 -0700"
      },
      "message": "Change RS to use the passed surface size rather than EGL size.\nIts possible that during a resize the EGL information could be stale so\ncaching this is bad.  The surface size should always be correct.\n\nChange-Id: Ifd479e1ea70b1cada1a8690c7c82e91aa391b685\n\nConflicts:\n\n\tlibs/rs/rsProgramStore.cpp\n\tlibs/rs/rsProgramStore.h\n"
    },
    {
      "commit": "bfb776acf20652801b88a53f362cb4e0ac517515",
      "tree": "f48b9d737940bbef0a0419ff8d32ae94e3fa80eb",
      "parents": [
        "7450c02a35d7c1f8580f906d6f1c1a11bc5c4fd0",
        "ce2cbe4c9605bfc4843968ff6e9746d23643f031"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri May 14 15:28:09 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 14 15:28:09 2010 -0700"
      },
      "message": "Merge \"Get rid of warnings when compiled with -Wformat-security\" into kraken"
    },
    {
      "commit": "aa8da3dc405dca80c6aff71a7c17f883edea2814",
      "tree": "6756be0a6d844ab2fd8afb3c8427012165f41896",
      "parents": [
        "3e4fd9ea19c16050ef78ea55138a114798033f65",
        "a8e0f75b7fe99dd6672bfc958734f4558905c3aa"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 15:15:36 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 14 15:15:36 2010 -0700"
      },
      "message": "am a8e0f75b: am 7450c02a: am 900b6157: merge from open-source master\n"
    },
    {
      "commit": "7450c02a35d7c1f8580f906d6f1c1a11bc5c4fd0",
      "tree": "220d07ff6bd81691db9f8089e2f44c520845d9b5",
      "parents": [
        "b42bc06675174d58dabc5efc032cfc43dac10393",
        "900b6157f5dee2ed7b2c73cf320b2baf293230ff"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 15:12:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 14 15:12:17 2010 -0700"
      },
      "message": "am 900b6157: merge from open-source master\n\nMerge commit \u0027900b6157f5dee2ed7b2c73cf320b2baf293230ff\u0027 into kraken\n\n* commit \u0027900b6157f5dee2ed7b2c73cf320b2baf293230ff\u0027:\n  Only hold a weak pointer on SurfaceComposerClients\n"
    },
    {
      "commit": "900b6157f5dee2ed7b2c73cf320b2baf293230ff",
      "tree": "15fabaeae78d67b8ee40afa76c5fabff20582d2b",
      "parents": [
        "fb580943133d3e9ad3e342b8038726b04686f283",
        "5b9fb5ab7ee81fc9b22f9aaea478db65e9b56c43"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 15:04:52 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri May 14 15:04:52 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: I0249c6d796b35af9ba08cbccd463a1f5cf779ecd\n"
    },
    {
      "commit": "84498a7ab57dd0ffc80bae600ff2b2f1c563c68d",
      "tree": "496205be0b7dc40ecf018a0047d19b70b5d9285c",
      "parents": [
        "060341fa2d36bfcdf5b17890569afebd442aa244",
        "9c192e44c2b6ac00d9798ab35ba30a477535b3a5"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri May 14 12:08:24 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 14 12:08:24 2010 -0700"
      },
      "message": "am 9c192e44: am 29f5d9b6: Merge \"Fix deadlock if the last reference of ICameraClient is removed in ICamera::connect()\" into kraken\n"
    },
    {
      "commit": "29f5d9b61da0f496fc243edfc838f09a9b5c6eaf",
      "tree": "f6e4bbf707f7a79ad77cda3f471336a6babe4f78",
      "parents": [
        "6c034325a856f4cfb1e8b5bc97adbc7f9dffd0a2",
        "553447b8ff949618f299bba38ef04c2b6740f1d3"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri May 14 12:05:06 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 14 12:05:06 2010 -0700"
      },
      "message": "Merge \"Fix deadlock if the last reference of ICameraClient is removed in ICamera::connect()\" into kraken"
    },
    {
      "commit": "03bb2b9651c466c2cc7143bfeda4f2344e33697d",
      "tree": "4d0ecfcba96f310670a20b0398d7926367b02705",
      "parents": [
        "7a3784976159f6c3bb0d963717dde4273b6a372f",
        "10fde074f256d0a72ea62ad9a7edd919e36e1461"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 09:42:57 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri May 14 09:42:57 2010 -0700"
      },
      "message": "am 10fde074: am 9f0810e8: Merge \"AudioFlinger: rename variables to clarify reference to track channel count or channel mask\" into kraken\n"
    },
    {
      "commit": "b0a0147f344a2d26d86be2b1bdf5bfde50ef86c2",
      "tree": "8820f5f5979f699ef5903fe65f4fe3541bff5371",
      "parents": [
        "bfcbd9a9e1bc3a8d721e906e4c621f85104c7d93"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 05:45:46 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri May 14 05:45:46 2010 -0700"
      },
      "message": "AudioFlinger: rename variables to clarify reference to track channel count or channel mask\n\nSome variables and structure members should be renamed to reflect the fact that they contain the\nnumber of channels in a track (channel count) or the actual channels used by a track (channel mask).\nEspecially member \"channels\" of track control block (struct audio_track_cblk_t) is actually the\nnumber of channels (channels count).\n\nChange-Id: I220c8dede9fc00c8a5693389e790073b6ed307b8\n"
    },
    {
      "commit": "553447b8ff949618f299bba38ef04c2b6740f1d3",
      "tree": "0b9f8777a5f5253525318cbe58514c3103117571",
      "parents": [
        "ffd104a903651ca1c64e662df8465c9490da4144"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu May 13 15:14:24 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri May 14 11:34:20 2010 +0800"
      },
      "message": "Fix deadlock if the last reference of ICameraClient is removed in\nICamera::connect()\n\nChange-Id: I34ab3e4f07435c62168175e9bb159022c8fb99f4\n"
    },
    {
      "commit": "54db59c3594e887a412a24713fc3daa1c2404593",
      "tree": "cd78b514370d0e9b60e3711417395601824e8270",
      "parents": [
        "f5523645a97643874840e029b4a7e9a4e4220806"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Thu May 13 18:30:11 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Thu May 13 18:35:01 2010 -0700"
      },
      "message": "Rename ProgramFragmentStore to ProgramStore.\n\nChange-Id: Ia8ad9ac856944838ced38a2f1e8f07387050bdfd\n"
    },
    {
      "commit": "ce2cbe4c9605bfc4843968ff6e9746d23643f031",
      "tree": "9c9fea0a2960c9975b48bf45d3f95dd7fde364b1",
      "parents": [
        "8b518577ceba9746fe5566274bd9deb09d450779"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu May 13 14:46:27 2010 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu May 13 14:46:27 2010 -0700"
      },
      "message": "Get rid of warnings when compiled with -Wformat-security\n\nChange-Id: I63c3bf786bbe7a0276624e71a4ba80c4a9aaa4bb\n"
    },
    {
      "commit": "f6860f1979b30646e57d41c214b3a60e401abcd1",
      "tree": "8b3496be880697f1a8ff3d4314a2b7426672fde3",
      "parents": [
        "05a5205b935f6a3fc1a1379a3c4d1bb54a81cf81",
        "0c677318b54581d488ac6510b6b68e7772d7ab5a"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Thu May 13 12:19:28 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 13 12:19:28 2010 -0700"
      },
      "message": "Merge \"Add missing bindProgramRaster to scriptC_lib.\""
    },
    {
      "commit": "6dd5f73e8c4c6380a67ccc166477a82993865562",
      "tree": "60c263511392c37bf68d02b158a4c353a40a9e00",
      "parents": [
        "bd62a9eb6e517676a312534a4dca2918bf1c85c5",
        "06a237b0bdc675c016a2618d0d94ce79963d8d9e"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 13 09:19:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 13 09:19:09 2010 -0700"
      },
      "message": "am 06a237b0: am ca20104a: Merge \"Fix issue 2678048: binder death detection in AudioFlinger is broken.\" into kraken\n"
    },
    {
      "commit": "bd62a9eb6e517676a312534a4dca2918bf1c85c5",
      "tree": "1383b7ac2e40bcaf580f983baa750a64786f8310",
      "parents": [
        "193ca06e062cf95996a759c40f24957632989d14",
        "76a956192bd397ac402fc9503f312503ab9dd849"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu May 13 09:19:05 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 13 09:19:05 2010 -0700"
      },
      "message": "am 76a95619: am c247328d: Merge \"Several fixes in AudioDumpInterface:\" into kraken\n"
    },
    {
      "commit": "ca20104a3ab0c10d570080e3d3b4ff94fedf60ee",
      "tree": "f6320d88fe69d960de3c53dfc3e8e86ffcd49cb3",
      "parents": [
        "c247328dfd86f7967846ffceb5ef99405dd22ab0",
        "4f0f17d2f10ceb22c2e23b593bab434fc899ecb7"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 12 23:40:28 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 12 23:40:28 2010 -0700"
      },
      "message": "Merge \"Fix issue 2678048: binder death detection in AudioFlinger is broken.\" into kraken"
    },
    {
      "commit": "c247328dfd86f7967846ffceb5ef99405dd22ab0",
      "tree": "c03fbe9f822918ebd89c961205bee688dd9ffa99",
      "parents": [
        "c195965893da2003a3da9936391c27db05d47dd8",
        "fc1246640f1ac7f562c6a05ab34d7847ff8cca05"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 12 23:21:42 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 12 23:21:42 2010 -0700"
      },
      "message": "Merge \"Several fixes in AudioDumpInterface:\" into kraken"
    },
    {
      "commit": "0c677318b54581d488ac6510b6b68e7772d7ab5a",
      "tree": "1ff08ebc520ee7e6c8fa7c8d034a8c41d7c5d3f8",
      "parents": [
        "9685327c35ff578ef82672e5692ca3f3e0ee3c23"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Wed May 12 18:26:52 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Wed May 12 18:26:52 2010 -0700"
      },
      "message": "Add missing bindProgramRaster to scriptC_lib.\n\nChange-Id: I06a7075a94ef907478f986b59ded4ff3e2766585\n"
    },
    {
      "commit": "b81f6c4c3fa044ad30e252906faa6cfb90b68d5b",
      "tree": "cb5170f638ce6b8df580fd128824e37f29edb289",
      "parents": [
        "55c97878c0c42ea59d2068a18a8e87ab376b7208",
        "19f64314c676bbc7d5f7b90802c79fbe5d037dd2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 18:04:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 18:04:39 2010 -0700"
      },
      "message": "am 19f64314: am 2f0e6753: Merge \"SharedBufferStack now can grow up to 16 buffers.\" into kraken\n"
    },
    {
      "commit": "55c97878c0c42ea59d2068a18a8e87ab376b7208",
      "tree": "b65acd1aa707f9c0aee0e12195613593b16109f2",
      "parents": [
        "74c932d9739f8c9cf119b512fa475cfc7748794e",
        "e0630ae34e2232a420d66a3a7ae12d0b64cefea5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 18:04:33 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 18:04:33 2010 -0700"
      },
      "message": "am e0630ae3: am 6a70cb8a: Merge \"Refactor some code in surfaceflinger in preparation of upcoming changes\" into kraken\n"
    },
    {
      "commit": "74c932d9739f8c9cf119b512fa475cfc7748794e",
      "tree": "61b2cfa941536bd075b4ee0610a32fc8667f07e8",
      "parents": [
        "0dc407f9a62873a7f7fa301b499d981cf99e7118",
        "32286409cf52d729ff7035fe074c46787d7aa214"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 18:04:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 18:04:28 2010 -0700"
      },
      "message": "am 32286409: am ca64ed6a: Merge \"remove the \"memcpy\" hack\" into kraken\n"
    },
    {
      "commit": "2f0e6753d6c0d67e0e133105bf3fdc8596749412",
      "tree": "b3733f32dd6d0cb954db0c17c8b6d17ad2460b61",
      "parents": [
        "6a70cb8a3813a60b92618892188bc4e2f9e0ab2c",
        "59751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 17:36:46 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 12 17:36:46 2010 -0700"
      },
      "message": "Merge \"SharedBufferStack now can grow up to 16 buffers.\" into kraken"
    },
    {
      "commit": "6a70cb8a3813a60b92618892188bc4e2f9e0ab2c",
      "tree": "92f3ef4bf2cda78827fa0df16f11f0d62cefc0df",
      "parents": [
        "ca64ed6a8114f08e153b065cf429d006ab210f2b",
        "9f2c4fd9a14ea79e4cbbd3ab8925794711a6411c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 17:35:24 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 12 17:35:24 2010 -0700"
      },
      "message": "Merge \"Refactor some code in surfaceflinger in preparation of upcoming changes\" into kraken"
    },
    {
      "commit": "ca64ed6a8114f08e153b065cf429d006ab210f2b",
      "tree": "18ae651222e0298b1e56809506fd1644e05c0ecc",
      "parents": [
        "8b518577ceba9746fe5566274bd9deb09d450779",
        "aca2ee8a7045e6b3d0399736d7d1adf7e1dbf825"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 17:35:12 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 12 17:35:12 2010 -0700"
      },
      "message": "Merge \"remove the \"memcpy\" hack\" into kraken"
    },
    {
      "commit": "59751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4b",
      "tree": "a1f1d7119a8109d06cfc2f24b26284ff7627de7a",
      "parents": [
        "9f2c4fd9a14ea79e4cbbd3ab8925794711a6411c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 07 15:58:44 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 17:28:20 2010 -0700"
      },
      "message": "SharedBufferStack now can grow up to 16 buffers.\n\nthere is a new resize() api, which currently only allows growing.\n\nChange-Id: Ia37b81b73be466d2491ffed7f3a23cd8e113c6fe\n"
    },
    {
      "commit": "9f2c4fd9a14ea79e4cbbd3ab8925794711a6411c",
      "tree": "59ef7201919232e3fe9b0bd044339608db459128",
      "parents": [
        "aca2ee8a7045e6b3d0399736d7d1adf7e1dbf825"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 10 20:06:11 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 17:26:22 2010 -0700"
      },
      "message": "Refactor some code in surfaceflinger in preparation of upcoming changes\n\nthe new TextureMagager class now handle texture creation and upload\nas well as EGL image creation and binding to GraphicBuffers. This is\nused indirectly by Layer and directly by LayerBuffer\n\nthe new BufferManager class handles the set of buffers used for a\nLayer (Surface), it abstracts how many buffer there is as well as\nthe use of EGLimage vs. regular texture ops (glTexImage2D).\n\nChange-Id: I2da1ddcf27758e6731400f6cc4e20bef35c0a39a\n"
    },
    {
      "commit": "aca2ee8a7045e6b3d0399736d7d1adf7e1dbf825",
      "tree": "fc96b9731e668b9a4c5fa54bcf9457a375be2f62",
      "parents": [
        "e46defea3ae15787aa6afbb91cb9dc83d4a074e4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 10 20:10:10 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 15:44:26 2010 -0700"
      },
      "message": "remove the \"memcpy\" hack\n\nthis hack was used for gpus that don\u0027t support cached buffers\nfor s/w clients. currently we have no gpu with this issue.\nthis removes quite a bit of complexity.\n\nChange-Id: I72564669f124f92805030e61983711f61c76b6d9\n"
    },
    {
      "commit": "cdcc6a0061756d9d1e9a6e3801981a66dd152de2",
      "tree": "e4b4ebd6204b9182c4bf0ba38e4285da455652c4",
      "parents": [
        "8bf05f474201f1d545be179da08f4fdee0f50374",
        "d6effb069656add955790a85eaeb556e724dfc7e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed May 12 15:25:03 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 15:25:03 2010 -0700"
      },
      "message": "am d6effb06: am e8621534: Merge \"ZipUtilsRO rewrite based on Dalvik Zip rewrite\" into kraken\n"
    },
    {
      "commit": "e8621534db97070cc40f729d1eb8074f2e69df9d",
      "tree": "54b8857783ced454e0b05b185753a652d4899b37",
      "parents": [
        "2a2174a7bdd7a557d3e17b78876b6887a02ebf80",
        "68246dcec17c245a434dad70b778960dc5c84af1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed May 12 14:54:42 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 12 14:54:42 2010 -0700"
      },
      "message": "Merge \"ZipUtilsRO rewrite based on Dalvik Zip rewrite\" into kraken"
    },
    {
      "commit": "f355b34014a44623c46e5972f1cf7fca53ab1f7f",
      "tree": "af2121cd73b63722b897286e3fc2afe3dc8fa2b2",
      "parents": [
        "e890bec74342a24c9616d6c49f15ebe3bd675f36",
        "9813a3a250428f718733d32a13681611b3d4abe6"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed May 12 09:14:11 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 09:14:11 2010 -0700"
      },
      "message": "am 9813a3a2: am b3390135: am d8c33747: am 78624e41: Add remove method in CameraParameters class.\n"
    },
    {
      "commit": "fc1246640f1ac7f562c6a05ab34d7847ff8cca05",
      "tree": "a66df8aae9d213a51d5ebbc4d71d0732412c75e7",
      "parents": [
        "2cd841d485968181eb362338b9e66067767bd2eb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 12 08:24:18 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 12 08:31:04 2010 -0700"
      },
      "message": "Several fixes in AudioDumpInterface:\n\n- forward setMode() and getInputBufferSize() calls to underlying audio hardware interface.\n- Allow capture of more than one output stream (previous implementation was only capturing\nthe first output opened, namely the hardware output).\n- Allow capture of input streams: previous implementation was only simulating input streams\nwhen more than one was open at a time by reading from a file on SD card). Now the default\nbehavior is to capture PCM data read from input stream if it was successfully opened or\nsimulate capture otherwise.\n\nChange-Id: I7e2892b25e295fc3c19c7eb0f71bfaea5816b73a\n"
    },
    {
      "commit": "b3390135890800b9c5f0ab58ae3af80ab200dd8e",
      "tree": "8b150157548ef4b694037810a881142b8e1c85f9",
      "parents": [
        "2cd841d485968181eb362338b9e66067767bd2eb",
        "d8c33747afbe98e893e0569f3bf45b67a9e8e728"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed May 12 07:55:00 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 12 07:55:00 2010 -0700"
      },
      "message": "am d8c33747: am 78624e41: Add remove method in CameraParameters class.\n\nMerge commit \u0027d8c33747afbe98e893e0569f3bf45b67a9e8e728\u0027 into kraken\n\n* commit \u0027d8c33747afbe98e893e0569f3bf45b67a9e8e728\u0027:\n  Add remove method in CameraParameters class.\n"
    },
    {
      "commit": "4f0f17d2f10ceb22c2e23b593bab434fc899ecb7",
      "tree": "6c32547260c8783db72d1c8baf210adafbfda4c3",
      "parents": [
        "2cd841d485968181eb362338b9e66067767bd2eb"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 12 02:05:53 2010 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed May 12 06:29:16 2010 -0700"
      },
      "message": "Fix issue 2678048: binder death detection in AudioFlinger is broken.\n\nThere is a bug in the way notification client list is managed when the client binder\ninterface dies that makes that the dead client is not removed from the list: the week\nreference passed by binderDied() cannot be promoted and compared to the strong\nreferences in the list.\n\nThe fix consists in creating a new NotificationClient class that implements the\nbinder DeathRecipient and holds a strong reference to the IAudioFlingerClient interface.\nA new instance of this class is created for each cient and a strong reference to this\nobject is added to the notification client list maintained by AudioFlinger.\nWhen binderDied() is called on this object, it is removed from the list preventing\nAudioFlinger to notify this client for further io changes.\n\nAlso added code to disable LifeVibes effects when the client that has enabled the\nenhancements dies.\n\nChange-Id: Icedc4af171759e9ae9a575d82d44784b4e8267e8\n"
    },
    {
      "commit": "68246dcec17c245a434dad70b778960dc5c84af1",
      "tree": "00aaacdfd3147c87c0d0d4761817a797e7af346a",
      "parents": [
        "dc3e26071399789c5966b9cd67180437f44eb9dd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Apr 22 18:28:29 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed May 12 05:07:48 2010 -0700"
      },
      "message": "ZipUtilsRO rewrite based on Dalvik Zip rewrite\n\nChange the way zip archives are handled.  This is necessary to deal with\nvery large (~1GB) APK files, for which our current approach of mapping\nthe entire file falls over.\n\nWe now do the classic scavenger hunt for the End Of Central Directory\nmagic on a buffer of data read from the file, instead of a memory-mapped\nsection.  We use what we find to create a map that covers the Central\nDirectory only.\n\nIf the caller is interested in unpacking the file contents, we have to\ndo an additional file read to discover the size of the Local File Header\nsection so we can skip past it.\n\nThis is based on Change I745fb15abb in the dalvik tree. Both\nimplementations share a common ancestry, but the cost of unifying them\noutweighs the benefits of wrapping C calls.\n\nChange-Id: Iddacb50fe913917c2845708a530872d65fdbe620\n"
    },
    {
      "commit": "4d3399337d18ef04116bc8a2e5799274655d0c30",
      "tree": "a264ecb82632516adb510a2ca49d3cac750d54d0",
      "parents": [
        "810f5ccb99a8a05a6d1617b19a4efb2399450318"
      ],
      "author": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Tue May 11 14:03:58 2010 -0700"
      },
      "committer": {
        "name": "Jason Sams",
        "email": "rjsams@android.com",
        "time": "Tue May 11 14:03:58 2010 -0700"
      },
      "message": "Convert renderscript from using ACC to LLVM for its compiler.\n\nThis will also require application to be updated to support\nthe new compiler and data passing models.\n\nChange-Id: If078e3a5148af395ba1b936169a407d8c3ad727f\n"
    },
    {
      "commit": "78624e41da166712aaa5ae47e4d3467337ac810a",
      "tree": "b7e1e6c75b4837d34bf29180974052167ac5d3f0",
      "parents": [
        "be65399baf23855094596e27c25763ff92e9e027"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue May 11 12:11:56 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue May 11 12:54:14 2010 +0800"
      },
      "message": "Add remove method in CameraParameters class.\n\nbug:2672651\nChange-Id: I537c817b5ca6a3d925f22febe9a5769156354d00\n"
    },
    {
      "commit": "f0b8679b5d39490919823e6d80115e38744ef00c",
      "tree": "9f5ca73333ad772d82d9368c14939ce156cbd261",
      "parents": [
        "6707341b28709161b8b8744d86529b0c2663d547",
        "0c3bba3ee521ab51a4cf3295616c9c002133a239"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 10 20:07:54 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 10 20:07:54 2010 -0700"
      },
      "message": "am 0c3bba3e: am e1b2b3b0: Merge \"Add continuous focus mode constant.\" into kraken\n"
    },
    {
      "commit": "e1b2b3b0d23c964470badb7faa2569b0fa0f182e",
      "tree": "87b29cd56e384b392f0493fcb31b4ea3c98361d1",
      "parents": [
        "e88ae544e3e54958dfb6e866d4444f7f7b5d2d68",
        "ca099614841bc619f217dfa088da630a7eb1ab65"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 10 20:04:14 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon May 10 20:04:14 2010 -0700"
      },
      "message": "Merge \"Add continuous focus mode constant.\" into kraken"
    },
    {
      "commit": "5705a886c693688d60417f8c995d1fd6f8266f33",
      "tree": "12f8586963fac2e72f4aec48566148c207d3d049",
      "parents": [
        "2d498fd57e4eb492fccdee6ada064754c49c9bfa",
        "ef474f3fb62e6aee5672ebae1b1ce246be9b167e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 10 09:56:00 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 10 09:56:00 2010 -0700"
      },
      "message": "am ef474f3f: am 4cfc21ec: am 56aed6bd: am c69775d6: Merge \"fix [2664345] Flash: Bad flicker at the end of a pinch zoom.\" into froyo\n"
    },
    {
      "commit": "4cfc21ecd914ac89a3160e5b19105b768546853f",
      "tree": "05a6ed40f42340bba2b1a5c33508fd0fc9843ac0",
      "parents": [
        "47de84c359ad46a7b4dd47eaac6af6ceb21b4772",
        "56aed6bde0c52658d2cb1207c0cfe8ba0a764c59"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 10 09:49:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 10 09:49:19 2010 -0700"
      },
      "message": "am 56aed6bd: am c69775d6: Merge \"fix [2664345] Flash: Bad flicker at the end of a pinch zoom.\" into froyo\n\nMerge commit \u002756aed6bde0c52658d2cb1207c0cfe8ba0a764c59\u0027 into kraken\n\n* commit \u002756aed6bde0c52658d2cb1207c0cfe8ba0a764c59\u0027:\n  fix [2664345] Flash: Bad flicker at the end of a pinch zoom.\n"
    },
    {
      "commit": "ca099614841bc619f217dfa088da630a7eb1ab65",
      "tree": "7c804ef7da518a1193d481e325909e0240bff1c7",
      "parents": [
        "7768892c82f3b037c19c608c6d8309938fd5ca21"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu May 06 16:47:30 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon May 10 15:14:56 2010 +0800"
      },
      "message": "Add continuous focus mode constant.\n\nbug:2612447\nChange-Id: I9bc3f5a47ad50722a265d50b1d28fb82a2253dc9\n"
    },
    {
      "commit": "fdaa7790e8a81b165333e3cd7ecc7c238f53f6fa",
      "tree": "9e5f9e6d3ec49bbf0114a9a2488ae0bbe060106d",
      "parents": [
        "3a7f65834b65cd1045292d1c5ac03ed48db800f6",
        "c2ed18178877f7f614feede74e7916975a5e61ab"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Sun May 09 20:43:47 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun May 09 20:43:47 2010 -0700"
      },
      "message": "am c2ed1817: am e25cc656: Support multiple cameras in framework.\n"
    },
    {
      "commit": "e25cc656392d8866e163f78b60c7791455d0fb44",
      "tree": "d264b1c05e9edb2851c5ddc21a662617ea1d4ebc",
      "parents": [
        "a0a126a060b6b9ba51bc99f82ff4d322f779325e"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu May 06 16:36:58 2010 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Mon May 10 11:21:14 2010 +0800"
      },
      "message": "Support multiple cameras in framework.\n\nChange-Id: I081f0fbdca4b633715ea7c3b3d42f8662d27598a\n"
    },
    {
      "commit": "2df6f515675917a7a2812cf35faa5a1f47a6305f",
      "tree": "c4003c9d32f22adcc3e387a1aa9a80c5d3c90389",
      "parents": [
        "8a8658a5de261c2da72d431940877bd054bc9837"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 06 20:21:45 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 06 20:21:45 2010 -0700"
      },
      "message": "fix [2664345] Flash: Bad flicker at the end of a pinch zoom.\n\nthe window manger puts SurfaceViews up before they have been\nrendered into, because of that surfaceflinger doesn\u0027t have\nanything ready to draw for that surface when an udpate occurs\nand responds by filling the surface with black.\nWith this fix, we only fill those areas of the framebuffer\nthat would otherwise be undefined (no content at all).\n\nin the Flash case, the \"flash\" window is not drawn at all\nuntil it has some content, instead the underlaying browser\nwindow is shown.\n\nChange-Id: Ifb610f7f8c27b88edf83e09adc4803fc295c15a1\n"
    },
    {
      "commit": "f486ccb7ad8bf0ff2f7138973037098be8e7ad72",
      "tree": "f29d54142eed97935a4c19bd40ca6b60d37e635e",
      "parents": [
        "5d66dd462c670166c1cb1d2400cd4820a399ff5d",
        "92f6eda5ec14312f85dd0a28ecaabece26a5230b"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 17:38:58 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 17:38:58 2010 -0700"
      },
      "message": "am 92f6eda5: am a269d195: am ca48c88c: am 8a8658a5: Merge \"Make static versions of libutils and libbinder.\" into froyo\n"
    },
    {
      "commit": "a269d195d41ced934d2153fd81fa69ffe7854740",
      "tree": "cbfe9a5b063aa4aa860f4c2e3e26f1acde99780b",
      "parents": [
        "94886d9774d11b8bc93e56103d2f0ab61458ada0",
        "ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 17:35:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 17:35:06 2010 -0700"
      },
      "message": "am ca48c88c: am 8a8658a5: Merge \"Make static versions of libutils and libbinder.\" into froyo\n\nMerge commit \u0027ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f\u0027 into kraken\n\n* commit \u0027ca48c88c3d5733c4405a2fc4f7d9bb7fbba3d43f\u0027:\n  Make static versions of libutils and libbinder.\n"
    },
    {
      "commit": "08b3d2e5ef01a5114424a871934dd9fc153352c0",
      "tree": "7768ecd2c0308f149cb8abb1746a0e7bc1bdae8b",
      "parents": [
        "df7ccbc8ff0d93a708a7fa1e57469d3f93ceda5c"
      ],
      "author": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 00:55:09 2010 -0700"
      },
      "committer": {
        "name": "Dan Egnor",
        "email": "egnor@google.com",
        "time": "Thu May 06 01:03:31 2010 -0700"
      },
      "message": "Make static versions of libutils and libbinder.\n\nFix some small static-initialization-order issues (and a static-\ninitializers-missing issue) that result from doing so.  The static\nlibraries don\u0027t actually get used for anything real at the moment --\nthey\u0027re used for perf tests of bug 2660235.\n\nBug: 2660235\nChange-Id: Iee2f38f79cc93b395e8d0a5a144ed92461f5ada0\n"
    },
    {
      "commit": "168f4c0d20b260fe26c1b19ca44109026b2a42d6",
      "tree": "5ef6fa701e92a5007edc3e94b056613e0733c63e",
      "parents": [
        "5dc15b177b97746c36942cd329e0ffe5bd46d465",
        "8f227c96eab04296e28cdc83324f7dc761db5dd1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 30 15:08:40 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 30 15:08:40 2010 -0700"
      },
      "message": "am 8f227c96: am 3b91e13e: make sure the server-side validates pointers/indices visible on the client side\n"
    },
    {
      "commit": "b6bac619fcfd34a51d72bff0d48c460f5c54262f",
      "tree": "a4143dcc59153a50053e920524ae5cb5fd4bcb13",
      "parents": [
        "83b236c88041f79cc9a421cd3232c0555062d1ed",
        "1bb8b670f99c1029def72ec408142077abd66cc4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 30 15:08:10 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 30 15:08:10 2010 -0700"
      },
      "message": "am 1bb8b670: Merge \"Add support for enqueuing buffers in arbitrary order\" into kraken\n"
    },
    {
      "commit": "3b91e13ec7cdf7d607a221feda2eb0afc1e02050",
      "tree": "3aeeb3c837519b517f370add6b09cd60c64e9831",
      "parents": [
        "1bb8b670f99c1029def72ec408142077abd66cc4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 30 12:59:21 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 30 13:05:36 2010 -0700"
      },
      "message": "make sure the server-side validates pointers/indices visible on the client side\n\nChange-Id: I604f58d3fcd2d09ec7998123c627401081345cd6\n"
    },
    {
      "commit": "1bb8b670f99c1029def72ec408142077abd66cc4",
      "tree": "5417838dd9cbf4b7fd21a4af4f06e1e18ad8b7e5",
      "parents": [
        "b205dabaa73843e1de8f4a27d15736a8dcd7cb2b",
        "bfe7f0b12165a1ad4a73b6d8f013cb9e115a3c60"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 30 12:58:11 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 30 12:58:11 2010 -0700"
      },
      "message": "Merge \"Add support for enqueuing buffers in arbitrary order\" into kraken"
    },
    {
      "commit": "b638bd08b9fd4b98feac0207ec461e5c9d1c7144",
      "tree": "717fe210ce634c71acc2a2a3b35da612d105de42",
      "parents": [
        "9ab5edd2047b53acd7d62eadaca2e40ee333fb44",
        "daedd81f089c296ac7355e9be47f1e4c6d645b04"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 29 14:34:26 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 29 14:34:26 2010 -0700"
      },
      "message": "am daedd81f: Merge \"cleanup. waitForCondition() now uses polymorphsim instead of templtes\" into kraken\n"
    },
    {
      "commit": "9ab5edd2047b53acd7d62eadaca2e40ee333fb44",
      "tree": "5eb117ab5d07cfe9ccf4867305797ec20daa544b",
      "parents": [
        "6b44915b60d317b81e58f5a3d4db625d43f96f93",
        "1d0fa397ce6c7f654fc3086e6267e1c611dd19ea"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 29 14:34:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Apr 29 14:34:21 2010 -0700"
      },
      "message": "am 1d0fa397: Merge \"fix a race condition in undoDequeue(), where \\\u0027tail\\\u0027 could be computed incorrectly.\" into kraken\n"
    },
    {
      "commit": "daedd81f089c296ac7355e9be47f1e4c6d645b04",
      "tree": "e8e1c014f2bbb43346478e006dedb89c02aabf94",
      "parents": [
        "1d0fa397ce6c7f654fc3086e6267e1c611dd19ea",
        "f590f702c8142fa5225a6d2ea6649515c1a2961f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 29 14:17:12 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 29 14:17:12 2010 -0700"
      },
      "message": "Merge \"cleanup. waitForCondition() now uses polymorphsim instead of templtes\" into kraken"
    },
    {
      "commit": "1d0fa397ce6c7f654fc3086e6267e1c611dd19ea",
      "tree": "39cd07fb59f20ecd68af68c64326b56325c56f13",
      "parents": [
        "9eef63113652dc0f0df92295a9fb0b0c71b92934",
        "c54c12713b98f308f848d2eb9ed7ef28ecc62c55"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 29 14:16:14 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 29 14:16:14 2010 -0700"
      },
      "message": "Merge \"fix a race condition in undoDequeue(), where \u0027tail\u0027 could be computed incorrectly.\" into kraken"
    },
    {
      "commit": "8640c1d0e55281530da58350ef54a881d5c51187",
      "tree": "5ae7d7b29e06a4f56de0939fd14ce43630895d88",
      "parents": [
        "0c0b1b3a07e1c5caf5ddd158c0e8901f02d4d4d0",
        "14cee9f688c32d63d8521188e7422811629bb7c2"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 28 16:58:05 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 28 16:58:05 2010 -0700"
      },
      "message": "am 14cee9f6: New xlarge screen size.\n"
    },
    {
      "commit": "14cee9f688c32d63d8521188e7422811629bb7c2",
      "tree": "16c2f2356519a2552bb3b7e2b1de6735793c4b1a",
      "parents": [
        "3fd6419fe542c4ecb8e838d1754a83ce8591b288"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Apr 23 17:51:26 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 28 16:51:52 2010 -0700"
      },
      "message": "New xlarge screen size.\n\nNot complete, only for experimentation at this point.\n\nThis includes a reworking of how screen size configurations are matched,\nso that if you are on a larger screen we can select configurations for\nsmaller screens if there aren\u0027t any exactly matching the current screen.\n\nThe screen size at which we switch to xlarge has been arbitrarily\nchosen; the compatibility behavior has not yet been defined.\n\nChange-Id: I1a33b3818eeb51a68fb72397568c39ab040a07f5\n"
    },
    {
      "commit": "bfe7f0b12165a1ad4a73b6d8f013cb9e115a3c60",
      "tree": "0d55794a9fa47b81998aae8c2abb6c7f0af8ee76",
      "parents": [
        "f590f702c8142fa5225a6d2ea6649515c1a2961f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 27 21:08:20 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 28 16:12:54 2010 -0700"
      },
      "message": "Add support for enqueuing buffers in arbitrary order\n\nAlso added a very simple SharedBufferStack unit test.\n\nChange-Id: I253dbbe98a53c966b78d22d4d6dd59f8aefc8c40\n"
    },
    {
      "commit": "f590f702c8142fa5225a6d2ea6649515c1a2961f",
      "tree": "5165d6b04f34f8b90d36bbec3cc9949aa69f2fd6",
      "parents": [
        "c54c12713b98f308f848d2eb9ed7ef28ecc62c55"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 27 16:41:19 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 28 16:12:54 2010 -0700"
      },
      "message": "cleanup. waitForCondition() now uses polymorphsim instead of templtes\n\nthe reason for the above change is that waitForCondition() had become\nlarge over time, mainly to handle error cases, using inlines to\nevaluate the condition doesn\u0027t buys us much anymore while it increases\ncode size.\n\nChange-Id: I2595d850832628954b900ab8bb1796c863447bc7\n"
    },
    {
      "commit": "c54c12713b98f308f848d2eb9ed7ef28ecc62c55",
      "tree": "cee4c74a6421cd6b128ed3c2538c836469c6ba06",
      "parents": [
        "3fd6419fe542c4ecb8e838d1754a83ce8591b288"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 27 16:11:38 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 28 16:12:54 2010 -0700"
      },
      "message": "fix a race condition in undoDequeue(), where \u0027tail\u0027 could be computed incorrectly.\n\nin the undoDequeue() case, \u0027tail\u0027 was recalculated from \u0027available\u0027 and \u0027head\u0027\nhowever there was a race between this and retireAndLock(), which could cause\n\u0027tail\u0027 to be recalculated wrongly.\n\nthe interesting thing though is that retireAndLock() shouldn\u0027t have any impact\non the value of \u0027tail\u0027, which is client-side only attribute.\nwe fix the race by saving the value of \u0027tail\u0027 before dequeue() and restore it\nin the case of undoDequeue(), since we know it doesn\u0027t depend on retireAndLock().\n\nChange-Id: I4bcc4d16b6bc4dd93717ee739c603040b18295a0\n"
    },
    {
      "commit": "e5ba231b55e96411b862da34be37e0ff5f8856c7",
      "tree": "4bd352a61df43df6aebd6f81df74c165315ecd3a",
      "parents": [
        "fb3c87f2f4423178cf8efc77099d17ae11000d29",
        "9bce8737f2f7581ade57445286aa150de051ff89"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 21 22:40:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 21 22:40:21 2010 -0700"
      },
      "message": "am 9bce8737: more surfaceflinger cleanups\n"
    },
    {
      "commit": "fb3c87f2f4423178cf8efc77099d17ae11000d29",
      "tree": "8745ad25d5c84ff4c70d973f250d42576ab77eb5",
      "parents": [
        "32c7e6a371a6ffbdb90dc814ed5c0af080ddc928",
        "33c8e2b8e082555115e5f25735c7611fb80004fe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 21 22:33:18 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 21 22:33:18 2010 -0700"
      },
      "message": "am 33c8e2b8: Merge \"better fix for [2420565] Surface.lockCanvas() updates the dirty region too often\" into kraken\n"
    },
    {
      "commit": "9bce8737f2f7581ade57445286aa150de051ff89",
      "tree": "19afa0f5dff514a7d555e94c8a81c05d6d9e111b",
      "parents": [
        "33c8e2b8e082555115e5f25735c7611fb80004fe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 17:55:49 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 21 22:28:20 2010 -0700"
      },
      "message": "more surfaceflinger cleanups\n\nget rid of the \"fake rtti\" code, and use polymorphism instead.\nalso simplify how we log SF\u0027s state (using polymorphism)\n\nChange-Id: I2bae7c98de4dd207a3e2b00083fa3fde7c467922\n"
    },
    {
      "commit": "a8a0aa8b922c45fb4633f51610f264a19f9bd825",
      "tree": "367c5b004195a5dbdca46e5f4049b029d3e570c9",
      "parents": [
        "a8624186a6f7a29697bf5a112e46a80ca796c9c5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 21 15:24:11 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 21 22:25:35 2010 -0700"
      },
      "message": "better fix for [2420565] Surface.lockCanvas() updates the dirty region too often\n\nChange-Id: I83438b40effd21538f1c74396dc665254b9d5ab6\n"
    },
    {
      "commit": "83512d4dfc06137bc2d9db0cb62644c54f41a771",
      "tree": "fe0ed7cbeafab7f97e7898d83c31928fbc53c00e",
      "parents": [
        "22caecda8a24c971972d78a112279c48f242d529"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 21:55:40 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 21:55:40 2010 -0700"
      },
      "message": "DO NOT MERGE fix [2557396] Adreno200: glDrawTexi() doesn\u0027t work with height \u003c\u003d 16\n\ndon\u0027t use glDrawTexi() anymore\n\nChange-Id: If71334de39114b0edce7771366f8d8dc26f6911e\n"
    },
    {
      "commit": "345dd8ef83e6a1532135d7e32b5bf3c932077a94",
      "tree": "c46a92c943a975780f8db1fb0f5def9fd101d012",
      "parents": [
        "2ff1ef2c8eb182742b3c70cf2a0c9304e917c71c",
        "b834b38a28660a46357e652ac2524e9947a13ba5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 16:37:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 20 16:37:29 2010 -0700"
      },
      "message": "am b834b38a: Merge \"added setCrop() to android_native_window_t\" into kraken\n"
    },
    {
      "commit": "2ff1ef2c8eb182742b3c70cf2a0c9304e917c71c",
      "tree": "a892def89aeb2248545bb726099667a39d17a596",
      "parents": [
        "399eb1f00eb1f79c5b7be3d88fed43affbb4c5d7",
        "827cda456a469777c9da60b3aaf491049a999515"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "pixelflinger@google.com",
        "time": "Tue Apr 20 16:37:25 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 20 16:37:25 2010 -0700"
      },
      "message": "am 827cda45: Merge \"add support for up to 16 buffers per surface\" into kraken\n"
    },
    {
      "commit": "b834b38a28660a46357e652ac2524e9947a13ba5",
      "tree": "594d5bdd485fc0a93c0109ec87771339b0f96775",
      "parents": [
        "827cda456a469777c9da60b3aaf491049a999515",
        "16a86ee30b70aea8c254b836c708f54a608d25f3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 16:28:24 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 20 16:28:24 2010 -0700"
      },
      "message": "Merge \"added setCrop() to android_native_window_t\" into kraken"
    },
    {
      "commit": "827cda456a469777c9da60b3aaf491049a999515",
      "tree": "af2d5341665243f3e6b74679a0b4351a29fa244c",
      "parents": [
        "219dbb67a6cd4a64abd6e9ec2f376eb982a032d3",
        "6bb5ebaa0305a30b5037f6533b3b989e0437d26c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "pixelflinger@google.com",
        "time": "Tue Apr 20 16:28:14 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 20 16:28:14 2010 -0700"
      },
      "message": "Merge \"add support for up to 16 buffers per surface\" into kraken"
    },
    {
      "commit": "62788470dff15027483f6e130fa9a77b6c53169a",
      "tree": "96c2616660c2a26e15e99c2028ebc45b5e4aab2e",
      "parents": [
        "ef404b7aa0430a67300355a607c81a4b379c911a",
        "360865e26c1e6078a1d8363e469fc0ef2e05a159"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 16:08:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 20 16:08:06 2010 -0700"
      },
      "message": "am 360865e2: Merge \"clean-up surfaceflinger a bit\" into kraken\n"
    },
    {
      "commit": "360865e26c1e6078a1d8363e469fc0ef2e05a159",
      "tree": "5a2e8f0f414901e71efb6d365f9451b7f184b90a",
      "parents": [
        "0c64ff7568f0e1e37e300005ea0de3f21faa08e0",
        "e5c0a7b7810092a593ff386843927238c175bdbd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 15:59:57 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 20 15:59:57 2010 -0700"
      },
      "message": "Merge \"clean-up surfaceflinger a bit\" into kraken"
    },
    {
      "commit": "e5c0a7b7810092a593ff386843927238c175bdbd",
      "tree": "0118a020f4e43c025fbfaadb2d91460aa893894d",
      "parents": [
        "796c5fc6abf01b1864223156d578288657fe9923"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 14:51:04 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 15:58:36 2010 -0700"
      },
      "message": "clean-up surfaceflinger a bit\n\nget rid of the glDrawTexi path and use floating points instead of fixed point maths\n\nChange-Id: I3aa9ce2dc082f702160e605a16ba5fe987cdf087\n"
    },
    {
      "commit": "73db44151f7580276f7aa4bbc70dcd92dfefa786",
      "tree": "b17de84a24555dd7699a8f1de3483b233855d7d3",
      "parents": [
        "ac075190b9a6f10c2f24c3e3d1de035aa0329fa4",
        "bb331f7333b643794062a7c9e9eac329699f6502"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 20 14:56:51 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 20 14:56:51 2010 -0700"
      },
      "message": "am bb331f73: am 0fabf2e8: am 8ccbd4ba: Merge \"Fix bug 2604132 40s skip after undocking In case of A2DP write errors, there is an overflow in the calculation of the sleep duration to simulate the timing of a successful write.\" into froyo\n"
    },
    {
      "commit": "bb331f7333b643794062a7c9e9eac329699f6502",
      "tree": "cefff690248bc9a13ac6eddb583883beab1214da",
      "parents": [
        "796c5fc6abf01b1864223156d578288657fe9923",
        "0fabf2e81559106cb4aaf9e8ba45b0bed37d5eb8"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 20 14:48:15 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 20 14:48:15 2010 -0700"
      },
      "message": "am 0fabf2e8: am 8ccbd4ba: Merge \"Fix bug 2604132 40s skip after undocking In case of A2DP write errors, there is an overflow in the calculation of the sleep duration to simulate the timing of a successful write.\" into froyo\n\nMerge commit \u00270fabf2e81559106cb4aaf9e8ba45b0bed37d5eb8\u0027 into kraken\n\n* commit \u00270fabf2e81559106cb4aaf9e8ba45b0bed37d5eb8\u0027:\n  Fix bug 2604132 40s skip after undocking\n"
    },
    {
      "commit": "16a86ee30b70aea8c254b836c708f54a608d25f3",
      "tree": "9e30bb72015eeaedcc5c7d9f8303cebd2cc3e07f",
      "parents": [
        "6bb5ebaa0305a30b5037f6533b3b989e0437d26c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 15 18:48:26 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 13:36:29 2010 -0700"
      },
      "message": "added setCrop() to android_native_window_t\n\nhooked up the new method up to Surface.cpp\nthe actual crop is not implemented in SF yet\n\nChange-Id: Ic6e313c98fd880f127a051a0ccc71808bd689751\n"
    },
    {
      "commit": "6bb5ebaa0305a30b5037f6533b3b989e0437d26c",
      "tree": "68048832ea2c2560a94bf506647e9fee0357f548",
      "parents": [
        "796c5fc6abf01b1864223156d578288657fe9923"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "pixelflinger@google.com",
        "time": "Mon Apr 05 16:21:53 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 13:36:29 2010 -0700"
      },
      "message": "add support for up to 16 buffers per surface\n\nalso increase the dirtyregion size from 1 to 6 rectangles.\nOverall we now need 27KiB process instead of 4KiB\n\nChange-Id: Iebda5565015158f49d9ca8dbcf55e6ad04855be3\n"
    },
    {
      "commit": "2f22d35936d5e9dfaec529ebbe1fbd2a27e843d7",
      "tree": "97863a9587f3ab5c56ead4ee4f6cb9c83ea56c36",
      "parents": [
        "9b8b417cd1ddfb81c1b0314f033a1439fd627aa2"
      ],
      "author": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 20 12:12:13 2010 -0700"
      },
      "committer": {
        "name": "Jean-Michel Trivi",
        "email": "jmtrivi@google.com",
        "time": "Tue Apr 20 12:12:13 2010 -0700"
      },
      "message": "Fix bug 2604132 40s skip after undocking\nIn case of A2DP write errors, there is an overflow in the calculation\nof the sleep duration to simulate the timing of a successful write.\n\nChange-Id: Ic4e570aebf07fac69735aab1bbc2fc73512ee795\n"
    },
    {
      "commit": "20f5a2fa88f6312349d0b0fb0952475a7db58166",
      "tree": "84d2adf0bfadde0f9dd155444be67a2af1df71f8",
      "parents": [
        "8ca856c445dc93e6840a3270a2841794c06f256c",
        "732c73e1e76fef4f3857a1649b03021305639c3c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 19 19:39:04 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 19 19:39:04 2010 -0700"
      },
      "message": "am 732c73e1: am 26f61635: am 0a4ab1b9: Merge \"fix [2599939] \"cannot play video\" after open/close a video player a dozen of times\" into froyo\n"
    },
    {
      "commit": "732c73e1e76fef4f3857a1649b03021305639c3c",
      "tree": "36df82e874b7ab5ad4a3b1ca82e25dc3dec7831e",
      "parents": [
        "15d484a7ef1e8f418281af3f6a393ff97729a1f5",
        "26f6163557980062dbb203388b3d0794ee0d06f7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 19 19:29:22 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 19 19:29:22 2010 -0700"
      },
      "message": "am 26f61635: am 0a4ab1b9: Merge \"fix [2599939] \"cannot play video\" after open/close a video player a dozen of times\" into froyo\n\nMerge commit \u002726f6163557980062dbb203388b3d0794ee0d06f7\u0027 into kraken\n\n* commit \u002726f6163557980062dbb203388b3d0794ee0d06f7\u0027:\n  fix [2599939] \"cannot play video\" after open/close a video player a dozen of times\n"
    },
    {
      "commit": "92c3b393275e967f37162b40b3438c5616328372",
      "tree": "14f077c0233038875cc90dd8eb107decb117b667",
      "parents": [
        "e80c6f49d5055e299b7ada91b5967feab66e467b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 19 19:09:03 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 19 19:09:03 2010 -0700"
      },
      "message": "fix [2599939] \"cannot play video\" after open/close a video player a dozen of times\n\nget rid off the MAP_ONCE flag is MemoryHeapBase (as well as it\u0027s functionality),\nthis feature should not be used anymore.\n\nthe software renderer was incorrectly using the default ctor which set MAP_ONCE,\ncausing the leak. the software renderer itself is incorrectly used while coming\nback from sleep.\n\nChange-Id: I123621f8d140550b864f352bbcd8a5729db12b57\n"
    },
    {
      "commit": "120c457672056280e5925589c4b19107a9ee814a",
      "tree": "8f489900ce025fecafb48ed0fca4657e71329e89",
      "parents": [
        "62d8a0f8a9d4a5ef1a17475079a7e053a9d48be2",
        "699399775f609c02cd4f29b33b6fde451959fa65"
      ],
      "author": {
        "name": "android-build SharedAccount",
        "email": "android-build@google.com",
        "time": "Thu Apr 15 16:36:34 2010 -0700"
      },
      "committer": {
        "name": "android-build SharedAccount",
        "email": "android-build@google.com",
        "time": "Thu Apr 15 16:36:34 2010 -0700"
      },
      "message": "manual merge\n\nChange-Id: I235ae925559b5db6d64cc8f8b188704a84d7b6a2\n"
    }
  ],
  "next": "67bbac844d3fda5c693464deddf349b80c5190a0"
}
