)]}'
{
  "log": [
    {
      "commit": "2be352adab7f11646fda7c0240e496bbb37f7bd1",
      "tree": "e7a168546a256cd4f7c57261690796cf527ae8a2",
      "parents": [
        "57d89899c9fb978a1c097f298aa94c5db1f61bb6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 21 17:24:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 24 18:26:01 2010 -0700"
      },
      "message": "added the notion of fixed-size buffers\n\nthe new native_window_set_buffers_geometry allows\nto specify a size and format for all buffers to be\ndequeued. the buffer will be scalled to the window\u0027s\nsize.\n\nChange-Id: I2c378b85c88d29cdd827a5f319d5c704d79ba381\n"
    },
    {
      "commit": "59751dbf7d8f12aeb5c4c07719b7dbbf1f9b5d4b",
      "tree": "a1f1d7119a8109d06cfc2f24b26284ff7627de7a",
      "parents": [
        "9f2c4fd9a14ea79e4cbbd3ab8925794711a6411c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 07 15:58:44 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 12 17:28:20 2010 -0700"
      },
      "message": "SharedBufferStack now can grow up to 16 buffers.\n\nthere is a new resize() api, which currently only allows growing.\n\nChange-Id: Ia37b81b73be466d2491ffed7f3a23cd8e113c6fe\n"
    },
    {
      "commit": "c86727f5805f28fbd25da141c50fb6843f364f3a",
      "tree": "395806614f40b9aac7306a9e951305167fb8abe1",
      "parents": [
        "08d13c3cbb0b250b84ca861edb462060556aead9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 17:30:52 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Feb 21 23:27:25 2010 -0800"
      },
      "message": "remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).\n\nAdd a Flattenable interface to libutils which can be used to flatten\nan object into bytestream + filedescriptor stream.\nParcel is modified to handle Flattenable. And GraphicBuffer implements\nFlattenable.\n\nExcept for the overlay classes libui is now independent of libbinder.\n"
    },
    {
      "commit": "000479f9e325b4e426a67033abd92d47da412725",
      "tree": "16b93ea777744aa24ffe7d3a191bb90529ad4ce5",
      "parents": [
        "28a5dc229ed25c771cde25668928edc788073029"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "e1ceec234c618729cc7bd35fecb11744b52c1cc8",
      "tree": "d478c2160bfb90b429f13089a92d182ddf0b62e0",
      "parents": [
        "177b580f56e91bc5519b8772e696b14f8b5757e2"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 17:31:06 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 20:20:08 2010 -0800"
      },
      "message": "Add an orientation parameter for overlay, so we can do camera preview in portrait mode.\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": "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": "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": "2da99bdaa1712f00525e6a84b58044332cb1baef",
      "tree": "ed330500de06dc645769ea87372fb624390b52a8",
      "parents": [
        "947f4f4d384ea26eb2145cc070a3eed42c59534a",
        "cc77841f643751fd9f128e90f7d1587445ef353e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 14:34:50 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 14:34:50 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n\nConflicts:\n\tinclude/ui/Rect.h\n\tlibs/ui/ISurfaceComposer.cpp\n"
    },
    {
      "commit": "aaf834a284a025cedd8ec1cf01d09e1790c1dcf8",
      "tree": "6314488c2ccaa1ab96923a1c771593ee65e7a726",
      "parents": [
        "7f36a5729f17fcb37a7b65a13fd86b0d922caca9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 19:00:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 26 16:12:20 2009 -0700"
      },
      "message": "some work to try to reduce the code size of some native libraries\n\n- make sure that all binder Bn classes define a ctor and dtor in their respective library.\n  This avoids duplication of the ctor/dtor in libraries where these objects are instantiated.\n  This is also cleaner, should we want these ctor/dtor to do something one day.\n\n- same change as above for some Bp classes and various other non-binder classes\n\n- moved the definition of CHECK_INTERFACE() in IInterface.h instead of having it everywhere.\n\n- improved the CHECK_INTERFACE() macro so it calls a single method in Parcel, instead of inlining its code everywhere\n\n- IBinder::getInterfaceDescriptor() now returns a \"const String16\u0026\" instead of String16, which saves calls to String16 and ~String16\n\n- implemented a cache for BpBinder::getInterfaceDescriptor(), since this does an IPC. HOWEVER, this method never seems to be called.\n  The cache makes BpBinder bigger, so we need to figure out if we need this method at all.\n"
    },
    {
      "commit": "947f4f4d384ea26eb2145cc070a3eed42c59534a",
      "tree": "edc5fb1e6e808a2b809720f44b6236ebe93b577b",
      "parents": [
        "6158b1bf0364da1582468a98ec09d004ba99deec",
        "0690519fcde1ccb189081aa79df61436f65686c2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 01:27:01 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 02:16:08 2009 -0700"
      },
      "message": "merge master to master_gl\n"
    },
    {
      "commit": "0795272aa226f4e965968a03daddc53ce30b7cda",
      "tree": "6b4e8ba5e57c5dcf2dd770c24e14c43eda42fdd7",
      "parents": [
        "25ba5b6564224dceefa086b5c439ef28dad530ca"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\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": "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": "da996f390e17e16f2dfa60e972e7ebc4f868f37e",
      "tree": "00a0f15270d4c7b619fd34d8383257e1761082f4",
      "parents": [
        "d24b8183b93e781080b2c16c487e60d51c12da31"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:50 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:50 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@131421\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": "9266c558bf1d21ff647525ff99f7dadbca417309",
      "tree": "1630b1ba80f4793caf39d865528e662bdb1037fe",
      "parents": [
        "b798689749c64baba81f02e10cf2157c747d6b46"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:10 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:10 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@126645\n"
    },
    {
      "commit": "b798689749c64baba81f02e10cf2157c747d6b46",
      "tree": "da394a395ddb1a6cf69193314846b03fe47a397e",
      "parents": [
        "f013e1afd1e68af5e3b868c26a653bbfb39538f8"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 09 17:51:23 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 09 17:51:23 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@125939\n"
    },
    {
      "commit": "f013e1afd1e68af5e3b868c26a653bbfb39538f8",
      "tree": "7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf",
      "parents": [
        "e70cfafe580c6f2994c4827cd8a534aabf3eb05c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\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"
    }
  ]
}
