)]}'
{
  "log": [
    {
      "commit": "3762c311729fe9f3af085c14c5c1fb471d994c03",
      "tree": "7d4caccad80ac7327c7bff96dafc857d5f4631ad",
      "parents": [
        "7a939077bd14521c7d351af98df7ed75a8ec9c15"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "8564c8da817a845353d213acd8636b76f567b234",
      "tree": "71acbd8ace822c769aef917629bf5a079f63274d",
      "parents": [
        "c42e6a0bed2c88fd03466c5104d62d7f98e68768"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "8bb824566fa51b7d137305d7849a81a4764c6b7e",
      "tree": "d5f9ba2a080aa1bfcf23cc83f72556b74d446884",
      "parents": [
        "03116780a17cb6db7c926d01630cb9f68a19539b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 29 16:35:41 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 29 16:35:41 2011 -0700"
      },
      "message": "improve GraphicAllocator dump method\n\nGraphicAllocator debugging cannot deal with\ncustom HAL formats. make this more obvious in the\nlog.\n\nChange-Id: I202e58a7f213f32e725aa4eac62cdf6e50ca5894\n"
    },
    {
      "commit": "06a61e2fa830fcd66c12741a52cc5d9b4b214f94",
      "tree": "896f71ee0d07174a573819a79ac9e0f15202ad1c",
      "parents": [
        "7a97ad421b50208dc2f484cc23fa3bb29331a713"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 16:15:53 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 16:15:53 2011 -0800"
      },
      "message": "improve SurfaceFlinger \u0027dumpsys\u0027 log\n\nlist the purgatory, which shows windows that have been closed,\nbut for which the client still has references.\n\nChange-Id: I5168bb88cb328d5d77d71d0871deb9190f493126\n"
    },
    {
      "commit": "19f9eda28a1bd182a5f7bba9dde015b29ab04d25",
      "tree": "6f50da25906fa72cc7610c253ef1a441e4de1cdc",
      "parents": [
        "e5c16ab5a8b4e12aff03a88d3c3c6eac03b609c3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 08 16:40:01 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 08 16:48:28 2010 -0800"
      },
      "message": "fix [3259708] Graphic Buffer Mapper does not support YV12\n\nremove a bunch of a code that was there only to support broken gralloc implementations\n\nChange-Id: I3c1a9172224cbcc283601abfbbd695a20815451f\n"
    },
    {
      "commit": "94720d7ec40d2b5ee200d95a46588cdb0fb30e66",
      "tree": "48c53514ce6f4eb1012a38ec8fd9b422d7937897",
      "parents": [
        "882754e8cc5833e19696271d612b4b9eabcc5bb3"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Wed Dec 01 16:38:01 2010 -0800"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Wed Dec 08 15:40:11 2010 -0800"
      },
      "message": "surfaceflinger: add support for gralloc dump hooks\n\nChange-Id: Ib6f539ed0132b70d040d653c03d52cc04249ac3c\n"
    },
    {
      "commit": "e869aee382cfe01d42dffba4912458a16bb791fb",
      "tree": "4ad59036b474196ca5033fada6604ebde97b7997",
      "parents": [
        "e2abd103a2d311738ff1dd1e1d9b8e6c52aa870c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 03 17:33:09 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 03 17:33:09 2010 -0800"
      },
      "message": "[3171580] don\u0027t automatically log GraphicBuffer allocation failures\n\nsome of these failures are not fatal and even expected in some cases\nso they should not emit a dump in the log in those cases.\n\nChange-Id: Idcfa252e3bfa9d74e27fe4ad8f8623aa01aa9c5e\n"
    },
    {
      "commit": "67bbac844d3fda5c693464deddf349b80c5190a0",
      "tree": "fed9489b30dba324237db50733c85f85c7633878",
      "parents": [
        "ccb87e11da5ff4508ede1e4582a5d617fbe78a97"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 15 14:57:39 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 15 15:23:25 2010 -0700"
      },
      "message": "when a zero dimension buffer is allocated, turn the allocation into\na 1x1 buffer instead of Nx1 (or 1xN)\n\nChange-Id: I27eeb15e83e13002dd9405f4e52b54f7dffc0fe7\n"
    },
    {
      "commit": "dc5ce9c548533e0c149e7a5b2a0597f321905bef",
      "tree": "4f52e51d520c96393d1ebad1f8a021caa012f9ac",
      "parents": [
        "b80d49d33831ad95e6cddd2aa0903a25cd838f93"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 25 14:34:49 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 25 14:34:49 2010 -0700"
      },
      "message": "fix [2545826] calling into gralloc with external lock held\n\nChange-Id: I2d0e017382404c684c768a0dd0423d574213f10a\n"
    },
    {
      "commit": "6f5f5a095a5a4d42fc656cf8c1e6d0f67594f88d",
      "tree": "3e4391ac9de9fe573abe63c88aee3d234b75be32",
      "parents": [
        "6950e428feaccc8164b989ef64e771a99948797a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 18:19:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2168531] have software-only gralloc buffer side-step the HAL\n"
    },
    {
      "commit": "6950e428feaccc8164b989ef64e771a99948797a",
      "tree": "f6520613c5355eef110f3820469d7dc477598629",
      "parents": [
        "521f4f3af94e3a093a37af887d3e317a526b61a1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 17:07:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2167050] glTexImage2D code path buggy in SurfaceFlinger\n\nWhen EGLImage extension is not available, SurfaceFlinger will fallback to using\nglTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an\nextra copy. However this code path has never been exercised and had some bugs\nwhich this patch fix.\n\nMainly the scale factor wasn\u0027t computed right when falling back on glDrawElements.\nWe also fallback to this mode of operation if a buffer doesn\u0027t have the adequate\nusage bits for EGLImage usage.\n\nThis changes only code that is currently not executed. Some refactoring was needed to\nkeep the change clean. This doesn\u0027t change anything functionaly.\n"
    },
    {
      "commit": "0c4cec7e4df87181486d280c98fba9c0f4774c37",
      "tree": "4d3aa4fe0101104a1816af9208d367d588bb4f4d",
      "parents": [
        "7b16834adc1003f492cd2be4b1bcc3fb73a78c23"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "message": "Attempt to fix [2152536] ANR in browser\n\nThe ANR is caused by SurfaceFlinger waiting for buffers of a removed surface to become availlable.\nWhen it is removed from the current list, a Surface is marked as NO_INIT, which causes SF to return\nimmediately in the above case. For some reason, the surface here wasn\u0027t marked as NO_INIT.\n\nThis change makes the code more robust by always (irregadless or errors) setting the NO_INIT status\nin all code paths where a surface is removed from the list.\n\nAdditionaly added more information in the logs, should this happen again.\n"
    },
    {
      "commit": "c4646e654a18543be4e2f7d98f63bc4e603128e1",
      "tree": "334ee9d38c238da62365b10ef6e8a9f83f4a8244",
      "parents": [
        "954e98e023568b354aeec0a54668155ad9083398"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 18:44:09 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 18:44:09 2009 -0700"
      },
      "message": "Allways dump the list of allocated buffers when an allocation fails.\n\nHopefully this will help us understand cases of failures such as [2148405]\n"
    },
    {
      "commit": "9779b221e999583ff89e0dfc40e56398737adbb3",
      "tree": "76b185d252b95b05e8d74e7a1644b843f8839725",
      "parents": [
        "a4eb91da03bd785bc91bed0d25a9efaa9baba1c1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "message": "fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n\nRewrote SurfaceFlinger\u0027s buffer management from the ground-up.\nThe design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.\n\nThe main new feature is to be able to dequeue all buffers at once (very important when there are only two). \n\nA client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.\n\nThe current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.\n\neg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q\neg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q\n\n"
    },
    {
      "commit": "dff8e58d47ede6e748c0b02e128ca33b42a4f362",
      "tree": "716d70cda74aa625d6e67c4debc2eb7c6b81bfc9",
      "parents": [
        "fa6eda01a9f3df0102ce6a65302c8674cc9c7e50"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 14:17:04 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 14:17:04 2009 -0700"
      },
      "message": "update surfaceflinger, libui and libagl to the new gralloc api\n\n- Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually.\n- factor all the lock/unlock code in SurfaceBuffer.\n- fixed \"showupdate\" so it works even when we don\u0027t have preserving eglSwapBuffers().\n- improved the situation with the dirty-region and fixed a problem that caused GL apps to not update.\n- make use of LightRefBase() where needed, instead of duplicating its implementation\n- add LightRefBase::getStrongCount()\n- renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp\n\n- disabled copybits test, since it clashes with the new gralloc api\n\n- Camera/Video will be fixed later when we rework the overlay apis\n"
    },
    {
      "commit": "2b1927f686eaec23a5798966b96aadaee3e2eb85",
      "tree": "7ae57d36ad4b8665c0761e264e84ce8fe9c68c5f",
      "parents": [
        "f670127afccf156681db8a144e49cecb22d744e1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 17 14:15:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 24 15:00:41 2009 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit e5c24638f98162c3b75b4c67a16b510d38e31341\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Fri Apr 17 14:09:03 2009 -0700\n\n    oops forgot this file.\n\ncommit 282642632d0cb12882eecf42e0fdfb2343275de1\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Fri Apr 17 14:07:32 2009 -0700\n\n    use a helper macro for creating Singleton\u003c\u003e\u0027s static attributes instances.\n"
    },
    {
      "commit": "a6b40ba521d5c2fc23da74015531bd4ed8657921",
      "tree": "148f806ad3253b6582f9287750535f3b3bfeb26a",
      "parents": [
        "5f105d38e2c0c45d1d997906a2fa220b001a8e75"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 15 18:34:24 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 15 18:34:24 2009 -0700"
      },
      "message": "fix a rookie mistake causing Singleton\u003c\u003e to be a \"multiton\". Also improve the BufferMapper\u0027s debugging, but turn it off.\n\nSquashed commit of the following:\n\ncommit 04e9cae7f806bd65f2cfe35c011b47a36773bbe5\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Wed Apr 15 18:30:30 2009 -0700\n\n    fix and improve BufferMapper\u0027s tracking of mapped buffers.\n\ncommit 1a8deaed15811092b2349cc3c40cafb5f722046c\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Wed Apr 15 00:52:02 2009 -0700\n\n    fix some bugs with the Singleton\u003c\u003e class. untested.\n\ncommit ed01cc06ad70cf640ce1258f01189cb1a96fd3a8\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Tue Apr 14 19:29:25 2009 -0700\n\n    some work to debug the Singleton\u003c\u003e template.\n"
    },
    {
      "commit": "af9a515299b24031c7aa77bf163d0985cc862069",
      "tree": "ce96435679723e8e6592a7283c3841ec8daf5097",
      "parents": [
        "7e25da07af7f4f8a876ac97be6e4745877aecb08"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 20:34:46 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 20:34:46 2009 -0700"
      },
      "message": "more debugging tools around BufferMapper\n"
    },
    {
      "commit": "1473f46cbc82aa6f0ba744cc896a36923823d55b",
      "tree": "1a03737c7eb71b32735693e5cfdd91d0b57a2ad5",
      "parents": [
        "71d83c04897a10394009b02808bb6b86886b27e1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 14:24:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 14:24:30 2009 -0700"
      },
      "message": "Integrate from //sandbox/mathias/donut/...@145728\n\nSurfaceFlinger rework for new EGL driver model support.\n"
    }
  ]
}
