)]}'
{
  "log": [
    {
      "commit": "4b0eba949cc026ffb2c75313042d8a7bcb3fcf86",
      "tree": "a860bceded96363d6ff068fd586863be689ed0b0",
      "parents": [
        "33c544c4d3af8bae518474df6a9da9b7c349b91a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Feb 05 13:30:24 2013 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Feb 08 13:32:21 2013 -0800"
      },
      "message": "SurfaceFlinger: add win anim frame time tracking\n\nThis change makes the \u0027dumpsys SurfaceFlinger --latency\u0027 command with no extra\nargs dump the frame timestamp data for the most recent frames that\nSurfaceFlinger generated that included window animation transaction changes.\n\nChange-Id: I8bded1ea08a4cddefef0aa955401052bb9107c90\n"
    },
    {
      "commit": "c19c15174b1a07c5d18f45f26bee7893481ab41d",
      "tree": "b2944ccadd80d382eb9ab41700b492ea36f319f9",
      "parents": [
        "8f06a8c2c80491465e8742c1bf45315dab7017e3",
        "882e3a39ed770b335a203e233b57127fde1c839e"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Jan 11 15:05:39 2013 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 11 15:05:40 2013 -0800"
      },
      "message": "Merge \"Add some comments.\""
    },
    {
      "commit": "8f06a8c2c80491465e8742c1bf45315dab7017e3",
      "tree": "86da2bb19e512e539737ca2d583673875e6e6bc8",
      "parents": [
        "5001001d1164389a96a46121c29e63db20f11281"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Jan 11 10:24:34 2013 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Jan 11 10:24:34 2013 -0800"
      },
      "message": "Reduce C++11 warnings\n\nA few typecasts to fix \"narrowing conversion\" complaints.\n\nChange-Id: Ib2118079a2ca33959c748d03d8c6f1722d62e8fe\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": "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": "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": "9913b9941ef90a98d826f3338c0a1ec3e4497b8c",
      "tree": "87abab333c202a8bdbc2ad2d2155209bccae8158",
      "parents": [
        "9d0e4708a10d99ae5c62382f2841bae629c09f45",
        "a7da0dda39cf1e807eea1304b48d4583e7329b72"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 27 18:43:52 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 27 18:43:52 2012 -0800"
      },
      "message": "am a7da0dda: am 98cbec81: am efd614b8: Merge \"make transform hint multi-display aware\" into jb-mr1.1-dev\n\n* commit \u0027a7da0dda39cf1e807eea1304b48d4583e7329b72\u0027:\n  make transform hint multi-display aware\n"
    },
    {
      "commit": "a7da0dda39cf1e807eea1304b48d4583e7329b72",
      "tree": "92cae0d04c72a79467a66e62bfdf542a18df2c30",
      "parents": [
        "1e310d64d1e51faf35962f23da1c90ec95a35e5d",
        "98cbec81be1d39223e33abde9ac35e43b62918bf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 27 16:10:29 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 27 16:10:29 2012 -0800"
      },
      "message": "am 98cbec81: am efd614b8: Merge \"make transform hint multi-display aware\" into jb-mr1.1-dev\n\n* commit \u002798cbec81be1d39223e33abde9ac35e43b62918bf\u0027:\n  make transform hint multi-display aware\n"
    },
    {
      "commit": "6edebdf6003d7efdbf9ca5dc83fef17b750693f1",
      "tree": "571a7486b66f916b70f508f57dad723133dc5414",
      "parents": [
        "41f7736ad1e72df8796416a82ce3cede6193d1eb"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Nov 08 15:41:56 2012 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Nov 27 12:30:18 2012 -0800"
      },
      "message": "Create builtin display tokens on demand\n\nFor hotpluggable builtin displays (currently just HDMI), create the\ndisplay device IBinder token when the display is connected and destroy\nit when the display is disconnected. Previously we created the tokens\nat startup and never changed them. This made it so that when comparing\ncurrent and drawing state, we couldn\u0027t tell whether a display had been\ndisconnected and reconnected.\n\nBug: 7491120\nChange-Id: I2ac82b864e10cb1cd0a308782d7e0ab9745c5d81\n"
    },
    {
      "commit": "8430095879d2fa6878e68f8f12da4e704815ac09",
      "tree": "9e390872accbfdfd1e6d16b9c9e9e537d024ae78",
      "parents": [
        "764c197c6fc2bf10b038c33b320a4e95594d52d8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Nov 21 16:02:13 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Nov 21 16:03:52 2012 -0800"
      },
      "message": "make transform hint multi-display aware\n\nif a layer is not mirrored, we now use its display\nas the source for the transfrom hint calculation\ninstead of always using the default (main) display.\n\nthis change does two thing:\n1) we make updateTransformHint take a DisplayDevice\n   as a parameter instead of hard-coding the\n   main display.\n\n2) each time we do a transaction that could change\n   the hint, we go through all layers and\n   figure out which display should be used for their\n   transform hint.\n\nBug: 7599344\nChange-Id: I9b04a95e6c372dd770bacf81d8ef6f8e31b87b83\n"
    },
    {
      "commit": "692c723e84e6f2747447d871d468ff50e5c73f19",
      "tree": "e2496cdf584ae68b79d12e1b27bc0b31a7990502",
      "parents": [
        "1493a3974a725d6873f317b774be333ca035a64c"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Nov 08 15:41:56 2012 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Nov 09 11:48:25 2012 -0800"
      },
      "message": "Create builtin display tokens on demand\n\nFor hotpluggable builtin displays (currently just HDMI), create the\ndisplay device IBinder token when the display is connected and destroy\nit when the display is disconnected. Previously we created the tokens\nat startup and never changed them. This made it so that when comparing\ncurrent and drawing state, we couldn\u0027t tell whether a display had been\ndisconnected and reconnected.\n\nBug: 7491120\nChange-Id: I23b77037dc0f548d549abf580339edd0e3c626e9\n"
    },
    {
      "commit": "2788a3526d7abb9afc64d10118a03734327a89e7",
      "tree": "442d793ef58f5cd77b1c0d1db8a0b6804723ab0f",
      "parents": [
        "74284b9467a753209054bfa769ba1e6d110e34f9",
        "731e0331eb402ec4564b69eaeb8b605a8b800b1b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 05 18:19:53 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 05 18:19:53 2012 -0800"
      },
      "message": "am 731e0331: am e70fbe8b: am 02b95105: fix transitions from hwc to GLES composition\n\n* commit \u0027731e0331eb402ec4564b69eaeb8b605a8b800b1b\u0027:\n  fix transitions from hwc to GLES composition\n"
    },
    {
      "commit": "02b95105754b1859a97e234b79f41489a4677c20",
      "tree": "3d6d537b1187b7cb79d36ba395d1fe3f446a3042",
      "parents": [
        "2281af967dd840aade7bc55b19ea7df0e6da36f2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 05 17:50:57 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 05 17:50:57 2012 -0800"
      },
      "message": "fix transitions from hwc to GLES composition\n\nIf we switched from HWC to GLES but the dirty region was empty\n(could happen if the dirty region is outside of the screen for instance), we\nneed to force a full screen composition.\n\nIn this change we ignore the dirty region for the purpose of\nrejecting the whole update and we rely on the fact that it will later\nbe expanded to the whole screen. This was the least risky fix.\n\nBug: 7467760, 7452931\nChange-Id: I2132f2f963b00a3ce7150adadb107b0367b3862e\n"
    },
    {
      "commit": "766dc49c17dda977bf7b93a5fd8da41c0b737611",
      "tree": "85f5222635ac299c05afa458d30d9d3d28cf6632",
      "parents": [
        "13990bb4ca3940daef5500bfcb08e584cd2acb13"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 30 18:08:06 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 31 14:22:51 2012 -0700"
      },
      "message": "rework a bit how we scissor the display\n\nthe scissor rect is now computed once by DisplayDevice\nand is combined with the \"undefined\" region so that\nthe letter-boxed area of the screen get cleared in\ndrawWormhole.\n\nBug: 7149437\nChange-Id: Id2f30516a5786f32eace7f876ff32028f954f357\n"
    },
    {
      "commit": "f45c510009edab4a3e93f8d66b2e30aa26759fed",
      "tree": "556d04bd8536c08086985a129b1cf4505eee70bc",
      "parents": [
        "04075569b565c949a6db8b4e8a9f10d281de4d9c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 24 16:29:17 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 25 12:42:42 2012 -0700"
      },
      "message": "partially implement external display clipping\n\nwe perform external display clipping only on the GL\nside (ie: not done on the h/w composer side, which is\nharder and would be too risky). in practice this means\nthat WFD will be clipped properly, while HDMI *may* or\nmay not depending on how hwc is used.\n\nBug: 7149437\nChange-Id: I92d4d04220db72b6ffb134c7fa7a93af569723a5\n"
    },
    {
      "commit": "d17e3b5f6cf71eb52bc81f37719254ce08244b34",
      "tree": "65c6059bd12beca43b36d5299337a9d77b4608e4",
      "parents": [
        "ba7dc2db6e93a2407c8c328f2838591b7b760658"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 22 14:27:45 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 22 14:54:23 2012 -0700"
      },
      "message": "prevent a client from crashing surfaceflinger\n\na misbehaving or malicious client could cause SF to crash\nby providing a \"fake\" IInterface. we now check the\nIInterface we get is our own and local.\n\nBug: 7278879\nChange-Id: Ia19d05902d4b2385c5a16416148378d4998833fd\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": "7c41bf7092b75dba6029cd3bbc842d3a2661b0aa",
      "tree": "5653e1c2f5d3638bec44000f913b5a480370ccad",
      "parents": [
        "7f79a2bd5c92bc626890dc16ffb8cd2de934e5fb"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 17 09:29:47 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 17 09:40:07 2012 -0700"
      },
      "message": "SurfaceFlinger: change the animation timeout\n\nThis change changes the animation transaction timeout from 500us to 5s.\n\nBug: 7362633\nChange-Id: I9bed8e74f726dae2daa398afc29babcea00d5b04\n"
    },
    {
      "commit": "db9b41fd157279d1b988a854e0d7c5b43c2fac38",
      "tree": "7a478057b9f23065a8d0353fe75c7bfb9a4a2486",
      "parents": [
        "3365c56716432d3bfdf41bb82fb08df821f41d0c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 15 16:51:41 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 15 20:31:12 2012 -0700"
      },
      "message": "fix a corruption in blank/unblank\n\nwe were holding a reference (ie: pointer) to a sp\u003cDisplayDevice\u003e\nwhile processing the message. Meanwhile the object itself could\ngo away and we would end up accessing a dead object.\n\nthe root cause of the problem is that we are accessing mDisplays[]\nin a few places outside of the main thread.\n\nBug: 7352770\nChange-Id: I89e35dd85fb30e9a6383eca9a0bbc7028363876c\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": "9e9689c11148521d2c16a121a0b87b062be0714c",
      "tree": "dcfa97e91f8535de0eb0d52dff0e23f102d52a8e",
      "parents": [
        "0acb00c2d780b60ed3d71be256460375dd8715b4"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Oct 10 18:17:51 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Oct 10 18:17:51 2012 -0700"
      },
      "message": "Fix HDMI unblank behavior\n\nTwo issues:\n\n(1) We were announcing the hotplug event before we were ready to\nhandle blank/unblank events, so we were losing the initial unblank\nthat power manager sends us when HDMI is first plugged in.  This\nleft the display blank until you toggled the device power off/on.\n\n(2) We were retaining fbTargetHandle for HDMI after the display was\ndisconnected.  The value didn\u0027t get updated when HDMI was reconnected\nbecause the display was blank, so we didn\u0027t go through that code\npath.  So, when HDMI was re-connected, we passed stale data into\nthe HWC.\n\nBug 7323938\n\nChange-Id: I2335d24fd7b0f00bb23fc63aa7bcf44cb8857c73\n"
    },
    {
      "commit": "3292cae8c37fc8d7cd8bf77fafaa55e6fc7a8cc5",
      "tree": "b475993b83107d821c5c2b7414f7301f8e216461",
      "parents": [
        "2a09bb321930e1f782599ec902bca1db58b9af77"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 08 15:12:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 09 14:49:01 2012 -0700"
      },
      "message": "don\u0027t automatically unblank external displays\n\nthis should be handled by the display-manager. we were doing\nthat in SF because until recently we didn\u0027t have enough support\nin the HAL. however, this is now causing other problems when\nplugging hdmi while the screen is off for instance.\n\nBug: 7150885\nChange-Id: I739b209056a765d38d05295cf202f67ee0f506ae\n"
    },
    {
      "commit": "cb55857bbde34a06c19dde3db5064d1717a0173e",
      "tree": "3556b41902f345adefe68f31da5a2f5c3be1572d",
      "parents": [
        "1b3aeb4844fe198c1fb61064d0cec3f5ac63f7d3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 04 15:58:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Oct 08 15:57:17 2012 -0700"
      },
      "message": "fix dumpsys Layer name when using multiple displays\n\nBug: 7288401\nChange-Id: I14beeef58fac5270cef3b611e18c163060efe6c3\n"
    },
    {
      "commit": "9a14392256354538f1f43a5e80fe46c2c2b965cb",
      "tree": "c0dc91ffe37eb9f3e468d51c8ceb465d663c6a61",
      "parents": [
        "81cd5d3b94d21253a0be925f4ae58cc7f4afeef7"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Oct 04 16:29:19 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Oct 04 16:40:35 2012 -0700"
      },
      "message": "Ignore display state changes for disconnected displays\n\nWhen a display is disconnected, removing it from SurfaceFlinger\u0027s\ndisplay list is non-atomic with removing it from the Display Manager\nand any in-flight transactions. So SurfaceFlinger might get a display\nstate change transaction for a display it has already forgotten about.\nJust ignore these.\n\nBug: 7288082\nChange-Id: Ic27e55377f3db40fb34e3b1cd67e43297df117a2\n"
    },
    {
      "commit": "81cd5d3b94d21253a0be925f4ae58cc7f4afeef7",
      "tree": "decaf197dbbf88bf64a2547a241ec6df19a2bfe5",
      "parents": [
        "27ec5739bc05330e08b02f25b62a8f597bad897a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 04 02:34:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Oct 04 15:25:32 2012 -0700"
      },
      "message": "make sure we don\u0027t call into the HWC HAL when not needed\n\nwhen enabling/disabling vsync we now make sure to\nnot call into the HAL if the state wouldn\u0027t change.\n\nBug: 7274951\n\nChange-Id: Ie24a6d68888a51b577acf9c2a973d85437cbacaf\n"
    },
    {
      "commit": "27ec5739bc05330e08b02f25b62a8f597bad897a",
      "tree": "50e484067f099f8803beb531655ed4479cdcaba1",
      "parents": [
        "a573945df7d21cfb73aa9cdba41561105e2ffb01"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Oct 02 19:04:45 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 04 02:02:23 2012 -0700"
      },
      "message": "Fix crashes after HDMI disconnect\n\nThe display was being removed from SurfaceFlinger\u0027s list before we\nhad a chance to reset HWComposer\u0027s layer list, so we were passing\nstale data into the hardware composer (which has its own per-display\ndata).  This resulted in \"invalid gralloc handle\" complaints.\nWe now clear the layer list immediately after removing the display.\n\nThe display was being removed while its EGLSurface was still\n\"current\", resulting in \"cancelBuffer: BufferQueue has been\nabandoned\" complaints.  We now call makeCurrent on the primary\ndisplay before removing the external display.\n\nBug 7274254\n\nChange-Id: Ia59e3a61d7ec46488b96bf93ec5e4ed3488b70e4\n"
    },
    {
      "commit": "135e5899f70a67e62baaf6dbec7ba2ce611ca16a",
      "tree": "0e83801bb331052c2d47fabfc156d625c1cc1132",
      "parents": [
        "bae92d0d605e99a14731add4f11b72413b2835e5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 30 16:43:20 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 30 16:43:20 2012 -0700"
      },
      "message": "save/restore viewport properly when taking screenshot\n\nBug: 7241739\nChange-Id: Iba8b9ffc75ab47fbc56169e65da26d96850a9297\n"
    },
    {
      "commit": "bae92d0d605e99a14731add4f11b72413b2835e5",
      "tree": "d0fcccabcc250eb6d82bc00a1281f01f41494d0a",
      "parents": [
        "c01a79d77b829e7de86ef137694e8ad708470ca1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 28 01:00:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Sep 28 13:34:26 2012 -0700"
      },
      "message": "reset GL viewport and project when caputring the screen\n\nBug: 7241739\nChange-Id: I3bb5214b070384de9be2026647865c6c236a4331\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": "a4310c8be2dc3406a668ee99020d52187173232f",
      "tree": "aaa94ea8636c97a54932929113a27c8004644457",
      "parents": [
        "cb094a783f14daae3378ac8aa7dc509980f037b2"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Sep 25 20:26:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 27 17:27:20 2012 -0700"
      },
      "message": "SurfaceFlinger: don\u0027t always set HWC_GEOM_CHGD\n\nThis change fixes a bug in SurfaceFlinger that caused the HWC_GEOMETRY_CHANGED\nflag to be set every flip.\n\nChange-Id: I4f395a2883bcbb53b23b3d14941aff108739c9f0\nBug: 7234237\n"
    },
    {
      "commit": "a8026d21f3f2f09e3416cbd33c277fbd15d8cf4e",
      "tree": "ab34dbb4e229553d34681daa0646e3481ee14852",
      "parents": [
        "c4a8daaa998ea524c9aaa9817021ff7c4467c3dd"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Sep 25 13:25:04 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 26 14:41:51 2012 -0700"
      },
      "message": "Stop using transparent region for computing visible regions\n\nThe transparent region hint is computed only from view layout\nlocations, ignoring post-layout translation. If a SurfaceView is layed\nout with no other views above it, but a view is moved above it\npost-layout, that view\u0027s layout bounds would be subtracted from the\nwindow\u0027s transparent region instead of its drawing bounds. Prior to\nthis change, the view would not be visible (except where its layout\nbounds and drawing bounds overlap).\n\nWith this change, composition uses visible regions computed without\nregard to the transparent regions. However, if all of a layer\u0027s\nvisible region is transparent, it will be removed from the list of\nlayers to composite. This doesn\u0027t fix the root problem of incorrect\ntransparent regions, and doesn\u0027t prevent bad composition in all cases.\nBut it does avoid it for some existing apps, whiel still allowing the\ntransparent region hint to save power in the important\nfullscreen-video-in-a-SurfaceView case.\n\nBug: 7179570\nChange-Id: I47cf939e12129b167afa344b8b036e8827103ac8\n"
    },
    {
      "commit": "722b98f9dfe8f04de8734630198b99a6cd024118",
      "tree": "ed55aedce9afbffec5099ee78a1db0884e811e35",
      "parents": [
        "7b1905113712281c777b230648d3fbb69ae4f42c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 18:24:31 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 18:38:09 2012 -0700"
      },
      "message": "add support for EGL_FRAMEBUFFER_TARGET_ANDROID\n\nwe now try first with EGL_FRAMEBUFFER_TARGET_ANDROID, and\npick the first config we find. Otherwise, we revert to\nthe old algorithm.\n\nBug: 7232584\n\nChange-Id: I8d5c5a4ce48420832c2e2828718a8f53325effb0\n"
    },
    {
      "commit": "7b1905113712281c777b230648d3fbb69ae4f42c",
      "tree": "e465a16482c4db5b577e95771982c230d2c8623d",
      "parents": [
        "bb53b0e4b97634bc31808965f81b3ab4193d0e84"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 15:28:44 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 15:30:38 2012 -0700"
      },
      "message": "fix a crasher when running out of memory\n\nMemoryHeapBase::getBase() returns MAP_FAILED in case or\nOOM, not null which is what SF was checking against.\n\nThis addresses one of the issues of bug 7230543.\n\nBug: 7230543\nChange-Id: I763a88f64a2f9ff75eb139cfbaf9a1a9746c5577\n"
    },
    {
      "commit": "bb53b0e4b97634bc31808965f81b3ab4193d0e84",
      "tree": "c248a616f922650b113aaa7cf2273145d658b76e",
      "parents": [
        "f68c825c75198e7b3296532db9352631f18983b7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 24 21:27:29 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 25 14:40:22 2012 -0700"
      },
      "message": "When \"show visible regions\" is enabled we were missing a call to HWC\n\nBug: 7204034\nChange-Id: I64dd78362fa75149513a7d9ff92dde175e9b4958\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": "2a23184e4109060ec772763e80dae2132cf9d2eb",
      "tree": "5030865b9fea392e2e009a6c6da95c61f4534a29",
      "parents": [
        "52e21483fa48baeb4a88372d75e083bca2e92923"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 24 18:12:35 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 24 18:12:35 2012 -0700"
      },
      "message": "don\u0027t call eglMakeCurrent() before calling HWC commit() on HWC 1.1\n\nthis call is not needed and misleading on HWC 1.1; it can also have\na negative performance impact when multiple displays are used.\n\nBug: 7124069\nChange-Id: I47cd25c9d6e69abcc9333b9ecd5044e8fb1919ec\n"
    },
    {
      "commit": "9e2463e71796964cfaa06bf09a880875ac3537bc",
      "tree": "66d2328554a6ec7068ae8b97a0ca1011a954cf65",
      "parents": [
        "ff28e201ec0c6d620eaaa29814ab52958487dc31"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 21 18:26:16 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 21 18:26:16 2012 -0700"
      },
      "message": "add/remove displays properly on hotplug events\n\nBug: 7191563\nChange-Id: I8f0fbf3b29658c9479443141798e6f288a1f2d52\n"
    },
    {
      "commit": "4c0751a1f6e4ee941791012b31f9dbc65601e1d6",
      "tree": "728034cbfb2509fa9d3bdc2347e64a846a4b7014",
      "parents": [
        "38e623bc5c2d7224ebd5b82efaea401bc8e5367a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 20 21:28:12 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 20 21:28:12 2012 -0700"
      },
      "message": "return an error, as expected, when querying a disconnected display\n\nChange-Id: I405a3a7bb42b9bbd2ec7bfe09e60e1b7acf7389d\n"
    },
    {
      "commit": "f5a33928349bebc8eebc9f466618997e98c24e68",
      "tree": "f5e6636da70914a37b4ab04df7b68d418d4417c1",
      "parents": [
        "148994e5f33ce240ff24ceb5bc0500b7f2001959"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 19 18:16:22 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 20 17:13:58 2012 -0700"
      },
      "message": "we now correctly set-up connected screens during boot\n\nChange-Id: Ie8b1a3b97ad1821cc970e43abe96c8cec7135b66\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": "1604f777d11c40daae8ec91d8ea75625996bfbac",
      "tree": "fae7ea2684e5254ee7c6e954e80441b8b7dc82bc",
      "parents": [
        "eba8c688f633f3f3f1b75c2bc64faf799dd2b5f2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 18 21:54:42 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 20 17:13:58 2012 -0700"
      },
      "message": "one more step toward HDMI support\n\ngetDisplayInfo() now returns proper information for\nHWC managed displays.\n\nhotplug is sitll not supported; so this is not fully correct\nas the information returned will be bogus if the HDMI screen\nis not plugged in.\n\nBug: 7191563\nChange-Id: If55d8e829fae0443571548155007f486cdf9bc9f\n"
    },
    {
      "commit": "f33e4b6f13bc3ee2d2a4e1abd1ada171c70d3492",
      "tree": "429f08a84a019a3ea3231e9654908352a2776625",
      "parents": [
        "70f93fb5c2004c0fe2bd33f106358d516bb615f8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 20 16:54:14 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 20 17:13:58 2012 -0700"
      },
      "message": "GraphicBufferAlloc class was declared twice\n\nthis was confusing because the one in FramebufferSurface\nwasn\u0027t in fact being used\n\nChange-Id: Ied45aec20d804cfbe52440f9b2f2852a85c757cf\n"
    },
    {
      "commit": "f21cffa7d707dad10b2974c58c91482f7ca689ac",
      "tree": "e8b9ab1cb97cde782f77b4ca0fecc6848ecd24e2",
      "parents": [
        "3cdccc6f852be345c43bdfbc2466aa17c1173c9c"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Sep 19 21:00:49 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Sep 19 21:00:49 2012 -0700"
      },
      "message": "Allow 16-bit color EGLConfigs\n\nThe emulator without GPU acceleration only supports 16-bit\nframebuffers.\n\nBug: 7185810\nChange-Id: I883180367bf5b291d5e70427ab586d2e17868a96\n"
    },
    {
      "commit": "1d12d8a8e61163b35cf42c51c558a67138014e82",
      "tree": "08cc8bbf62569dda023f80f93d45bc40bed940bf",
      "parents": [
        "6ab93290aeed63f139b0e77819ea889bbce9ec8b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 18 01:38:00 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 18 14:42:32 2012 -0700"
      },
      "message": "improve logging of external displays\n\nChange-Id: I041aebb7fc655aeca98bbf698d15e05d7c12cac9\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": "da27af9832a0170f1fc40ef3f21371c4d30d21b3",
      "tree": "e4d80c394a30865c2196581ee5b23820bbcd3c41",
      "parents": [
        "cde87a3b9d3f8dc15232d927b56ee9e5e520f58d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 13 18:17:13 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 17 18:57:53 2012 -0700"
      },
      "message": "add support hwc 1.1\n\nBug: 7124069\n\nChange-Id: I53d705105c4ad8954d3f50ee4f4c8b7ec936b871\n"
    },
    {
      "commit": "cde87a3b9d3f8dc15232d927b56ee9e5e520f58d",
      "tree": "34219e383a8dbb62a3fbb5f57df94466e64cd3ce",
      "parents": [
        "c8cff90d49b6eeaf0290c16517ff49df185dbdcd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 13 14:09:01 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 17 12:37:10 2012 -0700"
      },
      "message": "refactor things a bit\n\n- decouple GL and main display initialization\n- ensure that each \"supported\" display has its own FramebufferSurface\n- onScreenAcquired/Released now takes a display\n\nChange-Id: If34a05f3dea40f6c79db77f4dde283a2580daac4\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": "6e220a6ce6971555b883f4852c6e5d4c7a617815",
      "tree": "2961331b56b149d1d478fb1f90df20e336c8530d",
      "parents": [
        "ae2cfb5746e87f1bf17c446e20274c41ce0a57ce"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 13 19:22:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 13 19:24:43 2012 -0700"
      },
      "message": "Fix display projections when translated.\n\nThere are two different translations to apply in the logical\norientation, one before scaling and one after.\nSo translate, scale, translate then rotate.\n\nBug: 7139798\nChange-Id: I0726991cadb62988390e77503dbbaed54f07bfe3\n"
    },
    {
      "commit": "ce3a0a541c3dde1330551bd7a048cd9d92335c00",
      "tree": "0087666b68164bb524da6fdde9d35837970d22d5",
      "parents": [
        "2c7c8ba56ad9c0c08fde6f86771475f03a03e6fd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 12 15:34:57 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 12 17:42:06 2012 -0700"
      },
      "message": "don\u0027t call hwc with non-empty layer lists for blanked displays\n\nwe now make sure to take the blanked state of a display into\naccount when we build its list of visible layers, this ensures\nthat we won\u0027t call prepare/set with a non-empty list when the\ndisplay is blanked.\n\nPossibly fixes 7075380, 7103553, 7130187, 7016215\n\nBug: 7075380\nChange-Id: I9fdd2e73d1b7621eaeca3d4ac2ae60d9fb1b3631\n"
    },
    {
      "commit": "43601a2dc320a271ff8c3765ff61414a07221635",
      "tree": "2030c8c6d6f7e5494a538bc72cfdc7c370943168",
      "parents": [
        "b0d1dd36f104c0b581674adc7f830cbf44b7db06"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Sep 11 15:15:13 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Sep 11 15:15:13 2012 -0700"
      },
      "message": "Reduce failure uncertainty\n\nThis adds a trivial workaround for a one-shot boot time crash, plus\nan explicit check and abort for a failure condition that currently\npresents as a less obvious failure.\n\nBug: 7145521, 7147557\nChange-Id: I548f6a9caa9f0bd5710aaecea0e1c6c7c8f2f281\n"
    },
    {
      "commit": "b0d1dd36f104c0b581674adc7f830cbf44b7db06",
      "tree": "272888659a756c5b5a0d3840acda03a0c246078f",
      "parents": [
        "1fc4f80fc38f782f128102795481924a97a2d3c5"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Sep 10 14:08:09 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Sep 11 09:31:34 2012 -0700"
      },
      "message": "Reshuffle FramebufferSurface\n\nFramebufferSurface no longer speaks directly to the FB HAL.  Now\neverything goes through HWComposer (which may or may not be\nconnected to a hardware composer).\n\nAdded display index arg to some query methods.\n\nChange-Id: Id3e157d2d4e3555d33afbb703e518b6e92e2d6d5\n"
    },
    {
      "commit": "4c05dd175ee3bd5119eecf368742b6510a8cfa6c",
      "tree": "821976538f8ae1f1852ab1cc8ee9d8f46ab857a6",
      "parents": [
        "4fb3999cea652617be5125f8a42c257467bf3c77"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 09 00:07:17 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 09 00:07:17 2012 -0700"
      },
      "message": "Ensure that viewport and frame are initialized.\n\nonInitializeDisplays() was posting a transaction with changes\nto the display projection.  Unfortunately, it only set the\ndisplay orientation field and left viewport and frame\nuninitialized.\n\nThe uninitialized values flowed downstream and found themselves\nbaked into a bogus DisplayDevice mGlobalTransform.  That transform\nwas then applied to some Rects which were turned into Regions\nthat were them combined with other Regions.\n\nUnder certain situations, the uninitialized data might have\na largish value, resulting in the creation of Regions with\ncomponents in excess of the Region max-value limit of 0x7ffffff\n(note that this is not INT_MAX).  Later when performing a\nbinary operation using the Region, the Spanner would loop\nindefinitely trying to figure out how to stuff a humongous\nregion inside of a max-value region.  Not content to try\njust once, the Spanner would continue trying again and\nagain, pegging the CPU and hanging surface flinger during boot.\n\nInsanity soon followed.\n\nBug: 7130713\nChange-Id: I0016f0c9662185be833474c212a1dd408096ae23\n"
    },
    {
      "commit": "4fb3999cea652617be5125f8a42c257467bf3c77",
      "tree": "b1be0afcf769d5530d457306f82ae5536fc8661d",
      "parents": [
        "b27254154642575dfb4bbfa79fbedde7d7ee23dd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 07 12:55:10 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 07 12:55:10 2012 -0700"
      },
      "message": "Fix display projection.\n\nChange-Id: I0f253dc3759b99e05ff8344b0f513d8c289702e7\n"
    },
    {
      "commit": "1501d54d63c55dc4e8f4c6eeaeac35aca6660ffc",
      "tree": "19605200681a0ac0d69c205e7fbe5a855d96596b",
      "parents": [
        "762d0114759686b65feca832a5437e2aee343a13"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 21:04:09 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 21:04:09 2012 -0700"
      },
      "message": "minor cleanup\n\nChange-Id: Ied80e14878e92a506930f7a5a55adde8f260ec70\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": "da8d0a5c0cf9d41915d3b106cad4aaec3e767c11",
      "tree": "ff32d3624ef19dcd8677dfab3f1b85a3dd0b2b8b",
      "parents": [
        "493db47929cdd805339e453062fef265d8985692"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 15:05:38 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 16:59:06 2012 -0700"
      },
      "message": "implement display viewport and frame\n\nnote: viewport clipping is not implemented yet\n\nChange-Id: I7fde7c4de075d409d95c48bb20ba8ee017f6f00a\n"
    },
    {
      "commit": "63f165fd6b86d04be94d4023e845e98560504a96",
      "tree": "d7de956ab8adb8b6ebca7e086b3cf1577d0b73ee",
      "parents": [
        "c39736088398a9b4367b30fc307ed7de96ac342e"
      ],
      "author": {
        "name": "Keun young Park",
        "email": "keunyoung@google.com",
        "time": "Fri Aug 31 10:53:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 20:08:33 2012 -0700"
      },
      "message": "add libsurfaceflinger_ddmconnection for PDK build\n\n- the library is dlopened from libsurfaceflinger\n- the library built only when libnativehelper exists\n\nBug: 7089510\nChange-Id: Ib3ea1029d7e8f6e055f4b759d0bf68f5123fa8a1\n"
    },
    {
      "commit": "9ca48916bc9408d0f3f8ac95469ced0a6a342aca",
      "tree": "d71c1791e862afb5c65d9c045f02ba6d1213163c",
      "parents": [
        "f90883d6a50688081642855bba43bef0693d5020"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Aug 30 13:42:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 31 13:52:25 2012 -0700"
      },
      "message": "If there is no hwc, call eglSwapBuffers for the main display\n\nBug: 7068568\nChange-Id: I6a0309613fe3619d065b9047af6c3fb32b510d97\n"
    },
    {
      "commit": "93997a8a75942b4d06cf50925de5bede489cc134",
      "tree": "95aa3e332069ae7220346f1f2aab6a0d6768498a",
      "parents": [
        "c9ea4c8b580e73a89984641ed37a3eb417cc86c5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 29 17:30:36 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 29 18:22:23 2012 -0700"
      },
      "message": "fix a crasher when setting a display to a null surface\n\nBug: 7076303\nChange-Id: I843dd4ee4a603b8ad51bc1ad14e429db15050bec\n"
    },
    {
      "commit": "85d751cba5d4386c739dbf9dd8f7bbf8c493ade9",
      "tree": "9857ccdfd088ab8b56c1acfa2c47c9e0ec6b7699",
      "parents": [
        "7e7ed7f77a3963a3542bde529d2797a239e2798b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 29 16:59:24 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 29 16:59:24 2012 -0700"
      },
      "message": "we were sometimes not setting fences properly\n\nthis would happen when the composition was handled\nentirely in h/w composer, in this case, we would\nnot set the fences for any involved layers.\n\nBug: 7049373\nChange-Id: I1439dc156ce23c24041cdfbbebfe8ff4fdf790f8\n"
    },
    {
      "commit": "7e7ed7f77a3963a3542bde529d2797a239e2798b",
      "tree": "d03b949be503c02cbfd562fe492f0602cdaa96c4",
      "parents": [
        "55801e41e6d7306d75d8134dd69d7d8cbbfbc63c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 28 14:20:00 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 28 14:20:00 2012 -0700"
      },
      "message": "the layer list per display could contain non-visible layers\n\nthis happened because we didn\u0027t check that the visible\nregion was within the bounds of the display.\n\nBug: 7064121\nChange-Id: I2e81850a3dc3d1474253520ad7f9e559c26d5a96\n"
    },
    {
      "commit": "55801e41e6d7306d75d8134dd69d7d8cbbfbc63c",
      "tree": "98cd25f04c5ed236e60a4a1070b381e7c85eef1c",
      "parents": [
        "525705c88f91e46099970491282944d4ef0041d4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 27 18:54:24 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 27 18:54:24 2012 -0700"
      },
      "message": "we were not always clearing the screen properly\n\nChange-Id: I269dd866e965aebd9b3c4667095818202982f4a3\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": "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": "13a082e160c2d1d8006b93a555a57035213d568b",
      "tree": "13f1088d607598b02fbdd656ba47a0f7c80d4d3f",
      "parents": [
        "0bceb84773882b796d9dacbaf96167cb15928d78"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Aug 24 10:16:42 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Aug 24 11:50:34 2012 -0700"
      },
      "message": "Added display initialization method\n\nThe primary display device was being configured to \"blank\" by\ndefault, which prevented the boot animation from appearing\n(unless you got lucky with the hardware composer state).\n\nBug 6975688\n\nChange-Id: I0fa52e9e719c6e997c5725a7baf15d9718461b78\n"
    },
    {
      "commit": "0bceb84773882b796d9dacbaf96167cb15928d78",
      "tree": "736cce3bc182dc3a903754e258555a6fa99cb168",
      "parents": [
        "490aee0fc5012acf2bf0b1dfe9c09e6fcca606fc"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 23 20:19:38 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 24 11:12:28 2012 -0700"
      },
      "message": "surfaceflinger: fix display id selection\n\nThis change fixes display ID selection so that it never chooses negative\nnumbers as display IDs.\n\nChange-Id: I5af1acc7b1270b371595e096b18e2a6ad250c7ba\n"
    },
    {
      "commit": "9b6a395e65ff88ab79fe92d6f112c434441ca606",
      "tree": "f7d9eba0e4d4a4c60d5222b60579e93d6f871d6e",
      "parents": [
        "53ade0853ca003c9e917b5e7d34e1b1338d7b87d"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Aug 24 10:12:22 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Aug 24 10:12:38 2012 -0700"
      },
      "message": "Revert \"Added display initialization method\"\n\nSomething doesn\u0027t seem right (again).\n\nThis reverts commit 53ade0853ca003c9e917b5e7d34e1b1338d7b87d.\n\nChange-Id: Id5786997ca9dd2a447363e8ac95213ea37468504\n"
    },
    {
      "commit": "53ade0853ca003c9e917b5e7d34e1b1338d7b87d",
      "tree": "2a0132b15c8dff361e917048f523bcf59f613fbd",
      "parents": [
        "f435863467ab407f2a482604beed5fa6f0144c62"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Aug 23 17:36:41 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Aug 24 09:19:56 2012 -0700"
      },
      "message": "Added display initialization method\n\nThe primary display device was being configured to \"blank\" by\ndefault, which prevented the boot animation from appearing\n(unless you got lucky with the hardware composer state).\n\nBug 6975688\n\n(This reverts an earlier revert.)\n"
    },
    {
      "commit": "e60b0687c8d49871d0c8786cabe6851f7a7783b5",
      "tree": "afef903dcaa648d2862278e289c254a99390f400",
      "parents": [
        "7c9e82633c5c4f85b896a5879bdb25cdf659646e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 21 23:34:09 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 23 16:03:37 2012 -0700"
      },
      "message": "HWComposer now has its own concept of display IDs\n\nHWComposer can now create IDs representing a display\nit can deal with. IDs MAIN and HDMI are reserved.\nSurfaceFlinger associate HWComposer IDs with a\nDisplayDevice and uses that when it talks to HWComposer.\n\nA DisplayDevice doesn\u0027t have to have a HWComposer ID,\nin that case it just can\u0027t use h/w composer composition.\n\nChange-Id: Iec3d7ac92e0c22bf975052ae2847402f58bade71\n"
    },
    {
      "commit": "f1bf89dd88f3926faaec77b9322b2a580691960d",
      "tree": "91060e96729fac830b09da2994a7fb9cd5996218",
      "parents": [
        "3f3956236aac97b6aa25fa89f0983d5e9d065fdb"
      ],
      "author": {
        "name": "Ramanan Rajeswaran",
        "email": "ramanan@google.com",
        "time": "Wed Aug 22 14:23:50 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 22 14:23:50 2012 -0700"
      },
      "message": "Revert \"Added display initialization method\"\n\nThis reverts commit 3f3956236aac97b6aa25fa89f0983d5e9d065fdb\n\nChange-Id: Ia2a15d9a5db88add6019edf9d955cef1f73d432d\n"
    },
    {
      "commit": "3f3956236aac97b6aa25fa89f0983d5e9d065fdb",
      "tree": "cfd60623d0a9d77328ddb2b5207062452936f103",
      "parents": [
        "a4cb35a2864d58e9a764a17623e15ab25a9964a0"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Aug 20 15:39:23 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Aug 21 13:11:51 2012 -0700"
      },
      "message": "Added display initialization method\n\nThe primary display device was being configured to \"blank\" by\ndefault, which prevented the boot animation from appearing\n(unless you got lucky with the hardware composer state).\n\nBug 6975688\n\nChange-Id: Idaa0d0b98ebb331a17d1b16774c6b05bfa1e8728\n"
    },
    {
      "commit": "cd60f99aba9e750700a967db30b74a29145739cf",
      "tree": "e097ab980684c40282b5c8134af14d83eb57a3b7",
      "parents": [
        "5f20e2d4462da3471f59152b32cd8640fa4a21da"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 16:28:27 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 20:58:58 2012 -0700"
      },
      "message": "refactor compositing code to avoid multiple eglMakeCurrent() calls\n\nwhen multiple displays are connected, we ended-up having to\ncall eglMakeCurrent() twice per display due to a limitation\nin EGL. this fixes that.\n\nChange-Id: I11e4584df50f8c24bbecee74e37b28b3ee031d2f\n"
    },
    {
      "commit": "5f20e2d4462da3471f59152b32cd8640fa4a21da",
      "tree": "3edef572256796ed8ae38d23ebf341521a7457d1",
      "parents": [
        "818b46058aa3006e1d3c178abd36d4f10823f5d9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 18:50:38 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 20:58:58 2012 -0700"
      },
      "message": "reimplement wifi display hack with new external display SF framework\n\nfix a few bugs with external displays\n\n- HWComposer doesn\u0027t really handle multiple displays yet\n  so there is a lot of ugliness there\n\n- We also need to make sure that external displays are not\n  blanked by default\n\n- due to some EGL limitations surfaces being swapped need\n  to be current\n\nChange-Id: I82bff05b43bcebd8da863c7c76b4edbc3bc223a9\n"
    },
    {
      "commit": "818b46058aa3006e1d3c178abd36d4f10823f5d9",
      "tree": "741368663f57ef8ed8dd4f46cc1e781686885a8b",
      "parents": [
        "111b2d89221722d38f5b5b3ba65904ec22421839"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 20:57:39 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 20:58:57 2012 -0700"
      },
      "message": "display states can\u0027t share the dirty flags\n\nChange-Id: Ifade9f2f1a0df9a36aede77a6cf5eee4be534f98\n"
    },
    {
      "commit": "111b2d89221722d38f5b5b3ba65904ec22421839",
      "tree": "dfb59840200edf4049498d80e13c4f2219359b8a",
      "parents": [
        "c21fc05af75ee746e29f48b6d231127ee000f7ed"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 20:52:17 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 20:55:28 2012 -0700"
      },
      "message": "binder interfaces can\u0027t be compared directly\n\nwe always need to compare their binder\n\nChange-Id: I70d554ebc5009fe81e87923235f91451f32e1a30\n"
    },
    {
      "commit": "13233e067b8f71adc3a0ade5f442265e1f27084b",
      "tree": "65604b20e2555cfa7b427d75f6f26e317b930b19",
      "parents": [
        "3559b07a885bcdff51a6dffb8e3a5ac5adf3a220"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 15 16:14:33 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 15 16:14:33 2012 -0700"
      },
      "message": "oopsie, missed a spot when fixing b/6970310\n\nChange-Id: Ia320fddc7cc4b0666a4fee678af710ecf5f83ff5\n"
    },
    {
      "commit": "3559b07a885bcdff51a6dffb8e3a5ac5adf3a220",
      "tree": "f8d3a92d5c056a8e00d129381c4f74c51d4a082e",
      "parents": [
        "ac1f70bb7135cd5fe73d6fbf121a62c779679c5a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 15 13:46:03 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 15 13:46:03 2012 -0700"
      },
      "message": "we were mistakenly optimizing out SF\u0027s main transactions in some cases\n\ndue to a typo, SF\u0027s main transaction was conditional to having a\ndisplay transaction.\n\nmore correct fix for 6970310\n\nBug: 6970310\nChange-Id: Iafd8c4e02afa5db829cc1c65950cfcc74754c6af\n"
    },
    {
      "commit": "01eb979243a57bd33f8389aeeade8024dd0258c0",
      "tree": "db1c8e4f388e2d904ae311a5ddca8e416fba9195",
      "parents": [
        "ea599dfff03b45903dae3288274c31cb24fd483f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 01:08:54 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 15 01:16:16 2012 -0700"
      },
      "message": "Fix layer removal transaction.\n\nLayers were not properly being removed because we were\nsetting the wrong transaction type flag at the time of\nremoval.\n\nWhen layers are removed, we must use eDisplayTransactionNeeded,\nnot eTransactionNeeded, to ensure that the mLayersRemoved\nflag is checked and the appropriate cleanup occurs.\n\nBug: 6970310\nChange-Id: Id4b2897a34d4ac00aa0f92349c0ec6db95c1aaf7\n"
    },
    {
      "commit": "ea599dfff03b45903dae3288274c31cb24fd483f",
      "tree": "7302c2efa9b724972d001869dd907718d9b8fdf2",
      "parents": [
        "f0083bf5288e0d430b0dc5cbc4b4852bce2ff1af"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Aug 13 14:47:01 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 14 15:33:04 2012 -0700"
      },
      "message": "Don\u0027t crash when recovering from WM death\n\nBug: 6956162\nChange-Id: I27244b960c77187b4c4cd7297989c4c872e94a3a\n"
    },
    {
      "commit": "20128300e0cb7f459a60cfbcddb48190ce6545ed",
      "tree": "4a0b970fd8404a2bd29736a1f5ea3715e137a951",
      "parents": [
        "8b736f138cfd9b239a2c7073347a13c489534ae1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 13 18:32:13 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 13 18:32:13 2012 -0700"
      },
      "message": "make sure to repaint the screen when unblank()ing\n\nChange-Id: I38e3a8e6bb31ef3d2f1fcaec7490cb92a4427db2\n"
    },
    {
      "commit": "8b736f138cfd9b239a2c7073347a13c489534ae1",
      "tree": "b59ff0dd03c2256a13ca41e42eb4446e380a1bff",
      "parents": [
        "670d24a8aeffee2788680be665bd74e0275cc2cf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 13 17:54:26 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 13 17:54:26 2012 -0700"
      },
      "message": "xdpi / ydpi were reported as 0\n\nBug: 6975723\nChange-Id: Ia7fa37ec11e2308804f5034959a37e508d292d31\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": "ef7b9c7eac036cc1230c64821039d18f8cbd2c1c",
      "tree": "57edfc4b4a3ad4a441e7a32f0da6eddf2f95cf63",
      "parents": [
        "748f3df66f6695681cde44461e2548e6e1dbc1bb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 15:22:19 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 15:23:41 2012 -0700"
      },
      "message": "screenshots could stop working after camera was used\n\nonce a secure window is put on screen the display\nwould retain its \"secure\" flag forever, preventing\nscreenshots from being taken.\n\nBug: 6933967\nChange-Id: I5be8355145ca7d580d84552311642f8fa912fe6a\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": "1e26087493ac0e7d7dc6dea8ad85cfef08b3271f",
      "tree": "a5920a178c15abdb55ab7d9f7427e3d0ba1b278c",
      "parents": [
        "28947d7fbf9f486539322e8e12dd057568e180c2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 08 18:35:12 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 13:18:24 2012 -0700"
      },
      "message": "Add a display parameter to HWComposer where needed\n\n- also replace C casts with C++ casts\n- only the interface is changed, HWComposer still doesn\u0027t\n  fully handle multiple displays\n\nChange-Id: I48eb89bff2edb76bf1d4d41f46802b9b2a7166a8\n"
    },
    {
      "commit": "28947d7fbf9f486539322e8e12dd057568e180c2",
      "tree": "7ddff36460704a5364a6fcd796fecacdce03667e",
      "parents": [
        "69973992d531ae7df20916c6fb3034b08a6d53c4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 08 18:51:15 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 13:18:23 2012 -0700"
      },
      "message": "now able to set the layer stack on a DisplayDevice\n\nChange-Id: Ia9691cf221b9444c243eb468d9e276a30e600b6b\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": "4297734c1156fd8ede7e9c61b1e439f9e1c18cd9",
      "tree": "4fcb37b9375fe5ca630de53824c344dd9d59c04f",
      "parents": [
        "d8552d796cbcb9a89711fc8f97b34838da5cbdb7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Aug 05 00:40:46 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Aug 05 00:40:46 2012 -0700"
      },
      "message": "turn DisplayDevice into a reference-counted object\n\nit\u0027s safer this way because this object owns an\nEGLSurface which cannot be easily reference-counted.\n\nit also gives us the ability to sub-class it, which\nwe might want to do soon.\n\nChange-Id: I07358bb052dc5a13b4f2196b2c2b6e6e94c4bb4f\n"
    },
    {
      "commit": "888c822c4cb6976aab9256c58bae9e17e3e55c5c",
      "tree": "e1d93016bcd7171077378abca4712bfff7dd4ef9",
      "parents": [
        "72131d9ef13ffaf3af4ca2fe700426b82baac9fa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Aug 04 21:10:38 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Aug 04 21:23:47 2012 -0700"
      },
      "message": "remove a dependency of DisplayDevice on the refresh rate\n\nthis remove a dependency (not all) on FramebufferSurface\n\nChange-Id: Ie07ce70760cdcedfb41b5b41bea8da45637bf474\n"
    },
    {
      "commit": "c1d359d42b753fcc2426d66a0f782f7c300893bc",
      "tree": "cae68eea0d4603d9690f65dceca80394c21a701f",
      "parents": [
        "92efd84f37ce5a8aae74dc9086f825a67b6894e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Aug 04 20:09:03 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Aug 04 20:09:48 2012 -0700"
      },
      "message": "break SF dependencies on libdvm and libandroid_runtime\n\nthese libraries are only needed for debugging and are now\nlinked at runtime if needed.\n\nChange-Id: I03f138523c6de166a1e2700d4454d4a854aee145\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": "92a979a92c34b7de609ce2b1662c73bb8a2728b9",
      "tree": "cd480c10867c43b49b634ba712f0216ca915200f",
      "parents": [
        "fcb239d3dac8bc80f28177f1951611c1d43286ff"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 18:32:23 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 22:24:12 2012 -0700"
      },
      "message": "We now have a real list of displays.\n\ndisplays can be dynamically added or removed, and the\nlist is part of the SF\u0027s transaction.\n\nChange-Id: I4186ea39f1317c0e7c044f869004017738968fab\n"
    },
    {
      "commit": "fcb239d3dac8bc80f28177f1951611c1d43286ff",
      "tree": "d03417dadcd95b63d95b132005ba02477a1dea88",
      "parents": [
        "d3ee231eddce0b69ec5e35188dbd0f4a2c3b9ac3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 16:01:34 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 22:24:12 2012 -0700"
      },
      "message": "don\u0027t filter when capturing a screenshot unless needed\n\nbug: 6919952\nChange-Id: Ia6fbe9bc7e533a64cfdd6ef7f0cd6b9f11feb947\n"
    },
    {
      "commit": "d3ee231eddce0b69ec5e35188dbd0f4a2c3b9ac3",
      "tree": "0400d929e72c3417dd770c816fd3eac1c43f04c9",
      "parents": [
        "0f2f5ff75b7b48ceb64270655ee6b62d09bf4d00"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 14:01:42 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 22:24:12 2012 -0700"
      },
      "message": "cleanups in preparation of bigger changes\n\n- fix typo drawForSreenshot misspelled\n- get rid of DisplayDeviceBase\n- removed unused or unneeded code\n- always pass a DisplayDevice to Layer methods that are called\n  on a per-display basis (to make it clear that this could be\n  called more than once per composition).\n\nChange-Id: Id948b7e09fe5c06db0e42d40d6ed75dd095c7f44\n"
    },
    {
      "commit": "0f2f5ff75b7b48ceb64270655ee6b62d09bf4d00",
      "tree": "e0fa6e3e29618def2e75ee2cc289c848ddabcd09",
      "parents": [
        "be246f86bd6378a5110e81e9d9068ab03c3b077e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 31 23:09:07 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 22:24:12 2012 -0700"
      },
      "message": "rename DisplayHardware to DisplayDevice\n\nChange-Id: I3f7250cd914e0da4f9ec2c9403587bbe12f3cc62\n"
    },
    {
      "commit": "be246f86bd6378a5110e81e9d9068ab03c3b077e",
      "tree": "c91f69d478cadb83e69139c79ab2a18ccd274dc8",
      "parents": [
        "52bbb1ae239c8a4d05543a23fa8c08467d09c3b2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 31 22:59:38 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 22:24:12 2012 -0700"
      },
      "message": "Layers are now sorted by layer-stack first, then by z-order\n\nChange-Id: I7a82929df5ba87b9d88cc5be87e1a233bc4628e9\n"
    },
    {
      "commit": "52bbb1ae239c8a4d05543a23fa8c08467d09c3b2",
      "tree": "ea29b5b84a42f7f15e531d72f80bd953ade0b074",
      "parents": [
        "87baae104a3e4c2059990b01c393476065c558b0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 31 19:01:53 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 22:24:12 2012 -0700"
      },
      "message": "getting closer to final main composition loop\n\nChange-Id: Icd63782366ffd11d9ea00c925ae5783ed7440cdb\n"
    },
    {
      "commit": "87baae104a3e4c2059990b01c393476065c558b0",
      "tree": "4240a6d9f4d50d12bf1dc2a0b69ba5ab99e25841",
      "parents": [
        "53f10b7b13363e6d017985ead704494fe79c9e09"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 31 12:38:26 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 22:24:12 2012 -0700"
      },
      "message": "get rid of global regions that should be tracked per display\n\nChange-Id: I3b871860cc29f1b2fdcc22b0c577a6eae65d9296\n"
    },
    {
      "commit": "34a09ba1efd706323a15633da5044b352988eb5f",
      "tree": "bd432b2c1944df390912a9a8bab959450762ba3b",
      "parents": [
        "747c480b0e3cf9401ff53421be6a82b23fdc04c2"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sun Jul 29 22:35:34 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Jul 30 16:10:49 2012 -0700"
      },
      "message": "Move eglSwapBuffers out of HWComposer\n\nCommit 8630320 moved the eglSwapBuffers fallback (for devices with no\nHWC implementation) from DisplayHardware to HWComposer. But HWComposer\nonly knows about the framebuffer EGL display and surface handles if\nthere is a HWC, so it was always passing bogus handles.\n\nThis change moves the eglSwapBuffers fallback up to SurfaceFlinger,\nwhich has access to the framebuffer EGL handles.\n\nBug: 6886613\nChange-Id: Iad3f5ff7c90ee48d7053999e6a4548d6794b6ebd\n"
    }
  ],
  "next": "c666cae2d5995097ec49a87e375e2afdd92802b7"
}
