)]}'
{
  "log": [
    {
      "commit": "b2a153adc9860616acdb96d7cdd64494d5a2a0f2",
      "tree": "3e87a5d9681d86ad68c14222774f77bc4bd3ae4a",
      "parents": [
        "be0cc36525f090032d1b84d95e1d8ba5fc714fc2"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sun May 01 11:33:26 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 16:40:14 2011 -0700"
      },
      "message": "frameworks/base: android_native_buffer_t -\u003e ANativeWindowBuffer\n\nChange-Id: Idc2eabaa805bb6d308ebb315872623f28d428417\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "4d7c1ce651bd5e283e694fa34641e1dc080613c0",
      "tree": "cfb1f708b760f20b08ec81a6bc4d25c59ec8cc04",
      "parents": [
        "9c7ac0d142eaf4b083a309299ab023932a9bb109"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Apr 14 16:54:38 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 15:49:40 2011 -0700"
      },
      "message": "frameworks/base: make the ANativeWindow query() method const\n\nquery() does not modify the object\u0027s data, so it needs to be a const method\n\nChange-Id: I67c40a3c865461e6f1cc2193fd2d74286ff6ac8f\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\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": "5e0690745a45f99d12d940dd4aaae814b00a429e",
      "tree": "e3ec2e16e969670170e68c438343fbceed182491",
      "parents": [
        "1a2344b8b2c374cb32ff4af020666e6910ff2a8f",
        "a15e4886de8f75f3cb137f51743d330414c910e8"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Nov 17 17:29:48 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 17 17:29:48 2010 -0800"
      },
      "message": "am a15e4886: Merge \"Framebuffer: Support variable number of framebuffers in the UI\"\n\n* commit \u0027a15e4886de8f75f3cb137f51743d330414c910e8\u0027:\n  Framebuffer: Support variable number of framebuffers in the UI\n"
    },
    {
      "commit": "84043438cfa7f0f934cb8884315e9db2fd3c7e2c",
      "tree": "ef0a53f647c528e949a30ad2a5f79882029be0fa",
      "parents": [
        "db2403ff3251bebb5dd6bdb98f826a8e04dc6ed1"
      ],
      "author": {
        "name": "Rodrigo Obregon",
        "email": "robregon@ti.com",
        "time": "Wed Nov 03 15:16:18 2010 -0500"
      },
      "committer": {
        "name": "Rodrigo Obregon",
        "email": "robregon@ti.com",
        "time": "Wed Nov 03 15:16:18 2010 -0500"
      },
      "message": "Framebuffer: Support variable number of framebuffers in the UI\n\nThis change defines a macro NUM_FRAME_BUFFERS to set\nthe desired number of framebuffers to be used by the UI,\ninstead of hard-coding 2 framebuffers.\n\nAditional logic has been  added to handle the initialization\nand destruction of NUM_FRAME_BUFFERS buffers.\n\nChange-Id: I3a4bfec3e0f453432f2ffebf084c00f574d3be46\nSigned-off-by: Rodrigo Obregon \u003crobregon@ti.com\u003e\n"
    },
    {
      "commit": "04262e9f842edf20168399b6a70f0d67e518fe69",
      "tree": "dd2c01550c43c4658f78d87a60d8d8407af9afe9",
      "parents": [
        "cc5494c9996f809e36539b24e8b6b67683383d29"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 13 22:57:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 13 23:16:58 2010 -0700"
      },
      "message": "Add logging of various important graphics events\n\nThere are 16 events logged in the event log:\nSF_APP_DEQUEUE_BEFORE\nSF_APP_DEQUEUE_AFTER\nSF_APP_LOCK_BEFORE\nSF_APP_LOCK_AFTER\nSF_APP_QUEUE\n\nSF_REPAINT\nSF_COMPOSITION_COMPLETE\nSF_UNLOCK_CLIENTS\nSF_SWAP_BUFFERS\nSF_REPAINT_DONE\n\nSF_FB_POST_BEFORE\nSF_FB_POST_AFTER\nSF_FB_DEQUEUE_BEFORE\nSF_FB_DEQUEUE_AFTER\nSF_FB_LOCK_BEFORE\nSF_FB_LOCK_AFTER\n\nall events log the buffer conserned and a timestamp in microseconds.\n\nby default the logging is not enabled, to turn it on:\nadb shell service call SurfaceFlinger 1006 i31 1\nadb shell setprop debug.graphic_log 1\n\nThe effect is immediate in SurfaceFlinger, but applications need to be\nrestarted.\n\nChange-Id: Ifc2e31f7aed072d9a7dede20ff2ce59231edbec1\n"
    },
    {
      "commit": "8b49bd1a2f8117e1c22884f0150e72cbcf838f32",
      "tree": "ec6e43ed118268b09cbb61c8eed02c757e9602ed",
      "parents": [
        "3c80a4a044865bdf1289c7896baffa1c082d835c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 13:56:17 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 15:32:04 2010 -0700"
      },
      "message": "Introduce official public NativeWindow type.\n\nNot yet hooked up to anything in the NDK, but requires renaming\nthe existing android_native_window_t type everywhere.\n\nChange-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e\n"
    },
    {
      "commit": "b1a1874625a6aca967601fcda53a82d8d712df45",
      "tree": "3cf96bf9cc4bf734da47e58cab3c5421e7698139",
      "parents": [
        "d55de40481c6ec7d8fbd1a38c80a6c66bf462a71"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "message": "Android side of the fix for [2121211] Sholes has stutter during animations\n\na new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to\n"
    },
    {
      "commit": "5cec4742b3a1d7448bd32ae57cb4cf70b484c64c",
      "tree": "9a3d6adb933fd0947ffc643e3d11f432a4baec4b",
      "parents": [
        "064dbd076d431a7508b864aa0993cd59ef743e4e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 22:34:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 23:32:29 2009 -0700"
      },
      "message": "second take, hopefully this time it doesn\u0027t break one of the builds: \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n"
    },
    {
      "commit": "64e89a8aff9a45a491f1d7064a655b9021fe644a",
      "tree": "5cad5d20370d2d77335324e55551ce2a2fe8b903",
      "parents": [
        "50cb54ff5cdb233d01e1dd94b355cbfe0a371520"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "message": "Revert \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n\nThis reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.\n"
    },
    {
      "commit": "8b76a0ac6fbf07254629ed1ea86af014d5abe050",
      "tree": "e492e09655269fff3ca14b6a62f9b07f2d484038",
      "parents": [
        "c5ea43920919eeaec4ec0686de9fa3d034d82337"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:59:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 16:12:56 2009 -0700"
      },
      "message": "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\n\nThis change makes SurfaceHolder.setType(GPU) obsolete (it\u0027s now ignored).\nAdded an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.\n"
    },
    {
      "commit": "5b5c9144872b4e31ba5a041dce585a8ddbbe495d",
      "tree": "a87a028c1485452127f0ec9c0e8214d419fe6753",
      "parents": [
        "5e631892fb9ac4da83b70ba129ceb6a3f501bad9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 18:14:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 18:14:56 2009 -0700"
      },
      "message": "fixed some issues with the software renderer when surfaces are made current.\n\nthere was several issues:\n- when a surface was made non-current, the last frame wasn\u0027t shown and the buffer could stay locked\n- when a surface was made current the 2nd time, it would not dequeue a new buffer\n\nnow, queue/dequeue are done when the surface is made current.\n\nfor this to work, a new query() hook had to be added on android_native_window_t, it allows to retrieve some attributes of a window (currently only width and height).\n"
    },
    {
      "commit": "26c28b16f3464eeb98b091b915ccf494ac31c35f",
      "tree": "a13c8d030ad3f9988c4958d7cbac328d20df7dcb",
      "parents": [
        "c1e3ec555b79b1e45fccbdf0bbc8ac2d51902860"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 22:39:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 00:09:27 2009 -0700"
      },
      "message": "make use of new eglGetRenderBufferANDROID extension to clean-up a bit a few hacks added recently\n"
    },
    {
      "commit": "cbc4c9f8d56317b2fe8964c15c9785ebeef98ca7",
      "tree": "131ba56996017a0493c681ef86c3f49bbcfa9dd3",
      "parents": [
        "f31868e59fbf59a8d479587c80b648fb37a166fc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 23 21:11:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 20:39:16 2009 -0700"
      },
      "message": "hack copybit back in for video playback on msm7k. we have h/w accelerated video again\n"
    },
    {
      "commit": "97b8056c3182a973c67d3c1b196150d4b9e30f3a",
      "tree": "b78a1c6d95b468aa654d1910226ae711250799b5",
      "parents": [
        "927d37cb788670b91af0f1a7a93c68046a838d23"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 17:40:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 17:40:23 2009 -0700"
      },
      "message": "add support for update-on-demand in SurfaceFlinger\n"
    },
    {
      "commit": "ac2523b161df2bb507cc88906bb070878266770d",
      "tree": "30ee897d6e8fa63e067627a91697f13f1fbd919d",
      "parents": [
        "e633f9339a2556771c79c784b0b23a9aade30485"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:11:11 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:11:11 2009 -0700"
      },
      "message": "move opengl/include/EGL/android_natives.h to include/ui/egl/android_natives.h and don\u0027t include it from egl.h\n\nthe android_native_ types are just forward declared in egl.h\n"
    },
    {
      "commit": "e633f9339a2556771c79c784b0b23a9aade30485",
      "tree": "bb334508992dc3a8320957bb39e0016d047530ad",
      "parents": [
        "430f2ed5c03312700131a70c858b98e1cc6bc161"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 00:59:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 00:59:23 2009 -0700"
      },
      "message": "get rid of android_native_buffer_t::getHandle() and replace it with an handle field\n\nthis abstraction was not necessary. things are easier now.\n"
    },
    {
      "commit": "6279619e4279daf77feff0c76e089b26ad66124f",
      "tree": "8189ce775d4ed72742bf9c5f4a4f12c5833767b9",
      "parents": [
        "dff8e58d47ede6e748c0b02e128ca33b42a4f362"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 19:38:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 19:38:43 2009 -0700"
      },
      "message": "minor clean-up in FramebufferNativeWindow\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": "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"
    },
    {
      "commit": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d24b8183b93e781080b2c16c487e60d51c12da31",
      "tree": "fbb89154858984eb8e41556da7e9433040d55cd4",
      "parents": [
        "f1e484acb594a726fb57ad0ae4cfe902c7f35858"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
