)]}'
{
  "log": [
    {
      "commit": "d487ca1ab331e60956c7819265723676b25b7fba",
      "tree": "3f00ed0d94f37223fe78f9ed77317e19004a531c",
      "parents": [
        "57e5144a31208a7f2ca810412c5af5f63b44c4cb",
        "87ab83d96b9d826e94a7169a6205bcf9c2ee633a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu May 09 10:19:01 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 09 10:19:01 2013 -0700"
      },
      "message": "am 87ab83d9: am f743e3db: Merge \"Add support for HAL_PIXEL_FORMAT_YCbCr_420_888\" into jb-mr2-dev\n\n* commit \u002787ab83d96b9d826e94a7169a6205bcf9c2ee633a\u0027:\n  Add support for HAL_PIXEL_FORMAT_YCbCr_420_888\n"
    },
    {
      "commit": "c43946b931de5dafd28f49963f9af78e05390b26",
      "tree": "032140ddaaa02cacfac012f042526c7facd57c88",
      "parents": [
        "cc8f8ad33d4f8f55ff30e1600cc59c7cf5113c8a"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Sat May 04 18:07:43 2013 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon May 06 17:24:05 2013 -0700"
      },
      "message": "Add support for HAL_PIXEL_FORMAT_YCbCr_420_888\n\n- Add fields to CpuConsumer::LockedBuffer for new information\n- New lock methods for GraphicBuffer and GraphicBufferMapper for\n  the format\n\nBug: 8734880\nChange-Id: If31f82c62d64b6942cf4cc6e5715585c03273f12\n"
    },
    {
      "commit": "bdcf1fe2ba4f6fe2eb63a5ec8246b1582b638e04",
      "tree": "c9ba7f0354eb4a99d3ae89943e9e68df4c2b4009",
      "parents": [
        "1e5baa4e7dcc9610727103714343594240fe693d",
        "3e25fd8609b100a75721be82d1d499f0ae9083cb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 24 10:25:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 24 10:25:34 2013 +0000"
      },
      "message": "Merge changes I0d9f18d1,Ib96c9161\n\n* changes:\n  Add a --color option to dumpsys SurfaceFlinger\n  clean-up/simplify all dump() APIs\n"
    },
    {
      "commit": "74d211ae26a0257c6075a823812e40b55aa1e653",
      "tree": "6f3efb9d1587fc0698e27ab007ca88c16f99ba23",
      "parents": [
        "dfc11ac5c2b1b2d4077eaa268a068d18bde36420"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 22 16:55:35 2013 +0200"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 22 21:51:28 2013 +0200"
      },
      "message": "clean-up/simplify all dump() APIs\n\nremove the scratch buffer parameter and use\nString8::appendFormat() instead.\n\nChange-Id: Ib96c91617c8e7292de87433d15cf6232b7d591b0\n"
    },
    {
      "commit": "e692ab9a6be63193c5b52a6562d85d06c40463b8",
      "tree": "6882c21347ec6c1fc515fc51af9d222a3393ea76",
      "parents": [
        "bd1153382e7a9d89922bea999a52ca21d46d6caa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 22 11:24:02 2013 +0200"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 22 11:24:02 2013 +0200"
      },
      "message": "fix uninitialized variables in GLConsumer\n\nmDefaultWidth, mDefaultHeight and mCurrentScallingMode are now\ninitialized to the same default value that BufferQueue uses.\n\nChange-Id: I0d4da2022b06419d12745716d8ddbd48c8869953\n"
    },
    {
      "commit": "187edf93c6245bb8fb3187c49f2174492ed6e049",
      "tree": "e4644793ae6b0452b4319db51ae220bbcfd24caa",
      "parents": [
        "f31510a2ac0807cf3d4224a73fc3f8f691f42f5a",
        "87d1e3427b536b5cb1123ddc357539cb4075687a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Apr 17 19:39:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 17 19:39:53 2013 +0000"
      },
      "message": "Merge \"BufferItemConsumer: add functions to set default buffer format/size\" into jb-mr2-dev"
    },
    {
      "commit": "87d1e3427b536b5cb1123ddc357539cb4075687a",
      "tree": "53c8865ac5a5d2a6f8ca24f53abd2ff0409d4f27",
      "parents": [
        "1df59c93fea8bec21b8084c34aface086f1e0896"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Apr 16 11:24:40 2013 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Apr 16 11:24:40 2013 -0700"
      },
      "message": "BufferItemConsumer: add functions to set default buffer format/size\n\nBug: 8629088\nChange-Id: I06f2e26a70d6dbcfcd70b08b4461e8e401f6e83f\n"
    },
    {
      "commit": "53dc9044bfe17039592faf4660c5bf715e8120ad",
      "tree": "2b9b22c399db8d1abd6008a92714cc7c64013293",
      "parents": [
        "d19e519f673adcc5d12fcca549e577eea74f31aa",
        "753e3415cdaa99f9453d1ea71b163bf1b148e127"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Apr 11 17:15:52 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 11 17:15:52 2013 +0000"
      },
      "message": "Merge \"Updated comments\" into jb-mr2-dev"
    },
    {
      "commit": "ad669b04f4633957eea55b8ad2d8253adcefe39b",
      "tree": "280e1d04fdc8ef6483574379114175ae4bf98232",
      "parents": [
        "83a3ad4d579b514dfeff43008254d05922e5e324"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Apr 05 16:41:27 2013 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Apr 08 14:42:22 2013 -0700"
      },
      "message": "libgui: fix an EGLImage leak\n\nThis moves the call to ConsumerBase::abandon from the ConsumerBase dtor to\nConsumerBase::onLastStrongRef.  The abandon call relies on virtual methods to\nperform the clean-up, so calling it from the ConsumerBase dtor after the\nderived classes dtors ran was skipping some of the clean-up.  The\nonLastStrongRef method should get called just before the most derived class\u0027s\ndtor gets called.\n\nBug: 8349135\nChange-Id: I836946826927cc1ed69c049049f525f92b17a269\n"
    },
    {
      "commit": "753e3415cdaa99f9453d1ea71b163bf1b148e127",
      "tree": "08d0d5262be3fc409d2af3761dfe1c9e5509dd6c",
      "parents": [
        "128fcea1c6f8b5f66a5d88a80789e65aac798416"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Apr 04 17:09:03 2013 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Apr 05 10:44:23 2013 -0700"
      },
      "message": "Updated comments\n\nUpdated many comments.  Added one minor error check.\n\nChange-Id: Ib935dd99d417bada91d2e198008a50dd94269316\n"
    },
    {
      "commit": "ca08833d5ea99130797e10ad68a651b50e99da74",
      "tree": "bcb05693b2bc34a0c7467d95a85b19df9af5dc1e",
      "parents": [
        "8171aece3d89a2107eda02c0e9daf79518b40174"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 28 17:44:13 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 29 15:33:47 2013 -0700"
      },
      "message": "don\u0027t use compile-time configuration of libgui as much as possible\n\nWe now detect at runtime which sync features to use, which\nallows us to remove a lot of the compile-time configuration\noptions. There  is still one option though, to disable\nKHR_fence_sync on some devices (which are more efficient\nwithout it).\n\n- added a backdoor to get the vendor\u0027s EGL strings\n\nthe new logic is:\n- use always ANDROID_native_fence_sync if available\n- fallback to KHR_fence_sync if available and not disabled\n  by the compile-time option\n- use KHR_wait_sync if available and either of the above is\n  enabled\n\nChange-Id: I9c4b49d9ff1151faf902cc93bd53ea5f205aaabf\n"
    },
    {
      "commit": "8000d0694bc34bc17d869da546d8ff8790ae7be4",
      "tree": "9b1f6afe40b9648efddea30ccee71961a1a78e5f",
      "parents": [
        "437bdbbaec76099b8b4582aa9f965e60b3f3cdb6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 26 18:15:35 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 26 18:15:35 2013 -0700"
      },
      "message": "make sure to unlock the screenshot\u0027s buffer on destruction\n\nthis fixes a memory leak on various devices\n\nBug: 8475134\nChange-Id: I25924674c803a0cb22371a95c60664c36acb0340\n"
    },
    {
      "commit": "13f01cbdbd34779a234bc674df79e23672fd5c0b",
      "tree": "9b1c9334f276ff039a2621fe0e639ff06249473c",
      "parents": [
        "8d8c75976171d194ca8f94727b22e3bf7676b9dd"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Mar 20 11:37:21 2013 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Mar 22 09:56:58 2013 -0700"
      },
      "message": "Pass sp\u003cFence\u003es around instead of file descriptors\n\nChange-Id: Iac70584a2207940730e8f803a543e4e9a4000c47\n"
    },
    {
      "commit": "aaebffd52f1bfa3d239bba0d60b699c01c6d791c",
      "tree": "4400178ae49b103e4c0da5fd857cc0c5af0a1c8e",
      "parents": [
        "ac006439bb635cd99d8dcbefe95fa680e21519b5",
        "042ecee2abf8584585f1f22f661ac6be9689edf4"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Mar 21 16:39:13 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 21 16:39:14 2013 +0000"
      },
      "message": "Merge \"CpuConsumer: Properly track acquired buffers\" into jb-mr2-dev"
    },
    {
      "commit": "ac006439bb635cd99d8dcbefe95fa680e21519b5",
      "tree": "9a26cdd156e4440664508f0a3fc20f797d988399",
      "parents": [
        "7c1a487ba8c0a3b591a77e2ddcb33ef9bdfaff64",
        "d6480c020b050c777ec1db2dd9c16fccfc47b47b"
      ],
      "author": {
        "name": "Ramanan Rajeswaran",
        "email": "ramanan@google.com",
        "time": "Thu Mar 21 15:52:48 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 21 15:52:49 2013 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Change SurfaceControl setPosition to take floats\"\"\" into jb-mr2-dev"
    },
    {
      "commit": "d6480c020b050c777ec1db2dd9c16fccfc47b47b",
      "tree": "ac85cc789d0b67e3c144063dbe521b995a494253",
      "parents": [
        "bbb57f3331c7182399ed82e9c4f93a965677dde3"
      ],
      "author": {
        "name": "Ramanan Rajeswaran",
        "email": "ramanan@google.com",
        "time": "Thu Mar 21 15:49:59 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 21 15:49:59 2013 +0000"
      },
      "message": "Revert \"Revert \"Change SurfaceControl setPosition to take floats\"\"\n\nThis reverts commit bbb57f3331c7182399ed82e9c4f93a965677dde3\n\nChange-Id: Ib8f039f530d6b8175b5205c6c0008b135d4001a2\n"
    },
    {
      "commit": "abe815dd6978b718c04f6e22e1a893d2b51d11a1",
      "tree": "acef7520d6c36ec59192321ce8632b70a58724ab",
      "parents": [
        "9cd766a517caeb58669722fad7fdf623a8c1b83c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 19 22:22:21 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 19 22:22:21 2013 -0700"
      },
      "message": "rework how we take screenshots for a CPU consumer\n\nWe\u0027re not using IMemoryHeap as a transport anymore,\ninstead we\u0027re providing a CpuConsumer and use the\nIGraphicBufferProducer version of the screenshot API.\n\nHowever, some GPU drivers don\u0027t support properly\na GPU to CPU path, to work around this, we use a\ntemporary BufferQueue on the server side for the\nGL rendering, and we use glReadPixels into the\nCpuConsumer (we\u0027re now using a CPU to CPU path\nwhich is always supported).\n\nCurrently this \"wrapping\" is always performed,\nbut it can be bypassed on devices that support\nthe GPU to CPU path.\n\nThis also addresses a DoS attack vector on\nSurfaceFlinger, where an application could\nconsume all of SF\u0027s filedescriptors by creating\na lot of screenshots in a row.\n\nBug: 8390553\n\nChange-Id: I9e81514c2a7711b9bb393f74305be7d2abe08f1c\n"
    },
    {
      "commit": "fae23b8757a6e1b70997db28a2eaf34f9ddc9b84",
      "tree": "8808774aee348f71f28e61c9b4295c3ba76a7bc9",
      "parents": [
        "79fb99d0dea4d301d1bf25273c6af4907ca124bc",
        "80e0a397a4712666661ecc629a64ec26e7f6aac3"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Mar 19 17:45:29 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 19 17:45:29 2013 +0000"
      },
      "message": "Merge changes I61ae54f3,I57cb668e,I7a3f1e1a,Id28a2f9b into jb-mr2-dev\n\n* changes:\n  Add BufferQueueInterposer and use it for virtual displays\n  Add DisplaySurface abstraction\n  Fix argument types in IGraphicBufferProducer methods\n  Minor cleanups/fixes before virtual display refactoring\n"
    },
    {
      "commit": "4c00cc11141da7d159eb2323b186ed344115c0f1",
      "tree": "8cf078166a025e35286fe995afe0887ba9abffdf",
      "parents": [
        "7adb0f8a9fdb961692ffd2f0c65cacb155143f64"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Mar 15 21:34:30 2013 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Mar 18 14:16:02 2013 -0700"
      },
      "message": "Fix argument types in IGraphicBufferProducer methods\n\nBug: 8384764\nChange-Id: I7a3f1e1a0584a70af04f9eafef900505389d2202\n"
    },
    {
      "commit": "7adb0f8a9fdb961692ffd2f0c65cacb155143f64",
      "tree": "2562f5a1e0cd03716f0f74f5237e35254ad696ce",
      "parents": [
        "e81421e1cbd14876b7e6ce143ff70efb3673be99"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Mar 06 16:13:49 2013 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Mar 18 14:16:02 2013 -0700"
      },
      "message": "Minor cleanups/fixes before virtual display refactoring\n\nNone of these should change behavior, except for removing some\nincorrect log messages when using a virtual display.\n\n- HWComposer::getAndResetReleaseFenceFd() checks the HWC version, so\n  no need to do that in the DisplayDevice::onSwapBuffersCompleted().\n  However, it should check that mFramebufferSurface is not NULL like\n  it is for virtual displays.\n- Comment that FramebufferSurface::dump() overrides the non-virtual\n  ConsumerBase::dump(), and fix it so the right thing happens\n  regardless of the static type of the pointer/reference the callee\n  has. FramebufferSurface::dump() could be removed right now, but I\u0027d\n  need to bring it back in a later change.\n- Use the right enum for validating display type ids.\n- Don\u0027t try to send hotplug events for virtual displays.\n- Mark virtual displays as connected so HWComposer::prepare() doesn\u0027t\n  think something is wrong when it gets a non-NULL layer list.\n- Remove unused FramebufferSurface methods.\n\nBug: 8384764\nChange-Id: Id28a2f9be86b45f4bb7915fdf7752157035f4294\n"
    },
    {
      "commit": "041a075262ef5fc886e46fd4eec3dd79ee2e60c0",
      "tree": "495a923b01bc1b81ca0d780b69af3d24d168b0d0",
      "parents": [
        "7670d3cb2b5d38c60135f34a2446e1ae809d1b32"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 15 18:31:56 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 15 18:39:16 2013 -0700"
      },
      "message": "don\u0027t allow screenshots without the READ_FRAMEBUFFER permission\n\nthe recent screenshot rework allowed the older screenshot\ninterface to work without that permission\n\nChange-Id: I6c4743f4591c81106e3b823d55a055f7b4907de1\n"
    },
    {
      "commit": "35ffa6a868f1aa650c90956a4129bb70f780fc99",
      "tree": "0e782930918cace63a9d1e521ac1eefa2f5fa7b5",
      "parents": [
        "4d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:45:09 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 18:45:09 2013 -0700"
      },
      "message": "Surface can now be created only from an IGraphicBufferProducer\n\nit can\u0027t write itself to a parcel, nor can it be created from a\nparcel.\n\nChange-Id: I69165d5c54d6024b3e546e80d8b57e3dedda7893\n"
    },
    {
      "commit": "4d9b822e2c18142e55fe2611aa6cd7dc7d4a62c6",
      "tree": "efde8891af25d54a8211ee4280733046f4417c25",
      "parents": [
        "f44e9f91f37d3fbed64bc952f241d5dc3c385b6a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 17:11:48 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 12 17:11:48 2013 -0700"
      },
      "message": "get rid of ISurface\n\nISurface was only used to get the IGraphicBufferProducer from\na Layer. It\u0027s now replaced by a BBinder subclass / IBinder and\nis only used as a handle to the surface, to both refer to it\nand manage its life-time.\n\nAlso cleaned-up a bit the ISurfaceComposer interface and\n\"create layer\" code path.\n\nChange-Id: I68d0e02d57b862cffb31d5168c3bc10cea0906eb\n"
    },
    {
      "commit": "089a15298e045598bf15fd2a46284c34dd56384c",
      "tree": "3dd5184902113cf40409c9470691bdb7d2d9ce99",
      "parents": [
        "f082323c0dbd915d2ad7b6f4d9c732e230fcda46"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 05 14:51:39 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 05 19:52:29 2013 -0800"
      },
      "message": "Remove support for ScreenshotLayer\n\nChange-Id: I5b571a4cf3faa77d2c4aca916fa4bd00a1065bb9\n"
    },
    {
      "commit": "042ecee2abf8584585f1f22f661ac6be9689edf4",
      "tree": "481452aa17f7c0a8e91ab2088234d877b5e51ab5",
      "parents": [
        "bbb57f3331c7182399ed82e9c4f93a965677dde3"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 28 18:23:24 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Mar 05 15:25:06 2013 -0800"
      },
      "message": "CpuConsumer: Properly track acquired buffers\n\nCpuConsumer cannot simply assume a slot\u0027s buffer is the same buffer\nbetween acquire and release, and therefore it could be possible for\nthe same slot to get used for a second acquired buffer, if there\u0027s a\nproducer disconnect in between. This would cause a problem when the\nfirst buffer is released by the consumer.\n\nInstead, use an independent list of acquired buffers to properly track\ntheir state.\n\nBug: 8291751\nChange-Id: I0241ad8704e53d47318c7179b13daed8181b1fab\n"
    },
    {
      "commit": "306f18c5fb15ac05db09ece7241af02b9713a23d",
      "tree": "25ad5112b9963cd7f6f822690ad1c7f8afef9ef6",
      "parents": [
        "eabe3140f11e515639e7a70a1286dd6af7352c9e",
        "2a9fc493dfdba67108e4335bb1fe931bc1e2a025"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 05 02:30:13 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Mar 05 02:30:13 2013 +0000"
      },
      "message": "Merge \"rework screenshot API and implementation\" into jb-mr2-dev"
    },
    {
      "commit": "2a9fc493dfdba67108e4335bb1fe931bc1e2a025",
      "tree": "552d2161fb4e8ea2254e1a07210b6e52fa67367f",
      "parents": [
        "eb0d12963d271052c24abb025d698504df9e7573"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 01 13:42:57 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 01 22:53:39 2013 -0800"
      },
      "message": "rework screenshot API and implementation\n\n- SurfaceFlinger now supports to take a screenshot\n  directly into an IGraphicBufferProducer\n\n- reimplement the IMemoryHeap screenshot on top\n  of the above\n\n- reimplement LayerScreenshot such that its\n  BufferQueue is directly used as the destination\n  of the screenshot. LayerScreenshot is now a thin\n  wrapper around Layer\n\nBug: 6940974\n\nChange-Id: I69a2096b44b91acbb99eba16f83a9c78d94e0d10\n"
    },
    {
      "commit": "bbb57f3331c7182399ed82e9c4f93a965677dde3",
      "tree": "adf03e3e4c5de3bdc7ade7f954232c3c635f51ca",
      "parents": [
        "98ca63e6d15e47a9b62971f0db6424c13c226019"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Fri Mar 01 20:39:03 2013 +0000"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Fri Mar 01 16:06:48 2013 -0800"
      },
      "message": "Revert \"Change SurfaceControl setPosition to take floats\"\n\nTemporary, to fix weekend build, until we get Nvidia code drop.\n\nThis reverts commit 9a867a8798fa6ea21f6341db31e38ea64fde6c83\n\nDO NOT MERGE\n\nChange-Id: I7b5dbc4db46ef3d97dc8598057d5487d6971178b\n"
    },
    {
      "commit": "eb0d12963d271052c24abb025d698504df9e7573",
      "tree": "184efa40ee389f1302d6197dfc615c7cea06180a",
      "parents": [
        "64d8b1903e4b5f2838818eedcf4fef748b38709c"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 28 11:01:32 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 28 15:51:24 2013 -0800"
      },
      "message": "CpuConsumer: Add optional asynchronous mode\n\nBug: 8290146\nBug: 8291751\n\nChange-Id: I9c8ac4bff38b0411e987a204e540d018dba6d0b4\n"
    },
    {
      "commit": "64d8b1903e4b5f2838818eedcf4fef748b38709c",
      "tree": "e2c90799b9d247a7459251d8aa36b482ed270d56",
      "parents": [
        "a9a1b006e48320f5c501473e51e6c4a5f7a17b88"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 28 14:08:34 2013 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Feb 28 14:20:28 2013 -0800"
      },
      "message": "CpuConsumer: Don\u0027t unlock buffers on producer disconnect\n\nBug: 8291751\n\nChange-Id: I062a3d34b41183d07fb6b9109cdb6bf0c0c75672\n"
    },
    {
      "commit": "9a867a8798fa6ea21f6341db31e38ea64fde6c83",
      "tree": "51454c76465ba27e1f11705464714ed056ec5a4b",
      "parents": [
        "a7121cf44bba20374a20003e13c4eaeb42871eeb"
      ],
      "author": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Feb 21 22:41:15 2013 -0800"
      },
      "committer": {
        "name": "Michael Wright",
        "email": "michaelwr@google.com",
        "time": "Thu Feb 21 22:42:07 2013 -0800"
      },
      "message": "Change SurfaceControl setPosition to take floats\n\nBug: 8153162\nChange-Id: If3c4b7a3e124ace25999eb9a569dc9a806a1fbc2\n"
    },
    {
      "commit": "cf0b8c85fb0106751256dba7821f86b5ad03126c",
      "tree": "c1efe43b77209ecbdfcbe83eeeee0b9a32b26f61",
      "parents": [
        "c4905eb49d20667381f3cda7c6f6894234404bd3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 19 18:24:40 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 19 18:24:40 2013 -0800"
      },
      "message": "get rid of Surface::getISurfaceTexture()\n\nthis was there just for legacy reasons.\n\nChange-Id: I0a48d6e04d7efa65033f9f10c91bba557f16ae8b\n"
    },
    {
      "commit": "c4905eb49d20667381f3cda7c6f6894234404bd3",
      "tree": "e66b6c010448a8592764173d104819ef711569f6",
      "parents": [
        "f25c5086cf46eb029d887f34f25a09220e44958c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 16:34:04 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 16:34:04 2013 -0800"
      },
      "message": "fix build: SurfaceTextureClient to Surface rename\n\nChange-Id: I0041e6f49bc637bc52161c83f0bd44101246f480\n"
    },
    {
      "commit": "f25c5086cf46eb029d887f34f25a09220e44958c",
      "tree": "520d0a4f2758b76ee3b9f6f68c5c436192f38cd0",
      "parents": [
        "b7daa0dadebdb043d63e585975a128c5fc087168"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 14:59:09 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 15 14:59:09 2013 -0800"
      },
      "message": "fix build: SurfaceTextureClient to Surface rename\n\nChange-Id: I54d68241f1080eef640aefe71f33912ad79345ef\n"
    },
    {
      "commit": "e3c697fb929c856b59fa56a8e05a2a7eba187c3d",
      "tree": "fccd3662a79ea1af6124365763f2ebc8db7f6c45",
      "parents": [
        "82052cff2c4da7a2af650cdd6bb7d21293742178"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 17:11:02 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 14 19:19:05 2013 -0800"
      },
      "message": "Refactoring: Rename SurfaceTextureClient to Surface\n\nChange-Id: Ibed34175ae273608393aaa5f0a7df207dc40d709\n"
    },
    {
      "commit": "6d9b9dfd555ee2bc1dd8381dde95d45f9500b3ca",
      "tree": "3d72eafbcc43610d84194f72527f45b8727a14e6",
      "parents": [
        "ac9fa427d4a86745e60a5f7fd8e3ea340c4db907"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 13 15:26:48 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 13 15:27:08 2013 -0800"
      },
      "message": "remove access ANDROID_VIEW_SURFACE_JNI_ID\n\nChange-Id: I0ef474ed9be2cd26fa520ef871ffcf21a25e4994\n"
    },
    {
      "commit": "ac9fa427d4a86745e60a5f7fd8e3ea340c4db907",
      "tree": "657e6ec979339bc0e291247310af356e6a19ef7e",
      "parents": [
        "b997f6ef0f3fa7cf67fd7487b88e5d6ac0bb15e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 11 16:40:36 2013 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 13 15:27:08 2013 -0800"
      },
      "message": "get rid of Surface identity and token\n\nwe use the IBinder instead.\n\nChange-Id: I4aa0b58869ba43f19980013620051e5a261b062d\n"
    },
    {
      "commit": "882e3a39ed770b335a203e233b57127fde1c839e",
      "tree": "ff8230d5c7681c5bf378cbd9eee086b7dfce28a7",
      "parents": [
        "5001001d1164389a96a46121c29e63db20f11281"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jan 08 16:06:15 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Jan 11 10:16:10 2013 -0800"
      },
      "message": "Add some comments.\n\nAlso, minor tweak to SurfaceTextureLayer.\n\nChange-Id: If616d5ee4e8226dd0e16c5dbb0e0f80db553110e\n"
    },
    {
      "commit": "466a192d2088f9238d34597d1aa28da41367c1ca",
      "tree": "070644b217d0c88b68660a9894147eb3456288b2",
      "parents": [
        "757c872c4a6440288bf0343c60b61f89796ca2cd"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jan 08 11:25:51 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jan 08 11:25:51 2013 -0800"
      },
      "message": "Minor tweaks.\n\nChange-Id: I9f82f574112141b6aa074c42303056cd52d5c478\n"
    },
    {
      "commit": "2adaf04fab35cf47c824d74d901b54094e01ccd3",
      "tree": "1201bd220bfea6d308a119e6a986d783e548a10a",
      "parents": [
        "f7baee731e81bfa7f7ccf2e0e03560f5073bc431"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 09:49:45 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 18 13:10:48 2012 -0800"
      },
      "message": "Rename ISurfaceTexture and SurfaceTexture\n\nThe C++ class names don\u0027t match what the classes do, so rename\nISurfaceTexture to IGraphicBufferProducer, and SurfaceTexture to\nGLConsumer.\n\nBug 7736700\n\nChange-Id: Ia03e468888025b5cae3c0ee1995434515dbea387\n"
    },
    {
      "commit": "0273adbf0bc202eda2ca579ae0773464ea9c701f",
      "tree": "f466e35de24729c523155433ede68a09e0068ebd",
      "parents": [
        "44615b88184bfb5827789816a115afa5013badd0"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Dec 12 17:10:08 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Dec 17 12:40:50 2012 -0800"
      },
      "message": "Added some comments\n\nAdded a quick intro section at the top of the class.  Also noted\nthe proposed new name for the class.\n\nChange-Id: I3f79663527544aa4e910db0e5a1374b54d16ba2f\n"
    },
    {
      "commit": "3c1ada982202d97ecd0a9a542b5373e2d78658fb",
      "tree": "76d392d418919474f36d97f86c3a089011b3103a",
      "parents": [
        "c6f04666c205a72add3c856455bf212f0c84d6fc",
        "4def8600305bc2b7f947c9fc0811095b7c17c8e2"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Dec 12 12:16:21 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 12:16:21 2012 -0800"
      },
      "message": "Merge \"SurfaceTextureClient: remove a deprecated ctor\""
    },
    {
      "commit": "4def8600305bc2b7f947c9fc0811095b7c17c8e2",
      "tree": "0794ac1a013274582b6bd3cc3d0d022dedfb7553",
      "parents": [
        "3325fe16e60772188ff99db87c5e8b0e655cd6c7"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Dec 11 17:53:36 2012 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Dec 12 12:13:54 2012 -0800"
      },
      "message": "SurfaceTextureClient: remove a deprecated ctor\n\nChange-Id: Ibf2746fdca26851677cd90199c60eab80f6d0c73\n"
    },
    {
      "commit": "c6f04666c205a72add3c856455bf212f0c84d6fc",
      "tree": "415b8558b426c9f77131cdf4ff13c33498c74f84",
      "parents": [
        "97eba8904c2f221c42a9473407223a4c3a213f75",
        "392edd88cb63d71a21a86a02cf9c56ac97637128"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Dec 12 10:56:42 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 10:56:42 2012 -0800"
      },
      "message": "Merge \"SurfaceFlinger: Move GraphicBufferAlloc to libgui\""
    },
    {
      "commit": "392edd88cb63d71a21a86a02cf9c56ac97637128",
      "tree": "2219b2783b131677f45fea4964db9365c252bb10",
      "parents": [
        "3325fe16e60772188ff99db87c5e8b0e655cd6c7"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Nov 29 23:26:29 2012 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Dec 11 17:54:29 2012 -0800"
      },
      "message": "SurfaceFlinger: Move GraphicBufferAlloc to libgui\n\nThis change moves the GraphicBufferAlloc class from SurfaceFlinger to libgui.\n\nChange-Id: Idf31d2004efa2651b60590733f73c4a7b831e8a9\n"
    },
    {
      "commit": "97eba8904c2f221c42a9473407223a4c3a213f75",
      "tree": "fae035066c532c8f3e1c04d3f1e143cf7c2813d0",
      "parents": [
        "3325fe16e60772188ff99db87c5e8b0e655cd6c7"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 11 15:21:45 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 11 16:26:51 2012 -0800"
      },
      "message": "Avoid unnecessary texture bind\n\nIn SurfaceFlingerConsumer, check to see if native fence sync is\nenabled.  If so, defer the texture binding step to Layer::onDraw.\n\nChange-Id: I7d4034a31c0143207eea2509dfa13ef3820f9b8c\n"
    },
    {
      "commit": "bf974abe92f7495529916fe0f483f3b56e7c30e3",
      "tree": "147906c9c1e1f7f67dba5c8965c9c5d507a93b91",
      "parents": [
        "0e1e53e376ccb3c173ff8e5efeab39b2c5dfd6bd"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 04 16:51:15 2012 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Dec 11 09:42:51 2012 -0800"
      },
      "message": "Refactor SurfaceTexture a bit.\n\nRearranges updateTexImage() so that the SurfaceFlinger-specific\nbehavior is in a new SurfaceFlingerConsumer subclass.\n\nSurfaceTexture behavior should not be altered.  Instead of\nacquire-bind-release we now do acquire-release-bind, but since\nit\u0027s all done with the lock held there shouldn\u0027t be any\nexternally-visible change.\n\nChange-Id: Ia566e4727945e2cfb9359fc6d2a8f8af64d7b7b7\n"
    },
    {
      "commit": "a4a3149a36bc69a06e4824aeae909ab910661070",
      "tree": "9c6cd56ec3362090892d69b0fc4e0d1b31c2f98f",
      "parents": [
        "3bc7b2757125b511377ed918f83f5918d382c514"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Oct 29 13:36:11 2012 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 05 13:39:02 2012 -0800"
      },
      "message": "Change ConsumerBase\u0027s FrameAvailableListener to be a weak pointer\n\nThis prevents strong reference cycles when the listener implementation also\nholds a strong pointer to the ConsumerBase\n\nBug: 7425644\nChange-Id: I1514b13a32b18d421c902dddebec0765a989c55c\n"
    },
    {
      "commit": "dd3cb84cfbe8068790c6233b5829fae9c4a0ee93",
      "tree": "366d14c7147f365dd47f85f418e262dec0427141",
      "parents": [
        "60393d45207b6548e1f61ca104fa59aecee87d30"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 19 18:19:11 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Oct 22 13:41:21 2012 -0700"
      },
      "message": "SurfaceFlinger: add support for secure displays\n\nThis change adds support for displays that are not allowed to display surfaces\nwith the eSecure flag set.  All non-virtual displays are considered secure,\nwhile virtual displays have their secure-ness specified at creation time.\n\nBug: 7368436\nChange-Id: I81ad535d2d1e5a7ff78269017e85b111f0098500\n"
    },
    {
      "commit": "2d5e230292c27d59f4c096bc742a0a19abf811c1",
      "tree": "b8017bb03c4eb1907757de6352059ff84e33646f",
      "parents": [
        "9bdaa60b809b223d14619d1f13afdd38acb1738d"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Oct 15 18:24:43 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Oct 15 19:09:04 2012 -0700"
      },
      "message": "SurfaceFlinger: add animation transactions\n\nThis change adds a transaction flag for WindowManager to indicate that a\ntransaction is being used to animate windows around the screen.  SurfaceFlinger\nwill not allow more than one of these transactions to be outstanding at a time\nto prevent the animation \"frames\" from being dropped.\n\nBug: 7353840\nChange-Id: I6488a6e0e1ed13d27356d2203c9dc766dc6b1759\n"
    },
    {
      "commit": "2a09bb321930e1f782599ec902bca1db58b9af77",
      "tree": "4778c63779a43d78be45c99012163d1b15a4b8e3",
      "parents": [
        "cb55857bbde34a06c19dde3db5064d1717a0173e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 08 19:13:57 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 08 19:13:57 2012 -0700"
      },
      "message": "Add blankDisplay/unblankDisplay to SurfaceComposerClient.\n\nBug: 7309812\nChange-Id: Ia401d642094a46c62f0d26c65da1d11341e203a1\n"
    },
    {
      "commit": "9504eb915c9628e130f45019bdefda0168089886",
      "tree": "1f571cdd5e5e20b674ecc666a2f107ac7949b9a6",
      "parents": [
        "0e8fcc2c27f278478483ebbe1befe1460e8bbed1"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Oct 05 14:34:21 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Oct 05 14:40:50 2012 -0700"
      },
      "message": "Fix race condition in ConsumerBase::addReleaseFence()\n\nThis needs the ConsumerBase mutex locked, but wasn\u0027t locking it. Two\nof the four places that called it already held the lock so were fine.\nNow addReleaseFence() takes the lock itself, and I added\naddReleaseFenceLocked() for the two already-locked callers, since in\none of them dropping the lock would be inconvenient.\n\nBug: 7289269\nChange-Id: I7a5628adb516f8eec782aa6c14128202f96d7b0a\n"
    },
    {
      "commit": "c01a79d77b829e7de86ef137694e8ad708470ca1",
      "tree": "dec2e131548693c8b9bae93352557faed7b3cec9",
      "parents": [
        "4c2732779a11c92222958e7150162d4eaaab7b66"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Sep 27 16:02:06 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Sep 28 13:04:16 2012 -0700"
      },
      "message": "Pass display arg to blank/unblank\n\nThis allows us to blank and unblank displays other than the built-in\ndisplay (e.g. HDMI).\n\nBug: 7240511\nChange-Id: I89ea13f9e497be74c3e1231d0c62fb558e93e0f8\n"
    },
    {
      "commit": "38b657265ccc5ae45bd7860a68b0d9373b47a2f3",
      "tree": "cdba5b527b1938c1ce621236f2617b8b9ce1b86e",
      "parents": [
        "1e83690c6030b33c7776fa65cb57132d5e2d0b40"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Sep 27 15:08:29 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 27 15:52:12 2012 -0700"
      },
      "message": "Revert \"Compatibility work around for bad graphics driver dependency.\"\n\nThis reverts commit a50b51c03aca449920fc8581a738032a7bce7150\n\nChange-Id: Ibdcd776a7f241dbb2475403ea04f939249774c41\n"
    },
    {
      "commit": "4803b74e2a12a508f7bbfde6f6a962fe3299c61c",
      "tree": "7c5540c94aa9f450c2a3b31228a0ece81a04acc0",
      "parents": [
        "a046dd9772cd8da4ead9edc7a89d9992ff0d38cf"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Sep 24 19:07:20 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Sep 25 11:31:46 2012 -0700"
      },
      "message": "Show build config in dumpsys SurfaceFlinger\n\nThis adds a line to the \"dumpsys SurfaceFlinger\" output that shows\nbuild-time configuration values.\n\nExample:\n Build configuration: [sf HAS_CONTEXT_PRIORITY] [libui] \\\n  [libgui USE_FENCE_SYNC]\n\nBug 7206633\n\nChange-Id: Ibe1856b459d34a4be6ee83a4ebfd2807e6cc68a0\n"
    },
    {
      "commit": "e96e9e1093b5700e9f403a6e2479da7dc36d3b71",
      "tree": "491a63497ce36abdfcd940c3770309f819bdb458",
      "parents": [
        "13de3699807f3260cfbabd196a08191d6a80a99a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 24 19:26:11 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 24 19:26:11 2012 -0700"
      },
      "message": "fix a crasher in SurfaceTexture\u0027s setFilteringEnabled\n\nbug: 7211067\nChange-Id: Id8658a8df429d76c20ab9112858b38e52343dc9c\n"
    },
    {
      "commit": "ff28e201ec0c6d620eaaa29814ab52958487dc31",
      "tree": "2d5a08044a7fa4ec5abd42a1aff105afb55f6fb1",
      "parents": [
        "b4d18ed34e3513f3a14ea0876c7e330bee72a529"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 20 23:24:19 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 21 14:20:35 2012 -0700"
      },
      "message": "Display events now always carry the display id they happened on\n\nChange-Id: I12de1d883c23927722bc3a71b782f0079de4e831\n"
    },
    {
      "commit": "148994e5f33ce240ff24ceb5bc0500b7f2001959",
      "tree": "501c488cce1e936a3f840f9e269acdaf999e4ea2",
      "parents": [
        "1604f777d11c40daae8ec91d8ea75625996bfbac"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 19 17:31:36 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 20 17:13:58 2012 -0700"
      },
      "message": "We now report hotplug events to the framework\n\nChange-Id: I2d6b7787d39e5929485a551e4982498c5053c211\n"
    },
    {
      "commit": "3941cb240d438bfdebe24920bb2ada86456a0bf9",
      "tree": "199bc20b70e5be24a8cc987b4bdaec813a01f7b3",
      "parents": [
        "8dfa92fef9759a881e96ee58d59875d35023aab9"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Sep 17 16:58:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 18 10:59:40 2012 -0700"
      },
      "message": "SurfaceTexture: default to doing GL sync\n\nThis change makes updateTexImage default to performing the necessary\nsynchronization and adds an argument for SurfaceFlinger to disable that\nsynchronization so that it can be performed lazily.\n\nChange-Id: I7c20923cc786634126fbf7021c9d2541aa77be5d\nBug: 6991805\n"
    },
    {
      "commit": "8dfa92fef9759a881e96ee58d59875d35023aab9",
      "tree": "c004a49450a89c5ae204eb1d9d4398e44a4badab",
      "parents": [
        "d870703d5566490cfdfb389d9336b2b8d3c6cc7a"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Sep 17 18:27:17 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Sep 18 09:20:23 2012 -0700"
      },
      "message": "Plumb display name into SurfaceFlinger\n\nThe Surface createDisplay() call takes a display name for debugging.\nThis change carries it through SurfaceFlinger and displays it in\nthe \"dumpsys SurfaceFlinger\" output.\n\nBug 7058158\n\nChange-Id: I79f3474a8656ff1beb7b478e0dbf2c5de666118a\n"
    },
    {
      "commit": "6905205c8d130b6ea3a813c1b9283492ed183367",
      "tree": "429c0855a3e4f9eb2610c730501f6c7ff5e0ba71",
      "parents": [
        "6e220a6ce6971555b883f4852c6e5d4c7a617815"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Sep 14 16:10:11 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Sun Sep 16 11:39:09 2012 -0700"
      },
      "message": "Fix transform hints\n\nThe hints were being set a little too late, so the pre-rotation stuff\nwasn\u0027t quite working.\n\nBug 7054997\n\nChange-Id: Id8d5c626db7a76f768ba762a145b315878ee08e6\n"
    },
    {
      "commit": "61e04b92bdeafc6fca89052d14dab1bd0c384a71",
      "tree": "bbc279dd485ae70f48b57cca2cc8b9daf46252cc",
      "parents": [
        "010dd4fb892aecf71e4631c22148fe57ef5b3958"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Sep 09 17:48:42 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Sep 10 13:27:23 2012 -0700"
      },
      "message": "SurfaceTexture: use eglWaitSync\n\nThis change adds a compile-option to use eglWaitSyncANDROID to ensure that\ntexturing operations that access the current buffer of a SurfaceTexture do not\noccur until the buffer is completely written.  It also moves this\nsynchronization into a new SurfaceTexture method called doGLFenceWait and\nchanges SurfaceFlinger\u0027s Layer class to use that method rather than performing\nits own wait on the fence.\n\nChange-Id: I70afa88086ca7ff49a80e3cd03d423767db7cb88\n"
    },
    {
      "commit": "b27254154642575dfb4bbfa79fbedde7d7ee23dd",
      "tree": "20f11812c640baf475d46d04f6c3ac88e47d1829",
      "parents": [
        "331841b96b92646c93c87627c03f77b892f711cd"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 05 20:09:05 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Sep 06 17:54:53 2012 -0700"
      },
      "message": "libgui: move fence handling into ConsumerBase\n\nThis change moves some common fence handling code into the base class for\nBufferQueue consumer classes.  It also makes the ConsumerBase class initialize\na buffer slot\u0027s fence with the acquire fence every time a buffer is acquired.\n\nChange-Id: I0bd88bc269e919653b659bfb3ebfb04dd61692a0\n"
    },
    {
      "commit": "00e8c7a88a5b9c4104a71013a713acd3e4d3b77b",
      "tree": "71fd225e0f7f8dd1a909c64c97718989aa8f06c2",
      "parents": [
        "da8d0a5c0cf9d41915d3b106cad4aaec3e767c11"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 19:30:46 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 19:30:46 2012 -0700"
      },
      "message": "display projection API now has a single function instead of 3\n\nChange-Id: I9bf46d372b77d547486d4bbe6f1953ec8c65e98f\n"
    },
    {
      "commit": "c68f2ecfa02037144d1a3856f637a77f523cf416",
      "tree": "070c904edf7d136ab08a31b5cd0ae72de1ba436e",
      "parents": [
        "9e75ddda93888755d0b14144b62e896cd9f78f3a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:36:22 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Sep 04 14:54:34 2012 -0700"
      },
      "message": "BufferQueue: add a setMaxAcquiredBufferCount check\n\nThis change adds a check to verify the validity of the value passed to\nsetMaxAcquiredBufferCount.\n\nChange-Id: I39730557aa58261e678bd6e4fce11bab78e98362\n"
    },
    {
      "commit": "9e75ddda93888755d0b14144b62e896cd9f78f3a",
      "tree": "0640423774cc05b6b369a09f0b12c4458caca432",
      "parents": [
        "fdb6b49dfa9f1f71b2e564c9f423043f90f9346c"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 31 15:32:45 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 31 17:02:49 2012 -0700"
      },
      "message": "libgui: add BufferQueue test infrastructure\n\nThis change adds some infrastructure for testing the BufferQueue class.  It\nalso includes a test that tests the new check in BufferQueue::acquireBuffer\nthat prevents the consumer from acquiring more than one buffer beyond the max\nacquired buffer count that was set.\n\nChange-Id: I38554ad3f9a53d2ddeba7ef0deee35ec2e2f9775\n"
    },
    {
      "commit": "72f096fb1ad0a0deadbfac5f88627461905d38e8",
      "tree": "b9053a47c5403de32ee622aba17af574323b5a11",
      "parents": [
        "1847f7fd799f92300b3786e49f5883eaa03f4507"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 27 18:48:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 18:26:09 2012 -0700"
      },
      "message": "BufferQueue: use max acquired buffer count\n\nThis change makes BufferQueue derive the min undequeued buffer count from a max\nacquired buffer count that is set by the consumer.  This value may be set at\nany time that a producer is not connected to the BufferQueue rather than at\nBufferQueue construction time.\n\nChange-Id: Icf9f1d91ec612a079968ba0a4621deffe48f4e22\n"
    },
    {
      "commit": "1847f7fd799f92300b3786e49f5883eaa03f4507",
      "tree": "e0ea1ba01bffd276e628a5de013f20f09a13507f",
      "parents": [
        "2b9776982360a234803665cb79e8abcfeb0e3c79",
        "e191e6c34829aec406a9cfe3e95211f884a311ff"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:23:26 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 18:23:27 2012 -0700"
      },
      "message": "Merge \"BufferQueue: simplify max buffer count handling\" into jb-mr1-dev"
    },
    {
      "commit": "2b9776982360a234803665cb79e8abcfeb0e3c79",
      "tree": "3d20ae48be1199dccbbb2e527f2e770be6f0aca4",
      "parents": [
        "f196b56d70df6af753cb08bbb68e52498f0f37f1",
        "31a353da225af5329735451c761b430d82dfda1b"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:21:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 18:21:11 2012 -0700"
      },
      "message": "Merge \"BufferQueue: clean up buffer counting\" into jb-mr1-dev"
    },
    {
      "commit": "94f261556cc5f4aa628cd5b71bf923b583f6e3c3",
      "tree": "d03b949be503c02cbfd562fe492f0602cdaa96c4",
      "parents": [
        "b82af2a8aec99faf6fd37d202b98224cee461a12"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Aug 30 11:53:55 2012 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Aug 30 11:53:55 2012 -0700"
      },
      "message": "Revert \"A vendor ril depends on a native screen shot code.\"\n\nThis reverts commit 9b5782baf0a8a2d7afc7129453beb5df7abe7650.\n\nA new ril for toro, hack no longer needed.\n"
    },
    {
      "commit": "e191e6c34829aec406a9cfe3e95211f884a311ff",
      "tree": "00bc3d5e16b6045f021cdca7474f34fa8a237031",
      "parents": [
        "31a353da225af5329735451c761b430d82dfda1b"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 24 20:26:34 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Aug 29 15:35:34 2012 -0700"
      },
      "message": "BufferQueue: simplify max buffer count handling\n\nThis change reworks how the maximum buffer count is computed.\n\nChange-Id: I7d3745814b9bd6f6f447f86bfea8eb7729914ebf\n"
    },
    {
      "commit": "31a353da225af5329735451c761b430d82dfda1b",
      "tree": "8fa7940f99fd7e80f13bcc58840456f48fcd9178",
      "parents": [
        "c1396dd14506d29e92fc047141d62b3d9246a72d"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 24 17:25:13 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Aug 29 15:35:34 2012 -0700"
      },
      "message": "BufferQueue: clean up buffer counting\n\nThis change is a clean up of some of the handling of the maximum number of\nbuffers that are allowed at once.  It mostly renames a few member variables and\nmethods, but it includes a couple small refactorings.\n\nChange-Id: I9959310f563d09583548d4291e1050a7bbc7d87d\n"
    },
    {
      "commit": "9b5782baf0a8a2d7afc7129453beb5df7abe7650",
      "tree": "0330952a7225ad4b42a32fa049a22faccc3ad549",
      "parents": [
        "55801e41e6d7306d75d8134dd69d7d8cbbfbc63c"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Aug 28 16:20:50 2012 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Aug 28 16:20:50 2012 -0700"
      },
      "message": "A vendor ril depends on a native screen shot code.\n\nAdd a temporary shim until the vendor fixes the ril.\n\nBug: 7073467\nChange-Id: Ia95a58bd90677c03406c988d1c29ae785f8662f2\n"
    },
    {
      "commit": "3ee454a7bef8bd3d1c9cdd9d17108eb80ebadf2a",
      "tree": "008181467301126011532e5a7e7ac703b54c81d1",
      "parents": [
        "a50b51c03aca449920fc8581a738032a7bce7150"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 27 16:28:24 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 27 17:43:43 2012 -0700"
      },
      "message": "Eradicate DisplayID.\n\nDisplayDevices are now keyed of the wp\u003cIBinder\u003e the client uses.\nDisplayID has now become DisplayType which is just used to identify\nphysical displays (as opposed to virtual displays such as wifi displays).\n\nChange-Id: I0c5968f2c902dcd699a7e0afacf833ff070c12ea\n"
    },
    {
      "commit": "a50b51c03aca449920fc8581a738032a7bce7150",
      "tree": "1a8e8a4ef6c7fe48c9790c5960be013c2fd913e5",
      "parents": [
        "1ae49e3fef34ee38f8dfeb08b5914e3362af3b2f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 17:06:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 17:20:53 2012 -0700"
      },
      "message": "Compatibility work around for bad graphics driver dependency.\n\nThis is a compatibility shim for one product whose drivers\nare depending on SurfaceComposerClient::getDisplayInfo(\nint, DisplayInfo*) when it really shouldn\u0027t.\n\nRevert this patch when the problem has been resolved.\n\nBug: 7065398\nChange-Id: I6542691b81fd1b1e1d79500a62e82d40a3d51db7\n"
    },
    {
      "commit": "380223bf1b340e7503177254a60d5982f95ab793",
      "tree": "7470d7e9b12987706d47b0112815f670452bb885",
      "parents": [
        "9d4e3d2f42e93e2d12bacabe97d307d30c3c20dd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 22:49:35 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:40:17 2012 -0700"
      },
      "message": "Remove unused \"layer\" argument from show().\n\nChange-Id: I8944a9f4a27c330b11e5e837c69b88c8f84145ba\n"
    },
    {
      "commit": "9d4e3d2f42e93e2d12bacabe97d307d30c3c20dd",
      "tree": "3db010ef45a3793c5b09887ae321b4a8095a5001",
      "parents": [
        "225c66a48cdc3acef21ee380dc134449749d3cb3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 24 20:00:51 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:40:17 2012 -0700"
      },
      "message": "Banish DisplayID from the SurfaceFlinger API.\n\nUse only display tokens in the API to refer to new displays.\n\nDon\u0027t require the caller to specify the display when creating\na surface (since in general a surface could be shown on\nany display).\n\nThis is intended to be a minimum change just to update the API.\nNote that SurfaceFlinger still uses DisplayID in a few places\ninternally that might cause some features not to work properly\nwhen there are multiple displays (LayerScreenshot, for example).\n\nChange-Id: I3d91eec2da406eefd97bcd53655d403ad865a7e6\n"
    },
    {
      "commit": "490aee0fc5012acf2bf0b1dfe9c09e6fcca606fc",
      "tree": "97fed915e84c3697091a9897fdb459f814071cfd",
      "parents": [
        "9b6a395e65ff88ab79fe92d6f112c434441ca606",
        "9fea3421ffddf6480f57f55a25936a886043d909"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 24 11:11:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 24 11:11:07 2012 -0700"
      },
      "message": "Merge \"SurfaceTexture: inherit from ConsumerBase (try 2)\" into jb-mr1-dev"
    },
    {
      "commit": "9fea3421ffddf6480f57f55a25936a886043d909",
      "tree": "a624dbef8abd005bbbe57715b234fee4240b32c2",
      "parents": [
        "317357fdf7a2b542dfdaa06f42ff7f5f0153f9a3"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 07 18:03:04 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 21 16:41:03 2012 -0700"
      },
      "message": "SurfaceTexture: inherit from ConsumerBase (try 2)\n\nThis change makes SurfaceTexture inherit from ConsumerBase.  It removes all of\nthe functionality from SurfaceTexture that is now provided by the base class.\nThis includes fixes for two bugs that were found after checking this change in\nthe first time and then reverting it.\n\nChange-Id: Ie2d9f4f27cfef26fdac341de3152e842b01a58d2\n"
    },
    {
      "commit": "e232fdca2a62dc5e81b550f5be8710e36174e7a6",
      "tree": "567431349bc9770cb9282a2633015cc5237407fa",
      "parents": [
        "f57e7540d4cf799f18fe87d3536c55f1e0064931"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 13:37:35 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 15:46:35 2012 -0700"
      },
      "message": "Add BufferItemConsumer, a simple BufferQueue consumer.\n\nBufferItemConsumer allows for acquiring BufferQueue\u0027s BufferItems,\nwhich contain all the data and metadata the BufferQueue has for a\ngiven graphics buffer.\n\nThis consumer is useful when direct access to the native buffer_handles\nis needed by the client.\n\nAlso includes a minor cleanup of CpuConsumer\u0027s use of \u0027virtual\u0027.\n\nBug: 6243944\nChange-Id: If7dc4192b15ac499555f1eda42a85140f2434795\n"
    },
    {
      "commit": "f57e7540d4cf799f18fe87d3536c55f1e0064931",
      "tree": "a6b8e1fe1fb257a41fdf7bc0c9ee35d7aa6d0bb1",
      "parents": [
        "13233e067b8f71adc3a0ade5f442265e1f27084b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 15:44:40 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 15:44:40 2012 -0700"
      },
      "message": "CpuConsumer: inherit from ConsumerBase\n\nChange-Id: I55178b1d673ffa0fbc6e63ef47642c64d4d03228\n"
    },
    {
      "commit": "8683fca395d01734ec7946e9f0595ec5d7b754c6",
      "tree": "fe3f6b92245be46902760c129e395c94589b9895",
      "parents": [
        "e57f292595bec48f65c8088b00ff6beea01217e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Aug 12 19:37:16 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 13 02:46:05 2012 -0700"
      },
      "message": "improve [un]marshalling of non-binder objects\n\nthis change introduces a new class LightFlattenable\u003c\u003e which is\na protocol to flatten simple objects that don\u0027t require\nbinders or file descriptors; the benefit of this protocol is that\nit doesn\u0027t require the objects to have a virtual table and give us\na consitant way of doing this.\n\nwe also introduce an implementation of this protocol for\nPOD structures, LightFlattenablePod\u003c\u003e.\n\nParcel has been update to handle this protocol automatically.\n\nSensor, Rect, Point and Region now use this new protocol.\n\nChange-Id: Icb3ce7fa1d785249eb666f39c2129f2fc143ea4a\n"
    },
    {
      "commit": "e57f292595bec48f65c8088b00ff6beea01217e9",
      "tree": "2db8aac9c9056e099ad70d7ce70eb0ac7a8223ae",
      "parents": [
        "ef7b9c7eac036cc1230c64821039d18f8cbd2c1c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 09 16:29:12 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 17:32:33 2012 -0700"
      },
      "message": "make multi-display more real\n\n- displays are represented by a binder on the client side\n- c++ clients can now create and modify displays\n\nChange-Id: I203ea5b4beae0819d742ec5171c27568f4e8354b\n"
    },
    {
      "commit": "3165cc21cfea781988407b19bd83292b19f05f55",
      "tree": "c15822a2e6e291d2b33bffb31769b4c2ec003d20",
      "parents": [
        "1e26087493ac0e7d7dc6dea8ad85cfef08b3271f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 08 19:42:09 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 13:18:24 2012 -0700"
      },
      "message": "libgui includes refactoring\n\nChange-Id: I1d24ec17f5003ec2abab5f7472daaff4cc4cc2d3\n"
    },
    {
      "commit": "1a4d883dcc1725892bfb5c28dec255a233186524",
      "tree": "f62c82a907154a122adc89bdd2389f6797828975",
      "parents": [
        "028a7572c81f91e4039b694cde1f55fdb3e483c7"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 02 20:11:05 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 06 18:55:01 2012 -0700"
      },
      "message": "surfaceflinger: refactor FrambufferSurface\n\nThis change refactors the FramebufferSurface class to inherit from the new\nConsumerBase class.\n\nBug: 6620200\nChange-Id: I46ec942ddb019658e3c5e79465548b171b2261f2\n"
    },
    {
      "commit": "92efd84f37ce5a8aae74dc9086f825a67b6894e9",
      "tree": "a943214d564f8f702491aeac0b21149a38dcf1b6",
      "parents": [
        "92a979a92c34b7de609ce2b1662c73bb8a2728b9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 21:27:56 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 03 13:22:58 2012 -0700"
      },
      "message": "screen-off animation won\u0027t be handled by SF anymore\n\nChange-Id: Idc41386804ae7d7eb981c36e1bc55c270870c8d0\n"
    },
    {
      "commit": "c666cae2d5995097ec49a87e375e2afdd92802b7",
      "tree": "235abd54f4c3c6ed2c6b59bbade55a6459f13ed8",
      "parents": [
        "028508cad5ef63ef9fbd42c14e76658e4fd9ebf2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 25 18:56:13 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 25 21:13:10 2012 -0700"
      },
      "message": "get rid of the shared-memory control block\n\nChange-Id: If814060aca1d2ff2619d4adcd57296983d207f7f\n"
    },
    {
      "commit": "8785578391eacd4192333d7b0ce3afedd7d163e6",
      "tree": "62249d4b8556b12eede54e09c9b5a5f34f9e52ec",
      "parents": [
        "8b33f032327f8de0dcc0e6d0d43ed80f834b51f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 21:41:09 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 21:42:27 2012 -0700"
      },
      "message": "add a layerStack attribute to Layers.\n\nthis attribute can be set through a regular transaction using\nSurfaceComposerClient (just like any other attribute, eg: position or size)\n\nChange-Id: I701a47c677ea6442ca713728a93335328cd2b172\n"
    },
    {
      "commit": "8b33f032327f8de0dcc0e6d0d43ed80f834b51f6",
      "tree": "d6228a0088740fe5f5c73f405f353bffd121bbae",
      "parents": [
        "921e6ac4b7610a178285898d191eb0e3afe906c0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 20:43:54 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 20:43:54 2012 -0700"
      },
      "message": "update SF binder protocol to support setting display attributes\n\nno change of functionality -- the old behavior is implemented\non top of this new protocol.\nthis new protocol will allow, eventually, to pass informations\nabout displays and layer stacks.\n\nChange-Id: Ic6c2295e61ec8ecbc8ce01ab7664e35d928202fc\n"
    },
    {
      "commit": "6d7e32c672189ef2b900fc5467dbf603f84dce54",
      "tree": "31b3b887ced52674edef77d27cb0b2d07530a947",
      "parents": [
        "6501e9944df131b3b7e293007084735dfa217f24"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 16:05:50 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 16:05:50 2012 -0700"
      },
      "message": "Remove unused layer flags.\n\nChange-Id: Ia85365f18770a9a2c0a0e30ae56b6c2226d41be6\n"
    },
    {
      "commit": "6501e9944df131b3b7e293007084735dfa217f24",
      "tree": "2849339f6af82a543c3e75edae089bd2c46b9e0e",
      "parents": [
        "f9176a93a5c9061fe001c91bca50dd0a58d54f10"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 15:38:18 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 15:38:18 2012 -0700"
      },
      "message": "Remove freeze(), unfreeze() and setFreezeTint().\n\nThis is all dead code.\n\nChange-Id: I646673aac793a6ec45021c370a2450f0ea4fbcce\n"
    },
    {
      "commit": "f9176a93a5c9061fe001c91bca50dd0a58d54f10",
      "tree": "f4b0455ebf6dc7f5a722917866e254934eff0c29",
      "parents": [
        "4bb0164f8ac26a71113f44b4d482cf8167b5b5ee"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 14:58:11 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 14:58:11 2012 -0700"
      },
      "message": "Remove freezeDisplay(), which is no-op.\n\nChange-Id: I2b70249a1545636fd6d98b58057b22f9529cad21\n"
    },
    {
      "commit": "dc5b485f74edf2d2f31c62054eb6c180421a3ade",
      "tree": "f33c9322cadc2895f0e0f28c1968d796c423c8c6",
      "parents": [
        "b42b1ac1587aebda5e2f334d95b620271fafba4e"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 29 15:21:18 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Jun 30 21:38:51 2012 -0700"
      },
      "message": "Pass fence to HWC on first use of buffer\n\nAlso do a CPU-wait on the fence before using it for GL composition.\n\nChange-Id: I0f645a42a44803276cae11b904e5a26d65871562\n"
    },
    {
      "commit": "b42b1ac1587aebda5e2f334d95b620271fafba4e",
      "tree": "5852fb46f80587194d109b3baa04a91af443181b",
      "parents": [
        "c777b0b3b9b0ea5d8e378fccde6935765e28e329"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 28 14:27:53 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Jun 30 21:38:51 2012 -0700"
      },
      "message": "Return fence from acquireBuffer\n\nChange-Id: Iab22054c1dc4fd84affab3cc5bbdcd5a1e689666\n"
    },
    {
      "commit": "c777b0b3b9b0ea5d8e378fccde6935765e28e329",
      "tree": "83ef3d6288766dc474bb9a77ebc947b0857865df",
      "parents": [
        "02a7be74dd0c4eb47a522cb0f646736cb6d0de01"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 28 12:52:05 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Jun 30 21:38:51 2012 -0700"
      },
      "message": "Pass fences with buffers from SurfaceTextureClient\n\nChange-Id: I09b49433788d01e8b2b3684bb4d0112be29538d3\n"
    },
    {
      "commit": "3094df359d1e6e2ae8ca4e935cc093f563804c96",
      "tree": "e103ad608725652ec640963481151b59432c7475",
      "parents": [
        "852db07d69352ec5f75e16a6e5059f05faabdaf5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 18 18:06:45 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 28 15:51:08 2012 -0700"
      },
      "message": "First prototype atttempting to support an external display\n\nboth API and implementation will change, this is just a prototype\nintended to show feasability.\n\nSurfaceFlinger is passed an ISurfaceTexture through a new\ncallback, it is in turn used to create an EGLSurface which\nsurfaceflinger will draw into in addition to the main screen.\n\nChange-Id: Id0bbb0b854bb7bae44d57246a90b65d4567f9a21\n"
    },
    {
      "commit": "f78575400977f644cf0b12beb2fa5fc278b6ed4c",
      "tree": "075c491472c6584c30920dbb26f8c97811e2f882",
      "parents": [
        "ef19414bd8b77a26f5751f3845be79025a8263fe"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 14 15:26:33 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 22:21:12 2012 -0700"
      },
      "message": "Pass fences from BufferQueue to SurfaceTextureClient\n\nISurfaceTexture::dequeueBuffer now returns the buffer\u0027s fence for the\nclient to wait on. For BufferQueue, this means passing it through\nBinder so it can be returned to the SurfaceTextureClient. Now\nSurfaceTextureClient is responsible for waiting on the fence in\ndequeueBuffer instead of BufferQueue: one step closer to the goal.\n\nChange-Id: I677ae758bcd23acee2d784b8cec11b32cccc196d\n"
    },
    {
      "commit": "ef19414bd8b77a26f5751f3845be79025a8263fe",
      "tree": "9624b3d718e065747bedff50cb969151d675a471",
      "parents": [
        "a74cbc06493ed941a8a54f2f1d0074f03fc9aafb"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 14 14:45:17 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 22:21:12 2012 -0700"
      },
      "message": "Transfer HWC release fences to BufferQueue\n\nAfter a HWC set, each SurfaceFlinger Layer retrieves the release fence\nHWC returned and gives it to the layer\u0027s SurfaceTexture. The\nSurfaceTexture accumulates the fences into a merged fence until the\nnext updateTexImage, then passes the merged fence to the BufferQueue\nin releaseBuffer.\n\nIn a follow-on change, BufferQueue will return the fence along with\nthe buffer slot in dequeueBuffer. For now, dequeueBuffer waits for the\nfence to signal before returning.\n\nThe releaseFence default value for BufferQueue::releaseBuffer() is\ntemporary to avoid transient build breaks with a multi-project\ncheckin. It\u0027ll disappear in the next change.\n\nChange-Id: Iaa9a0d5775235585d9cbf453d3a64623d08013d9\n"
    },
    {
      "commit": "d8e812ce6fe9ae0388e98b08456e1d18b9498239",
      "tree": "49d694305ba98c49997e8d92ece28da939ad13ed",
      "parents": [
        "f25e183a70bd631f75dce51e85b7d568472a0cdb"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jun 13 16:32:25 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Jun 20 15:48:30 2012 -0700"
      },
      "message": "Update ANativeWindow clients for sync\n\nThis change updates the uses of ANativeWindow to use the new ANW functions that\naccept and return Sync HAL fence file descriptors.\n\nChange-Id: I3ca648b6ac33f7360e86754f924aa072f95242f6\n"
    },
    {
      "commit": "3e87601170141229d661df93e2f59e1ced73474b",
      "tree": "e079df58541938d0854cabb2a1394c221a2dc98f",
      "parents": [
        "04d7eaf138678ef591076ff02b896f93394bcfaf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 07 17:52:54 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 13 18:07:47 2012 -0700"
      },
      "message": "Implement SurfaceFlinger\u0027s ANW on top of BufferQueue\n\nSF now has its own implementation of ANW for the\nframebuffer and it uses BufferQueue. FramebufferNativeWindow\nis now only used by stand-alone apps.\n\nChange-Id: Iddeb24087df62bd92b0f78e391dda9b97ddc859c\n"
    }
  ],
  "next": "8e533069e5721e55cb9768e140e16546c3a4a8b6"
}
