)]}'
{
  "log": [
    {
      "commit": "0c9a1ed91f8e19887ac43eff5af16e59878c8226",
      "tree": "bd52e3d82e3f86537129d59ff2b24ee4c6f9b40d",
      "parents": [
        "1d0359c5a8e19a3ad0bb3e0d8265c32bab6f0d4d"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Apr 06 15:10:21 2017 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Apr 10 14:35:41 2017 -0700"
      },
      "message": "libgui: Normalize IGraphicBufferConsumer methods\n\nThis change modifies IGraphicBufferConsumer such that all synchronous\nmethods return a status_t and, as such, all outputs are returned by\noutput parameter rather than return value. It also eliminates the use\nof a const char* parameter that SafeInterface can\u0027t handle.\n\nTest: m -j + libgui_tests + manual testing\nChange-Id: I9bb0e2892492d5e0a3f660bf228834b9ed014539\n"
    },
    {
      "commit": "c45a7d9dfdefa07512c5acc07bcbee5362b34e3d",
      "tree": "9df3b7be1fad7b748c33ef2a66f07b8d4cb72618",
      "parents": [
        "b7074a6b6c5dce6c5d29b79f546f4f7f31604d72"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Mar 14 13:24:22 2017 -0700"
      },
      "committer": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Wed Mar 15 16:29:06 2017 -0700"
      },
      "message": "[SF] Use presentTimeOffset from configStore\n\nChange-Id: If9c872c565e68e8abe552ee11d2c7d48f44aec4b\n"
    },
    {
      "commit": "cb765401a080a2c80eb562478263129a4f2483df",
      "tree": "694f94156d32d4d4d580ec2ad58974a13da2f0c2",
      "parents": [
        "558d6f3b7138f673b7a8f92acc8a25ec715bf425",
        "aaff73f92a2fcadda8c765eb9b02f2849418a873"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Mar 10 22:43:31 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 10 22:43:31 2017 +0000"
      },
      "message": "Merge \"surfaceflinger: simplify HWC buffer cache clean up\""
    },
    {
      "commit": "aaff73f92a2fcadda8c765eb9b02f2849418a873",
      "tree": "e5d14b6384d24a8a12ab3ac2e082431199e2b22b",
      "parents": [
        "d7c99dd43d9055a741793916cf83c6597946076e"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Mon Feb 13 12:28:24 2017 -0800"
      },
      "committer": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Fri Mar 10 10:36:58 2017 -0800"
      },
      "message": "surfaceflinger: simplify HWC buffer cache clean up\n\nWhen a Layer is no longer connected, we destroy the associated HWC\nlayers on next call to SurfaceFlinger::rebuildLayerStacks or when\nthe Layer is destroyed.  There is no need to listen to\nonBuffersReleased.  Besides, we need to perform the cleanup from the\nmain thread as we only talk to HWC process from the main thread.\n\nWhile at it, move HWComposerBufferCache to its own files.\n\nBug: 35320590\nTest: manual\nChange-Id: Ifa32f24076b094c8fa9cda8572b03d5bfb8e0b93\n"
    },
    {
      "commit": "0cc1938871edd6659d6783404a3523abc6b98d92",
      "tree": "4de9c8b4cb2d2539ba4f39d5607e0998d09b285d",
      "parents": [
        "077f132c19e731d25973bbab1c6dc319beb3f460"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Mon Mar 06 11:54:40 2017 -0800"
      },
      "committer": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Mar 07 15:20:22 2017 -0800"
      },
      "message": "[SurfaceFlinger] Use sf phase offset from CS\n\nIf present, use sf phase offset from the config Store.\n\nTest: Manual\nChange-Id: I2dd7ecf984b7484f6b447699680f54c7c8e221a0\n"
    },
    {
      "commit": "3a156e11abc86f0fb7f3f503ca534140ea2a9a56",
      "tree": "4ed82f5ea3e34ff0f9021a4c969a2ddcf56a39d6",
      "parents": [
        "b0254c4293b6dce82ec6dd339f19d30cf19d3df6"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Thu Feb 23 15:02:34 2017 -0800"
      },
      "committer": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Fri Feb 24 14:20:00 2017 -0800"
      },
      "message": "Fix error code check in releaseBuffer\n\nBufferQueueConsumer can occasionaly return STALE_BUFFER_SLOT which\ndoes not indicate an error but that there is no more to be done.\nSurfaceFlingerConsumer should report and error only with a status\ncode inferior to zero.\n\nTest: AUPT\nChange-Id: Ie0624358301e1e3b090adf35facd6eac79c214db\n"
    },
    {
      "commit": "fb94f1db72bd769d4a63e2baf0b5a4ca5da7a86f",
      "tree": "48cda750cb8509b337c9ea8c40a315bc3995d6f1",
      "parents": [
        "f810b29ebc8564f94ff7fb14f2d13a0f4d111703",
        "a9347647eca3101c014be902b713772de3977d87"
      ],
      "author": {
        "name": "TreeHugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 17 22:21:01 2017 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Feb 17 22:21:08 2017 +0000"
      },
      "message": "Merge \"Break a dependency of libui on libandroid\""
    },
    {
      "commit": "a9347647eca3101c014be902b713772de3977d87",
      "tree": "42a320f3a3f0612ae8e636f855e92c829d267d47",
      "parents": [
        "7777e9f6d17a4fa245c10ba54b4d442f65caa23f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 13 16:42:28 2017 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 12:27:27 2017 -0800"
      },
      "message": "Break a dependency of libui on libandroid\n\nThis was only a header dependency, but it still\ncreated a circular dependency, which will cause\nproblems in another CL.\n\nWe fix this by creating a libarect static library\ncontaining only that header. both libui and\nlibandroid now depend on it and reexport the \nheader. \n\nWe also make sure rect.h ends-up in the right\nplace.\n\nTest: built and booted device\nBug: 35164655\n\nChange-Id: Iba25b8b801b26b26ec1401c00caf367a06f197ca"
    },
    {
      "commit": "5ea5e5905170f32d5cf45ad35c552d64743892c3",
      "tree": "fbb4f89afcc0f593652fe722e2e2e351a12ca921",
      "parents": [
        "ed816e6cb4ca15181bf6120890c85290b5f7c02b"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Dec 01 16:54:33 2016 -0800"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Wed Feb 15 16:41:26 2017 -0800"
      },
      "message": "Fix unexpected FrameEvents on BufferQueue reconnect\n\nHelps reduce the number of ALOGE\u0027s being hit\nwhen switching between apps.\n\n* Notify Layer when the Producer disconnects.\n* Avoid sending event deltas from a previous connection.\n* Avoid releasing a frame more than once.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n    --gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I64f314be72ddb154b584d726ac382cd468e345bf\n"
    },
    {
      "commit": "06d63de03cb2a551ca99608f5aa0c4f3e200b0fc",
      "tree": "e5a7b120a0e081fb07cd8dfa806d744844821b44",
      "parents": [
        "f757977dfe80151074ee548805c7b4ccc7299c59"
      ],
      "author": {
        "name": "Chia-I Wu",
        "email": "olv@google.com",
        "time": "Wed Jan 04 14:58:51 2017 +0800"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Feb 09 06:17:54 2017 +0000"
      },
      "message": "surfaceflinger: cache HWC client targets and buffers\n\nRemember HWC client targets and buffers, and make sure we send each\nunique slot/handle pair only once.  This allows the composer to\nclone/register/retain each buffer only once.\n\nTest: builds and boots\nChange-Id: Ib485189043a9c132031e82d4d7380ace3bf9453d\n"
    },
    {
      "commit": "3890c3995c4a52439844faeb80b5503d42b977d8",
      "tree": "180b19a3ef1f44ca611b0feb2808379d175c6fc1",
      "parents": [
        "d6927fb1143398370c0885844bfb58923ef740b7"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Mon Jul 25 12:48:08 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Nov 17 11:44:27 2016 -0800"
      },
      "message": "Cache frame event history producer-side.\n\n* Producer maintains a recent history of frames.\n* Producer only does a binder call if requested\n    informatiVon doesn\u0027t exist in the cache.\n* Consumer sends fences to the producer, which\n    can be queried for timestamps without a\n    binder call.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I8a64579407cc2935f5c659462cb227b07ba27e43\n"
    },
    {
      "commit": "d6927fb1143398370c0885844bfb58923ef740b7",
      "tree": "209199f1c052507a71d3894cf5339191da7bd20d",
      "parents": [
        "eae5819174ef95363b50affbc96c3117ccc458a6"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Sat Jul 23 23:37:30 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Nov 15 12:59:26 2016 -0800"
      },
      "message": "Track frame events incrementally and per layer.\n\n* Replaces FenceTracker, which was owned by SurfaceFlinger,\n    with FrameEventHistory, which is owned by Layer.\n* Updates FrameEventHistory as events occur.\n* Changes SurfaceFlinger flag \"--fences\" to\n    \"--frame-events\".\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I868c2ef93964656d7e41848243433499e7f45fe7\n"
    },
    {
      "commit": "3546a3f08ad84099db4006d651c656d58d2ed566",
      "tree": "614f81f8239e1b8ace0aaee7395db47244cf6411",
      "parents": [
        "069b365163470d2736eb6f591c354d208b5da23b"
      ],
      "author": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Thu Jul 14 11:51:14 2016 -0700"
      },
      "committer": {
        "name": "Brian Anderson",
        "email": "brianderson@google.com",
        "time": "Tue Nov 15 12:59:26 2016 -0800"
      },
      "message": "Fix FenceTracker releaseFence\n\nThis patch:\n* Fixes the release fence when GPU compositing.\n* Stores the final release fence in ConsumerBase just\n    before releasing the Buffer, which helps ensure\n    sync points aren\u0027t added unknowningly.\n* Makes HWC2 release pending buffers as the first step\n    of postCompostion, rather than the last, which should\n    allow dequeue to unblock a little earlier and helps\n    make sure the previous buffer\u0027s release fence has\n    been finalized before FenceTracker::addFrame is\n    called.\n* Fence tracker only sets the release fence once it\n    has been finalized so it does not report a release\n    fence for a buffer that is still latched.\n\nTest: adb shell /data/nativetest/libgui_test/libgui_test\n--gtest_filter\u003d*GetFrameTimestamps*\n\nChange-Id: I27d484bfd48f730bdcea2628f96795c6f4b4df7b\n"
    },
    {
      "commit": "ee87482e6d9437f0a8690f32791120e8fd43d799",
      "tree": "34fa5f7659f973691373de54f52447d39ab1b750",
      "parents": [
        "01d63343986ea36c9e5f60d5ef45a0b5d483a3ca",
        "af2fbb0ccce60dedecdf9f622dc5d2828eeeadbb"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Tue Oct 18 18:51:46 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 18 18:51:46 2016 +0000"
      },
      "message": "Merge \"Fix surfaceflinger file descriptor leak\"\nam: af2fbb0ccc\n\nChange-Id: If21d062e144dd13064c0c3e8021523a8bf20b864\n"
    },
    {
      "commit": "0a4b26ecb6a9f772502c770fbe4c9fc661578cb7",
      "tree": "d41342c0391206253e0631dbfd027882b2153812",
      "parents": [
        "8a767feb142d1cf2bdd8028857710394d938b5b1"
      ],
      "author": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Fri Oct 14 18:13:33 2016 -0700"
      },
      "committer": {
        "name": "Fabien Sanglard",
        "email": "sanglardf@google.com",
        "time": "Mon Oct 17 10:50:11 2016 -0700"
      },
      "message": "Fix surfaceflinger file descriptor leak\n\nIf a producer queues a buffer after a screen resize, the buffer\nwill not be removed from the buffer queue, resulting in a leak of\nfile descriptor.\n\nTest: Fix was tested by the bug reporter (ARM).\nBug: 32012717\n\nChange-Id: I3b7b0745d5fbdee97fc8df2db399c1a2fcdeb375\n"
    },
    {
      "commit": "367c5684f4d417e5176bec12d67f4e2e42738fe0",
      "tree": "5b03d59c7f94e34c25ebabc331f2f427a1dd42c6",
      "parents": [
        "99e27f0bc236e38d88ff4f9912ede514a729b8eb"
      ],
      "author": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Mon Jun 20 11:55:28 2016 -0700"
      },
      "committer": {
        "name": "Robert Carr",
        "email": "racarr@google.com",
        "time": "Tue Jun 21 16:28:41 2016 -0700"
      },
      "message": "SurfaceControl: Add getTransformToDisplayInverse\n\nFor seamless rotation, the window manager needs\naccess to this flag, as it will apply the inverse\ndisplay transform itself to all other windows.\n\nBug: 28823590\nChange-Id: Ifeee1078a9cb4cd01c8052570c137c6228b2f13d\n"
    },
    {
      "commit": "ce796e78a57018f186b062199c75d94545318aca",
      "tree": "234eadc7ac2fc3d699a1040b9cd9576abbebd652",
      "parents": [
        "5045ab2bb14110f577e3cfff8acfae906dc29935"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Thu Feb 04 19:10:51 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Jun 07 16:09:06 2016 -0700"
      },
      "message": "Plumbing for getting FenceTracker timestamps\n\nChange-Id: I1ebee9e42e28658bd3a2b161fdaabb7da756d8f3\n"
    },
    {
      "commit": "40845df1285b387bcbf8f43ac72228eee2606d80",
      "tree": "013720a404ed609b96d59a3e02f53dc36c122e1b",
      "parents": [
        "b49576d5241859a3cf03c9f34b8030ad25d3806b"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Jan 25 17:41:15 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Mon Mar 21 16:06:17 2016 -0700"
      },
      "message": "SF: Add FenceTracker\n\nFenceTracker tracks all fences in SurfaceFlinger. These timestamps\ncould be used for debugging, profiling, or be exposed to the\napplication.\n\nChange-Id: I4297a661c0a7530e744168ac7a2a66c4bca92fd5\n"
    },
    {
      "commit": "9e56aa0fdb5f7121b9b975c6c16db103ea4d2fe9",
      "tree": "3c91c52815a2a0bb851b0280e8be70a49a638208",
      "parents": [
        "fc4e202b33d33b5e11181f09a2229d3ef7ae925a"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Nov 02 13:00:03 2015 -0800"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Feb 29 08:24:14 2016 -0800"
      },
      "message": "Switch SurfaceFlinger to HWC 2.0\n\nEnables SurfaceFlinger to speak to version 2.0 of the Hardware Composer\nHAL instead of version 1.x (also removing support for the framebuffer\nHAL). By default, however, this functionality is disabled. In order to\nenable it, USE_HWC2 must be set to true in Android.mk.\n\nChange-Id: I4589e02ac2165236b10ff2f7cb772f87e0d3daab\n"
    },
    {
      "commit": "ff95aabbcc6e8606acbd7933c90eeb9b8b382a21",
      "tree": "cd7690fdf21486139cfff232c6ce09132d18a05b",
      "parents": [
        "c5cec281654c5dee2273ce4bebd3a749c3a1119e"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Jan 13 17:09:58 2016 -0800"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Feb 09 17:16:33 2016 -0800"
      },
      "message": "Add interface for controlling single buffer auto refresh\n\n- Adds a boolean to BufferQueue that controls whether or not auto\n  refresh is enabled in SurfaceFlinger when in single buffer mode.\n- Adds plumbing up to ANativeWindow.\n- When enabled, it will cache the shared buffer slot in Surface in\n  order to prevent the Binder transaction with SurfaceFlinger.\n\nBug 24940410\n\nChange-Id: I83142afdc00e203f198a32288f071d926f8fda95\n"
    },
    {
      "commit": "063121849890da78b1ad7fb96c54c795de5d1fd6",
      "tree": "47e2449faae2ae494528edecb4ba5cdb55fdda85",
      "parents": [
        "ccdfd60d79a8b7f1ed6401d0f2e8e29166a10584"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Wed Oct 07 16:32:12 2015 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Nov 03 12:04:10 2015 -0800"
      },
      "message": "SF: Force refresh when in single buffer mode\n\n- Add a boolean to BufferItem to track whether single buffer mode is\n  enabled. When it is, force SurfaceFlinger to acquire a new buffer\n  and refresh on every vsync.\n\nBug 24940410\n\nChange-Id: Iea67330c416b6fb14500865f98c67f1c12f23197\n"
    },
    {
      "commit": "47650f4f66a49e1815ad08ca4fb12a661d133abc",
      "tree": "ef673e575a6a2353187500e59f1118875556d907",
      "parents": [
        "29370d3bd744209a5cd6cb6384139486c3405f75"
      ],
      "author": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Tue Aug 04 16:38:17 2015 -0700"
      },
      "committer": {
        "name": "Pablo Ceballos",
        "email": "pceballos@google.com",
        "time": "Fri Aug 07 15:08:34 2015 -0700"
      },
      "message": "native: Rename mBuf to mSlot\n\nRemove the union in BufferItem.\n\nBug: 19769719\nChange-Id: I4e496b5aafce0fc5206dc7551a741f9c262c2cd0\n"
    },
    {
      "commit": "a4650a50a0b35e9e4342d6600b6eb24fd94bb8e5",
      "tree": "756ed49e76eb52abc3b1e8ec7cb962b9a627fcc6",
      "parents": [
        "2a7dde58036e02b2417e49c8965d4a518d981b0b"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue May 12 12:56:16 2015 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue May 12 13:10:17 2015 -0700"
      },
      "message": "Fix PTS handling for buffer replacement\n\nThis changes the way that SurfaceFlinger\u0027s shadow buffer management\nworks such that instead of tracking the size of the shadow queue in the\nBufferQueue, SF tracks the last frame number it has seen, and passes\nthat into the acquireBuffer call. BufferQueueConsumer then ensures that\nit never returns a buffer newer than that frame number, even if that\nmeans that it must return PRESENT_LATER for an otherwise valid buffer.\n\nChange-Id: I3fcb45f683ed660c3f18a8b85ae1f8a962ba6f0e\n"
    },
    {
      "commit": "ecc504043fddb7a75042ce402c67aedfac04d5e2",
      "tree": "ef6b8080362a8655a3291e5757dd72d202701898",
      "parents": [
        "7b2fc930077b1e6ca5946cae6834902318209474"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Tue Apr 28 14:42:06 2015 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Fri May 01 12:23:44 2015 -0700"
      },
      "message": "SurfaceFlinger: Fix PTS on stale buffers\n\nSurfaceFlinger\u0027s (Layer\u0027s) shadow copy of the BufferQueue queue was\ngetting out of sync for a few reasons. This change fixes these by\ndoing the following:\n\n- Adds a check to re-synchronize the shadow copy every time we\n  successfully acquire a buffer by first dropping stale buffers before\n  removing the current buffer.\n- Avoids trying to perform updates for buffers which have been rejected\n  (for incorrect dimensions) by SurfaceFlinger.\n- Adds IGraphicBufferConsumer::setShadowQueueSize, which allows the\n  consumer to notify the BufferQueue that it is maintaining a shadow\n  copy of the queue and prevents it from dropping so many buffers\n  during acquireBuffer that it ends up returning a buffer for which the\n  consumer has not yet received an onFrameAvailable call.\n\nBug: 20096136\nChange-Id: I78d0738428005fc19b3be85cc8f1db498043612f\n(cherry picked from commit 2e36f2283f48ab764b496490c73a132acf21df3a)\n"
    },
    {
      "commit": "ee44edd0acccbf5eaa918d75737c3b65ee04fff7",
      "tree": "757e79db1df532e85418fe69af5d6e49732e6869",
      "parents": [
        "5065a55291b67f584d7b0be3fa3cfc4e29a3cd1c"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Mon Mar 23 15:50:23 2015 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Wed Apr 15 13:20:01 2015 -0700"
      },
      "message": "SurfaceFlinger: Pass surface damage to HWC\n\nPasses the surface damage from the incoming SurfaceFlingerConsumer\nBufferQueue down to the hardware composer HAL interface, if the\nHWC version number is 1.5 or greater.\n\nBug: 11239309\nChange-Id: Ic4305210593874a8d6deba3319055b2b8c57e926\n"
    },
    {
      "commit": "11611f9be590480d7ea27bf0153558573ddcded2",
      "tree": "3a2f8e42db6d2a526ae5d5a96fab1e19be0de210",
      "parents": [
        "cf3834db104e0b052056e3a06d46e3f222f0d372"
      ],
      "author": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Mar 12 15:12:44 2015 -0700"
      },
      "committer": {
        "name": "Dan Stoza",
        "email": "stoza@google.com",
        "time": "Thu Mar 19 13:59:12 2015 -0700"
      },
      "message": "DO NOT MERGE SurfaceFlinger: Stop using IGBC::BufferItem\n\nSwitches all uses of IGraphicBufferConsumer::BufferItem (and\nBufferQueue::BufferItem) to the BufferItem in libgui. Depends on\nframeworks/native I699ed0a6837076867ca756b28d1ffb2238f7a0d9.\n\nCherry pick of I187b3a7d05196b6289596afac8fb9a9d4aebff76\n\nChange-Id: I5bc79fb96b6cba6021af64b20890967aa3b7fcbf\n"
    },
    {
      "commit": "41d67d7ab4da1c393497a620a116a854b3c618e7",
      "tree": "82c09ea2fd772f1c8e0b527f8bb45948ab9b92d8",
      "parents": [
        "c526c35e7398ad06185ea0575a976933b433441d"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Apr 25 16:58:34 2014 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri May 02 10:56:54 2014 -0700"
      },
      "message": "Improve SurfaceFlinger PTS estimation\n\nGet the next refresh time from DispSync instead of guessing based\non the current time.\n\nChange-Id: I8dc72a3217bfd4e9b4c905034194d1a298cad69a\n"
    },
    {
      "commit": "399184a4cd728ea1421fb0bc1722274a29e38f4a",
      "tree": "7185bc1ac84eec1afebc221ed91d90b90fa9a7fb",
      "parents": [
        "05fe2d1cfbf580c04ef1b1f0130b5dccba6dfe33"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Mar 03 15:42:54 2014 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Mar 11 12:23:14 2014 -0700"
      },
      "message": "Add sideband streams to BufferQueue and related classes\n\nSideband streams are essentially a device-specific buffer queue that\nbypasses the BufferQueue system. They can be used for situations with\nhard real-time requirements like high-quality TV and video playback\nwith A/V sync. A handle to the stream is provided by the source HAL,\nand attached to a BufferQueue. The sink HAL can read buffers via the\nstream handle rather than acquiring individual buffers from the\nBufferQueue.\n\nChange-Id: Ib3f262eddfc520f4bbe3d9b91753ed7dd09d3a9b\n"
    },
    {
      "commit": "c1c05de415854eb7a13a16b7e22a22de8515123a",
      "tree": "9be282141f29b6c5ec7d6b75bffb59a05d26be42",
      "parents": [
        "799f51268006f319f6ae538dca670bfc7f522688"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 17 23:45:22 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 17 23:45:22 2013 -0700"
      },
      "message": "fix camera API 2.0 orientation\n\nwe add a flag to ANativeWindow::setBufferTransform that means\n\"apply the inverse rotation of the display this buffer is displayed\nonto to\".\n\nBug: 10804238\nChange-Id: Id2447676271950463e8dbcef1b95935c5c3f32b2\n"
    },
    {
      "commit": "3f84483382be2d528918cc1a6fbc6a7d68e0b181",
      "tree": "81de0907cd7d64eea68e50539b82dc9d70c9f793",
      "parents": [
        "5ff5a84e4829bad9eb44cc9a32d8579ca089051b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 07 21:24:32 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 13 16:07:45 2013 -0700"
      },
      "message": "SurfaceFlinger now uses GLES 2.x when available\n\nBug: 8679321\n\nChange-Id: I2b152d01fb4e2de2ea9fe87f1ddbd6826d7520d7\n"
    },
    {
      "commit": "ad678e18b66f495efa78dc3b9ab99b579945c9e2",
      "tree": "b1158419e04a0417533618592ef58d5fa23490b5",
      "parents": [
        "bf5b849ec7b2050e1fe05aebb3914823da6a0d07"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 23 17:28:53 2013 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 26 18:45:02 2013 -0700"
      },
      "message": "single buffer mode for BufferQueue\n\nBug: 9891035\nChange-Id: Id1ab5f911a6dc4c1d8235e65775b3d3635231ad4\n"
    },
    {
      "commit": "1585c4d9fbbba3ba70ae625923b85cd02cb8a0fd",
      "tree": "42299de67a0088fb4416dba825e40f5b6a22312a",
      "parents": [
        "06b6aed2f158d48ae04c4854d2a8832777ac942e"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Jun 28 13:52:40 2013 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Jul 10 15:38:40 2013 -0700"
      },
      "message": "Pay attention to buffer timestamps\n\nWhen acquiring a buffer, SurfaceFlinger now computes the expected\npresentation time and passes it to the BufferQueue acquireBuffer()\nmethod.  If it\u0027s not yet time to display the buffer, acquireBuffer()\nreturns PRESENT_LATER instead of a buffer.\n\nThe current implementation of the expected-present-time computation\nuses approximations and guesswork.\n\nBug 7900302\n\nChange-Id: If9345611c5983a11a811935aaf27d6388a5036f1\n"
    },
    {
      "commit": "98d3d6ec1250248574f2e8d72e5c934fecbcd734",
      "tree": "f298a8722365c87750cd7d6ab7125f3754635f15",
      "parents": [
        "0077db94d5bc579ae46635958fc92cc446edd16d"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Jun 27 11:51:25 2013 -0700"
      },
      "committer": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Thu Jun 27 11:53:03 2013 -0700"
      },
      "message": "SurfaceFlinger: fix releaseBuffer in updateTexImage\n\nAllow releasing a buffer acquired in the past.\n\nChange-Id: I3f27f1caec109c1a47286fc4d2235c6e1afe9022\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nBug: 9516405\n"
    },
    {
      "commit": "c5d7b7d323bba8772a9005f7d300ad983a04733a",
      "tree": "07479c25735c0bbaccd497db21a90a87c3926242",
      "parents": [
        "d837969640efbc97eda2034c7811dda807d4174f"
      ],
      "author": {
        "name": "Lajos Molnar",
        "email": "lajos@google.com",
        "time": "Fri May 03 14:50:50 2013 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 23 22:17:54 2013 +0000"
      },
      "message": "BufferQueue: track buffer-queue by instance vs. by reference\n\nInstead of representing the buffer-queue as a vector of buffer\nindices, represent them as a vector of BufferItems (copies).\nThis allows modifying the buffer slots independent of the queued\nbuffers.\n\nAs part of this change, BufferSlot properties that are only\nbeen relevant in the buffer-queue have been removed.\n\nAlso, invalid scalingMode in queueBuffer now returns an error.\n\nConsumerBase has also changed to allow reuse of the same\nbuffer slots by different buffers.\n\nChange-Id: If2a698fa142b67c69ad41b8eaca6e127eb3ef75b\nSigned-off-by: Lajos Molnar \u003clajos@google.com\u003e\nRelated-to-bug: 7093648\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": "1df8c345854155cbbcb9f80de9d12d66ea70ac08",
      "tree": "9e3eedb37edfbb45c323364366ae09ea82ba847d",
      "parents": [
        "351c2941736039c495dd7ac849ec64fbf7f3ff05"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Dec 20 14:05:45 2012 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Feb 12 18:15:38 2013 -0800"
      },
      "message": "libgui: disallow NULL Fence pointers\n\nThis change eliminates the uses of a NULL sp\u003cFence\u003e indicating that no waiting\nis required.  Instead we use a non-NULL but invalid Fence object for which the\nwait methods will return immediately.\n\nBug: 7892871\nChange-Id: I5360aebe3090422ef6920d56c99fc4eedc642e48\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": "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"
    }
  ]
}
