)]}'
{
  "log": [
    {
      "commit": "77cec6132aea6ed98812125f5ad5f79e889cf658",
      "tree": "57535ce4ed1806290cb04f8434d324dec7995df2",
      "parents": [
        "d6c938f04ec1e39dcbcf4d5adfcbdfbac0484540"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 14 14:51:01 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 29 17:09:01 2011 -0800"
      },
      "message": "SurfaceTexture: add EGL_KHR_fence_sync option\n\nThis change adds a compile-time option for SurfaceTexture to use the\nEGL_KHR_fence_sync extension to synchronize access to Gralloc buffers.\n\nBug: 5122031\nChange-Id: I7e973a358631fff5308acf377581b811911fe790\n"
    },
    {
      "commit": "87f3265bb082160efdfdfb87a79698c67ebad447",
      "tree": "a9eb05cf1cb1a6d59d1dafe806c843aee10daa76",
      "parents": [
        "c10a94c4b8b42ef75168ad140fdb97d6cca3d2eb"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sat Nov 19 18:04:43 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Nov 21 14:37:29 2011 -0800"
      },
      "message": "EGL: default to swap interval 1\n\nThis change explicitly sets swap interval 1 on the window when an\nEGLSurface is created to render to it.\n\nChange-Id: I91eb29dbee3ae4a55076b921f084d503fbe94e03\n"
    },
    {
      "commit": "f1e868f68204bf469a0c162b84af0e651d513ac8",
      "tree": "23a997a5d68fb46652460aa233ec3dd0133652f3",
      "parents": [
        "6a54a997e3dc71c5b9c5a1c7829bc3eb35404e92"
      ],
      "author": {
        "name": "Sunita Nadampalli",
        "email": "sunitan@ti.com",
        "time": "Wed Nov 09 18:23:41 2011 -0600"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Nov 15 11:43:35 2011 -0800"
      },
      "message": "SurfaceTexture: Fix to return the oldest of free buffers to Client on Dequeue call\n\nSurface Texture dequeue logic is modified to return the oldest of the\nfree buffers to Client on dequeue call.\n\nCurrently dequeue method is returning the first buffer index which is free.\nThe parsing is done in ascending order of the buffer slot indices.\nThis leads to returning the buffer which has been just queued to composer,\nand hence display, and this defeats the purpose of having minimum dequeue count\nas 2 in asynchrnouse mode.\n\nThis is fixed by checking all the free slots and returning the oldest buffer.\n\nChange-Id: Ibbac10593c3994c278c601af0480b171635ecdd4\nSigned-off-by: Sunita Nadampalli \u003csunitan@ti.com\u003e\n"
    },
    {
      "commit": "b89d88f531ee39927f8f554baaae5ecc9101ba9d",
      "tree": "c00601c0b328a2670e449a3afb296bd7ea30eadd",
      "parents": [
        "c51bb4d394dd47e48abc8a6d9cbc740f821546ff"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 10 14:34:26 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 11 18:44:35 2011 -0800"
      },
      "message": "Define, document, and test the behavior of very large SurfaceTextures\n\nupdateTexImage() now throws a runtime exception when its native\ncounterpart fails\n\nBug: 5506633\n\nChange-Id: I151a6f685d465966e7df4df624412ab2da62e95f\n"
    },
    {
      "commit": "8606fefa219d63d0a0f3df1b9dcf49cfbfa5b3e5",
      "tree": "b2d21dc0e83e944c544937be3bbf91e76ae9e875",
      "parents": [
        "ce0a7ade96ddbdcb342e0b382e9d3ea43962cafd"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 28 12:13:31 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Sep 30 14:19:41 2011 -0700"
      },
      "message": "SurfaceTexture: parameterize the texture target\n\nThis change adds a hack to allow Android Browser to use a SurfaceTexture\nto stream RGBA images to a GL_TEXTURE_2D texture object.\n\nChange-Id: Idb90064d5d4b920959ef3be7451362ac5012460e\n"
    },
    {
      "commit": "44a052203e6c1c5453a74ebe94607b5c71b136ec",
      "tree": "73d2c4ce575e0d33bfeca4c626151d0ede0baaa5",
      "parents": [
        "5840639fd18c334c0df30ae03b270c452fee0a61"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Sep 16 17:30:26 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Sep 22 17:49:10 2011 -0700"
      },
      "message": "SurfaceTexture: add name support\n\nThis change adds support for setting a string that can be used to\nidentify a SurfaceTexture object in log messages.\n\nChange-Id: Ib4ee085f36c8830dc964c05ef1654f5a55dfcd60\n"
    },
    {
      "commit": "8618ebcc5d20a5983da1fc6200d50c3662aca6e3",
      "tree": "56e364cad0f30931fb430f68bb7d40f483d68e8e",
      "parents": [
        "1a227437be33157175b4de5f47d08a02647ee71a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 17 15:42:04 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 17 15:49:13 2011 -0700"
      },
      "message": "don\u0027t return the current buffer from dequeueBuffer\n\nwe were not reseting mCurrentTexture in some situations\nwhich in turn caused dequeueBuffers() return a\n\"FREE\" buffer that was also current.\nVery often it was harmless, but it created a race with\nupdateTexImage() which could cause the following\nqueueBuffers() to fail.\n\nBug: 5156325\nChange-Id: If15a31dc869117543d220d6e5562c57116cbabdb\n"
    },
    {
      "commit": "5c71575983e96e6e4c5149e7e39d92f760f5c1fc",
      "tree": "f329ccee1c1cd06d469318d19d62dee34ab4bf7a",
      "parents": [
        "71fd1213b49e6a33bea42348876eb1db2ab3d362"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 10 17:35:09 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 10 17:35:52 2011 -0700"
      },
      "message": "fix a crasher in SurfaceTexture::updateTexImage()\n\nwe now make sure to drain the buffer queue on disconnect.\nthis happens only when in synchrnous mode. in async mode\nwe clear all buffers except the head of the queue.\n\nfor extra safety we also catch the null pointer\nin updateTexImage (which should  never happen) and return\nan error.\n\nBug: 5111008\n\nChange-Id: I5174a6ecbb0de641c6510ef56a611cbb4e9e1f59\n"
    },
    {
      "commit": "71fd1213b49e6a33bea42348876eb1db2ab3d362",
      "tree": "bad46c918113fcfa7e18d8d63bdd6656546cdae5",
      "parents": [
        "a04cda9986366ab480ad8008c4d923271b05d78e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 10 16:33:23 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 10 17:35:26 2011 -0700"
      },
      "message": "rework dequeueBuffer()\u0027s main loop.\n\nthis simplifies the code a bit and also makes sure\nwe reevaluate mAbandoned and mConnectedApi each time\nwe come back from waiting on mDequeueCondition\n\nChange-Id: I1f8538b62ad321b51ed79d953b700036daba796d\n"
    },
    {
      "commit": "a04cda9986366ab480ad8008c4d923271b05d78e",
      "tree": "bc7b846040e1dda936c65a18c1aeda656c88f22c",
      "parents": [
        "fd545de7cd43d6335eb3e44df36336728a8e1e4c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 10 15:28:58 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 10 17:33:46 2011 -0700"
      },
      "message": "error out when SurfaceTexture APIs are called while not connected\n\n- also log a warning when freeAllBuffers is called with a non empty buffer queue\n- rename freeAllBuffers to freeAllBuffersLocked\n\nChange-Id: Idb71fdcf233b9ccae62d5a2a7c3c4bad2501d877\n"
    },
    {
      "commit": "053b02df2d350466a2226a90709e50fedef54747",
      "tree": "28a844d96bfc2fdd0e3714305a8cb86e977a1d90",
      "parents": [
        "fc4ba1141570fab7734e53586dc3d6f3afde10de"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 08 19:14:03 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 08 20:25:44 2011 -0700"
      },
      "message": "return correct value from query after connecting a surface\n\nthe first time a surface was connected, the values returned\nby query NATIVE_WINDOW_DEFAULT_{WIDTH|HEIGHT} and\nNATIVE_WINDOW_TRANSFORM_HINT were wrong until a call\nto queueBuffer was performed.\n\nBug: 5137366, 5121607\nChange-Id: I7ac6b5b0daa876638f6bed7c20f286a6e6d984f6\n"
    },
    {
      "commit": "d50aef50f640723e95ca270441161dfb042115d0",
      "tree": "8acec272063a9d3fa95f2a39320aebe2478bb93d",
      "parents": [
        "0d1d96272025f30f40c49c387f2fe9daaf6133c9",
        "ecfa1d3a7941a4f1a9c381c9c7419ecd0bd86967"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jul 25 11:46:51 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 25 11:46:51 2011 -0700"
      },
      "message": "Merge \"SurfaceTexture: enable RGB external textures\""
    },
    {
      "commit": "ecfa1d3a7941a4f1a9c381c9c7419ecd0bd86967",
      "tree": "6e23317bd8e8ac08a9e4e5ae1d553bb97319cb60",
      "parents": [
        "95b404228547eb771700e6cbb927adc282aebccd"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jul 19 17:58:43 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 22 15:45:18 2011 -0700"
      },
      "message": "SurfaceTexture: enable RGB external textures\n\nThis change removes support for conditionally using the GL_TEXTURE_2D\ntarget for SurfaceTexture textures with RGB buffers.  It also enables\nand fixes the RGB-based SurfaceTexture tests.\n\nChange-Id: I9a251a981cf66af6b048b2e4c3fe7231e4774f4d\n"
    },
    {
      "commit": "5ef59bc764d6bcd0ccf0a266d7d9ab792668a3e9",
      "tree": "aa5b98091b69c5f5d65618acd90b0e6ebf543ec3",
      "parents": [
        "b71a4beb1afb3f91201cd416e8e56733ba17913e"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jul 19 12:08:33 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 22 14:20:41 2011 -0700"
      },
      "message": "SurfaceTexture: add the abandon method.\n\nThis change adds the \u0027abandon\u0027 method to the SurfaceTexture C++ class.\nThis method may be used to put the SurfaceTexture in an abandoned state,\ncausing all ISurfaceTexture methods to fail.\n\nChange-Id: Ibd261f7b73f44e2bec36a8508bf92113cfb7cf95\n"
    },
    {
      "commit": "075db95875db320d4e2ed05be0301ff3cc6023e1",
      "tree": "dc92b0c44b78b5561916a0d9bd3d0ac08f7d582f",
      "parents": [
        "5c23a2c72d1c3d2c423355ae301e0822e1662b9f"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jul 19 12:11:52 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jul 21 14:32:56 2011 -0700"
      },
      "message": "SurfaceTexture: fix a comment\n\nChange-Id: I799532f77f8fbb6b8ee6888fdd8852b6f28e8c33\n"
    },
    {
      "commit": "f07b8a3f691be39083fb5163f9456bcfa566f93f",
      "tree": "885f9fcbb020c630c2b0ea20b13ca2ee850e5f3b",
      "parents": [
        "ff86f37b95327538b97b6b8ef5d3c6ed0cd7f902"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 19 15:24:46 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 19 15:24:46 2011 -0700"
      },
      "message": "implement: \"Add an ANativeWindow API for SurfaceFlinger to suggest an optimal buffer orientation\"\n\nBug: 4487161\nChange-Id: I883f34efe542c2a566d04966f873374f40c50092\n"
    },
    {
      "commit": "09d7ed7b395d66be97c6bcb052039f5c0dce646c",
      "tree": "f707f6e46bd9a0edeaac9b33bffe054a64e3062c",
      "parents": [
        "9d29d155c51a26d789cce2c4c24c659487c63554"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 13 15:24:42 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 19 13:05:11 2011 -0700"
      },
      "message": "Add set_scaling_mode() to ANativeWindow.\n\nThis allows to specify the scaling mode independently from\nthe buffer size.\n\nChange-Id: Iaa2baa660445531a97d3fac192e580f4929c5d3b\n"
    },
    {
      "commit": "9709687463dc5f1255f435e57b3d2beed8b70330",
      "tree": "3a3a66468d3cc2d7b86871eb2f17acea86af7907",
      "parents": [
        "a775f0d4193dffc336b295dc06056f81801eba9e"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jul 13 19:12:20 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jul 14 17:48:32 2011 -0700"
      },
      "message": "SurfaceTexture: make (dis)connect into an IPC\n\nThis change makes the ANativeWindow connect and disconnect calls result\nin an IPC to the SurfaceTexture object.  This will allow us to prevent\nmultiple simultaneous connections from different processes.\n\nChange-Id: Id9aa1003b1335b96ca6bd4a1f5a67aa433d42efb\n"
    },
    {
      "commit": "ea458f190b5f496f80bf98a6ccaca2d46274cebc",
      "tree": "4aceeeabcd27777a0aac4bcd2719b3fc7de89306",
      "parents": [
        "ce43bc48588408e72aaa47ac1483837d5bfd1f59",
        "c9ec69eb6f07881e1d0582156e5697eff69f5546"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Jun 30 18:38:18 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 30 18:38:18 2011 -0700"
      },
      "message": "Merge \"Minor fix in SurfaceTexture\""
    },
    {
      "commit": "c9ec69eb6f07881e1d0582156e5697eff69f5546",
      "tree": "e2f7e8aa3ace307cf0771c620b3abb6e137ef93f",
      "parents": [
        "c18e7e73158f794064fed5017c6c1c9a288673bd"
      ],
      "author": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Fri Jun 24 09:56:27 2011 -0700"
      },
      "committer": {
        "name": "Pannag Sanketi",
        "email": "psanketi@google.com",
        "time": "Thu Jun 30 15:41:19 2011 -0700"
      },
      "message": "Minor fix in SurfaceTexture\n\nChange-Id: Ic859715becf3e6d5107bd8beb8c577034d00ec52\n"
    },
    {
      "commit": "bd5404d0312752e7c8946e8540129f0d2d97bcd7",
      "tree": "abdb05720d7149f0adee32a0f4ae9712cb57d78e",
      "parents": [
        "932e4e613987658383e23fa151c3f5b87d07f028"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jun 26 18:27:47 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jun 27 15:45:39 2011 -0700"
      },
      "message": "SurfaceTexture: change onFrameAvailable behavior\n\nThis change alters the conditions under which the onFrameAvailable\ncallback gets called by the C++ SurfaceTexture class.  The new behavior\nis to call the callback whenever a frame gets queued that will be\nvisible to the buffer consumer.  This means that buffers queued in\nsynchronous mode always trigger the callback, as those buffers will\nremain pending until they are consumed.  Buffers queued in asynchronous\nmode will only trigger the callback if there was not previously an\nunconsumed buffer pending.\n\nThe new behavior means that a consumer should perform a draw operation\nexactly once for every onFrameAvailable call that it recieves.  This\nchange also modifies SurfaceFlinger and the SurfaceTexture JNI to\nsupport of the new behavior.\n\nChange-Id: I8b2c6e00961d3d58b11c6af50b555b6e4c5f5b40\n"
    },
    {
      "commit": "0904d0af81e8a0a5404d6c03f4dcea02bea8170d",
      "tree": "30ed521b5552efb6baeac987de69ea73e83fcdba",
      "parents": [
        "62250fbcd15dc46fd37341f9843e87585e132f05"
      ],
      "author": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Thu Jun 23 21:21:47 2011 -0700"
      },
      "committer": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Thu Jun 23 21:21:47 2011 -0700"
      },
      "message": "Add allowSynchronousMode to SurfaceTexture constructor.\n\nChange-Id: I54f30a3c16bbe6b813f3bcd1d389da5627531304\n"
    },
    {
      "commit": "4e03d327d6310cd2c5ca3ecd55f91363b555de71",
      "tree": "c11d3fb0a2333a27b22962c653ad5805e29f0961",
      "parents": [
        "15e0d9f5e0700fa7dc0ecd0f07d5fea6f9597ca0"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jun 12 14:11:39 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jun 13 10:50:13 2011 -0700"
      },
      "message": "SurfaceTexture: fix up a comment.\n\nChange-Id: I044e44e17319e08af657a7ec9fa39100876fe862\n"
    },
    {
      "commit": "eadfb673e7b346af02a925ad04494100db1ebbf7",
      "tree": "6ff88f77a6762f00a868807706f1e995d16373ae",
      "parents": [
        "fe93010446e68c747f4af727cbc48eaf63131689"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jun 12 17:03:06 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jun 13 10:50:12 2011 -0700"
      },
      "message": "SurfaceTexture: fix a getTransformMatrix crash.\n\nThis change moves the computation of the transform matrix out of\ngetTransformMatrix and instead performs the computation when\nupdateTexImage gets called.  This is needed in order for\ngetTransformMatrix to succeed even if the buffers have been freed (e.g.\nby changing the buffer count) because the computation depends upon the\nproperties of the current GraphicBuffer.\n\nChange-Id: Ied541ab8747b7ad604f862717135f9a16a816be9\nBug: 4490420\n"
    },
    {
      "commit": "a218715a7fca98c868feccee4751c94e38b676ff",
      "tree": "3386ef4297d74a48b940e2b9d61fdd6f9c209cd0",
      "parents": [
        "4ece6db47ec33ed439ae2177fbc0cc3e7e79cdca"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu May 19 13:33:00 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed May 25 12:27:33 2011 -0700"
      },
      "message": "SurfaceTexture: clean up some comments, tests, etc.\n\nThis change fixes up some stale comments, member variable names, log\nmessages and disables a failing test.\n\nChange-Id: Ic1d3344b18066cf710e4a42838b2417c6b1f2f6c\n"
    },
    {
      "commit": "e845c352c8eb93412fa7caedb5435d3597c795d0",
      "tree": "615a7bacd4bf4112fb9fc443d565ab1805c7fed9",
      "parents": [
        "7f3289c95ec489651f1c04f1a71cfc7a8b535805"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 15:05:29 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "fix onFrameAvailable\n\nChange-Id: I391fe9f6684ac9fd4f91416ce18b583f7087d966\n"
    },
    {
      "commit": "7f3289c95ec489651f1c04f1a71cfc7a8b535805",
      "tree": "1f1358ac1757de4e6aca689ee5c9ac12ea108c32",
      "parents": [
        "402ff24aa199a2587498b694e2be67ceb1265c69"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 09 19:08:33 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "Add SurfaceTexture logging\n\nChange-Id: If1b74be5230813fb76429935d88b9d4a7c41700c\n"
    },
    {
      "commit": "402ff24aa199a2587498b694e2be67ceb1265c69",
      "tree": "90d37bedbae4aaf34029c23cd7569fe7bde27ae9",
      "parents": [
        "a6b717b52a79c83e66247ab49050ddf07b4d5126"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 02 19:51:12 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "Implement {Surface|SurfaceTextureClient}::setSwapInterval()\n\nChange-Id: I8382e346ddaa2c4c8ff56ac3ffd7f0109572f188\n"
    },
    {
      "commit": "5bbb1cf9d7f9ecb8a2fc5ca8ba51c222c2aaff16",
      "tree": "960bc168b38e085af1c584784bf08b66224c0bf0",
      "parents": [
        "ed3894c07a67b3e35d07084c4a8b410908bfedc5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 21 18:52:51 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "Add the concept of synchronous dequeueBuffer in SurfaceTexture\n\nChange-Id: Ic94cbab092953243a0746e04bbe1b2eb0cc930ef\n"
    },
    {
      "commit": "ed3894c07a67b3e35d07084c4a8b410908bfedc5",
      "tree": "d6be3a0f844843e230bf10e285896d3a6336e167",
      "parents": [
        "0297dcae8fddb18ab9e28ba1858a57a8aec3ef32"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:20:59 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "unify SurfaceTexture and Surface\n\nChange-Id: I49da2f5d8408e4cd7e148cfb777bb4ff68cd8f37\n"
    },
    {
      "commit": "0297dcae8fddb18ab9e28ba1858a57a8aec3ef32",
      "tree": "956126b5b62743efbdfbaa63268662e9a3a8aa80",
      "parents": [
        "f605a5aae5856d0c6114f36659ff9e8c5f3b5c19"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 25 20:22:14 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 11 18:01:51 2011 -0700"
      },
      "message": "Fix a bug where setgeometry couldn\u0027t be undone\n\nThis change the binder protocol between SurfaceTextureClient\nand SurfaceTexture. dequeueBuffer() now takes the requested\nparameters for the buffer. SurfaceTexture decides if the\nbuffer needs to be reallocated and does the allocation\nif needed. In that case it returns BUFFER_NEEDS_REALLOCATION\nto tell SurfaceTextureClient that it needs to call\nrequestBuffer (which all parameters have been removed) to\nacquire a pointer to the buffer.\n\ndequeueBuffer and requestBuffer could be folded into a single\nIPC call, but we chose to optimize the case where buffers are\nnot created and avoid some complexity in the marshalling code.\n\nChange-Id: I097a7f6f40a3491e10f3f3742eab33999286c304\n"
    },
    {
      "commit": "578492e999b3919cfc587024c5f86d6837c3aa7c",
      "tree": "362cb7ad4c104098f8994e6aa03917b95281e1fe",
      "parents": [
        "4af51a14febf0c6caf844f4620c423c6dd46bfab",
        "27cd07ca8006fd80d85379ada416874bfa78aa88"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 18 19:51:26 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Apr 18 19:51:26 2011 -0700"
      },
      "message": "Merge \"changes to SurfaceTexture needed for unification with SF\""
    },
    {
      "commit": "27cd07ca8006fd80d85379ada416874bfa78aa88",
      "tree": "b84ecf49433b440242072cc186ba6944c7b372b7",
      "parents": [
        "7797e647fc8fcd5091b9449c0044f5cb70db5b47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 11 21:19:55 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 11 21:19:55 2011 -0700"
      },
      "message": "changes to SurfaceTexture needed for unification with SF\n\n- implement connect/disconnect\n- implement missing query\n- handle texture_2d in addition to texture_external_oes\n\nChange-Id: I971a70821f00f22b01f5337de4a7d451177fec4d\n"
    },
    {
      "commit": "5f05f99aaedaba18c426fac287bcb18d56dbe881",
      "tree": "791dab7fb51fb0e49663e9af9f8ac9f44f9242ec",
      "parents": [
        "7797e647fc8fcd5091b9449c0044f5cb70db5b47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 08 19:10:43 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 08 19:28:04 2011 -0700"
      },
      "message": "Fix a GraphicBuffer leak in SurfaceTexture\n\nThis leak was intentional, it was there to deal with the fact that\nsome gralloc implementations don\u0027t track buffer handles with\nfile-descriptors so buffers needed to stay alive until there were\nregistered, which is not guaranteed by binder transactions.\n\nIn this new implementation, we use a small BBinder holding a\nreference to the buffer, which with tuck into the parcel. This forces\nthe reference to stay alive until the parcel is destroyed, which\nis guaranteed (by construction) to happen after the buffer is\nregistered.\n\nthis allows the public facing API to not expose the previous hack.\n\nChange-Id: I1dd6cd83679a2b7457ad628169e2851acc027143\n"
    },
    {
      "commit": "e5a1bffd9106b1d82259de1a202e1f2f28742392",
      "tree": "5db6b7eb4b1b32395aae1950e2bcec1c6a80fd4d",
      "parents": [
        "616fb9a38a5b558b1245b0e7f6dc0c4e5ef1a985"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 31 19:10:24 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 01 14:43:35 2011 -0700"
      },
      "message": "SurfaceTexture can now force the client to request a buffer\n\nSurfaceTexture now has the concept of default size a new method,\nsetDefaultBufferSize() to set it. When the default size is\nchanged, dequeueBuffer() will return a value telling the\nclient that it must ask for a new buffer.\n\nThe above only applies if the client has not\noverriden the buffer size with setGeometry.\n\nChange-Id: I520dc40363054b7e37fdb67d6a2e7bce70326e81\n"
    },
    {
      "commit": "c5f94d8a4779050125145396ca83fbc862c7ed6b",
      "tree": "83d016c9670032683faa39fda755b236a9010954",
      "parents": [
        "262564df9613e8950fb3828ecc6dfffe79cc1b31"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Fri Feb 18 11:02:42 2011 -0800"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Thu Mar 17 13:10:03 2011 -0700"
      },
      "message": "Add support for timestamps into SurfaceTexture.\n\nAPI addition: The timestamps are represented as nanoseconds from some\narbitrary time point. Like the SurfaceTexture transform matrix, the\ntimestamp retrieved by getTimestamp is for the last frame sent to the\nGL texture using updateTexImage().\n\nCamera HAL change: Expect vendors to set these timestamps using\nnative_window_set_buffers_timestamp().  For now, they are\nautogenerated by SurfaceTextureClient if set_buffers_timestamp() is\nnever called, but such timing is likely not accurate enough to pass a\nCTS test.\n\nbug:3300707\n\nChange-Id: Ife131a0c2a826ac27342e11b8a6c42ff49e1bea7\n"
    },
    {
      "commit": "96dcc978430f0daf6d73fee96a01779ed537a0ce",
      "tree": "683c5986dd007030e5a98e57aa6c0764d19da51b",
      "parents": [
        "8e79442c4fdabd2f82d0ed8e23d394816edee495"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Feb 27 14:10:20 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Feb 28 12:24:40 2011 -0800"
      },
      "message": "Add the MIN_UNDEQUEUED_BUFFERS query to ANW.\n\nThis change adds a new query to ANativeWindow for getting the minimum\nnumber of buffers that must be left un-dequeued during the steady-state\noperation of the ANativeWindow.\n\nChange-Id: Ie8c461fc26b02ecde02ddb4f95bf763662cf1551\nRelated-Bug: 3356050\n"
    },
    {
      "commit": "83bac216a7ba8493a7916e40b2555e73c3a5cc1a",
      "tree": "ff57384d2f89f0dd958add05408179b537dc973f",
      "parents": [
        "b799314e64d5afe050aeee394f0c29d7728c1e22"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 15:31:47 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Feb 02 15:31:47 2011 -0800"
      },
      "message": "Pass the IGraphicBufferAlloc to SurfaceTextureClient.\n\nThis change passes a reference to the IGraphicBufferAlloc binder object\nto SurfaceTextureClient objects.  When STC objects are created they\nquery their associated ISurfaceTexture object for the\nIGraphicBufferAlloc that the SurfaceTexture uses to allocate buffers.\nHaving the SurfaceTextureClient hold this reference prevents the\nGraphicBufferAlloc in SurfaceFlinger from freeing the allocated buffers\nbefore the SurfaceTextureClient is done with them.\n\nChange-Id: Ib8e30e8b37fdd60438cbb4cb7e9174d0ba6d661c\nrelated-bug: 3362519\n"
    },
    {
      "commit": "376590d668e22a918439877b55faf075427b13f3",
      "tree": "d55b9baf0efec6a49de60786cc996f6ef699d067",
      "parents": [
        "0fb736c0937d9d65001e0176d90e1011226594bf"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 13 14:43:36 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 16 17:28:39 2011 -0800"
      },
      "message": "Implement SurfaceTexture frame-available callback.\n\nThis change implements the onFrameAvailable callback for the\nSurfaceTexture java class.  It includes the C++ SurfaceTexture code as\nwell as the JNI and Java code to enable the callback.\n\nChange-Id: Ifd8b8e7ad46ee70cba6da1c2e96dab8045d1ea30\n"
    },
    {
      "commit": "f7acf162f8d682c6ebc9af41ca76795b79509193",
      "tree": "b2f5246744f5a8c15f841f6a45da4a53679eff67",
      "parents": [
        "e8d0e8a77690eca02f15b0d5e628be7cad5d0133"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jan 12 18:30:40 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 13 12:19:04 2011 -0800"
      },
      "message": "Fix remote GraphicBuffer allocation in SurfaceFlinger.\n\nThis change fixes a horrible hack that I did to allow application\nprocesses to create GraphicBuffer objects by making a binder call to\nSurfaceFlinger.  This change introduces a new binder interface\nspecifically for doing this, and does it in such a way that\nSurfaceFlinger will maintain a reference to the buffers until the app is\ndone with them.\n\nChange-Id: Icb240397c6c206d7f69124c1497a829f051cb49b\n"
    },
    {
      "commit": "b598fb90727be45e926a11abefc319819a733540",
      "tree": "12457615a7573c7e2beaab0631ff6d204909d571",
      "parents": [
        "7a8f01abf98b6212358ea0e0401879093d2c0f93"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 09 16:33:17 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jan 12 11:28:38 2011 -0800"
      },
      "message": "Implement crop \u0026 transform for SurfaceTexture.\n\nThis change adds support for the setCrop and setTransform methods of the\nSurfaceTexture C++ class.  The crop and transform for the current\ntexture will be accessed by applications as a single texture coordinate\ntransform matrix.\n\nChange-Id: I6482bf96f680e5c175364e848936db3908d6c8f8\n"
    },
    {
      "commit": "d369dc42506ec003f1839bb9e27edada411324b5",
      "tree": "3b4f8881a614aa1e44ff337ee136b8eb8306ed2a",
      "parents": [
        "7dc00d5eb27de41f93a7e232b3cd374c84eb77d1"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 09 13:25:39 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 09 16:40:06 2011 -0800"
      },
      "message": "Fix a bug in SurfaceTexture::setBufferCount.\n\nWe need to reset mCurrentTexture and mLastQueued in setBufferCount\nbecause it frees all of the buffers associated with the buffer slots.\n\nChange-Id: Ie2f834ec1c07ce7a4ab9b2b5fc5fe8c294010c60\n"
    },
    {
      "commit": "68e4a7ac849b681b1fb769857fc04f64262480c4",
      "tree": "c13a745fc7c54db14529326e1ade56c44d1b922a",
      "parents": [
        "0a53d5c81b5553d6063b8133492275ce88186978"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Dec 20 11:27:26 2010 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 06 13:20:47 2011 -0800"
      },
      "message": "Add the SurfaceTexture C++ implementation.\n\nThis change adds the C++ implementation of SurfaceTexture and related\nclasses. The goal of this is for a SurfaceTexture to be passed to\ncamera service or Stagefright in place of a Surface to allow camera\npreview or decoded video frames to be streamed to an OpenGL ES texture\nthat an application can use.\n\nChange-Id: I55c83a7017f1ecb81c9c9e3252cbd118b914296c\n"
    }
  ]
}
