)]}'
{
  "log": [
    {
      "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": "686200cb5f3e80c0b0519ec14cc54b280a560863",
      "tree": "c15a2e68f60ad61bf2b3cae397bedb779c36de4f",
      "parents": [
        "070ce94b9fd91d1bb22161a85178440cb46d8ece",
        "f3503c2c30dc0b7eb7603998469f437136497c5c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 26 12:08:07 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 26 12:08:07 2011 -0700"
      },
      "message": "Merge \"remove dead code and member variables.\""
    },
    {
      "commit": "f3503c2c30dc0b7eb7603998469f437136497c5c",
      "tree": "934ebd5f0c8da99a02cb7a4df77d908c54d34f02",
      "parents": [
        "9a817a35f11cb118209a3238451603258ae7f105"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 25 19:56:08 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 25 20:03:43 2011 -0700"
      },
      "message": "remove dead code and member variables.\n\nalso fix some comments and improve debugging logs.\n\nChange-Id: I83e55309f306332b59e1ec46104c4a7fffbf3c97\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": "5c23a2c72d1c3d2c423355ae301e0822e1662b9f",
      "tree": "401a131a26ad11e7fdc9b91cfbaf699675c4b481",
      "parents": [
        "d7a374f6f8f52a88d7e9a4660d9bf9037cf0b659"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jul 19 14:32:36 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jul 21 14:32:56 2011 -0700"
      },
      "message": "SurfaceTexture: remove getAllocator\n\nThis change removes the SurfaceTexture::getAllocator method, as it\u0027s no\nlonger needed.  Proper refcounting of the Gralloc buffers is now handled\nby the IGraphicBufferAlloc binder marshalling code.\n\nChange-Id: I5cffa6ebfc1bc5828fb7ce0e0a5b2f55cd8479da\n"
    },
    {
      "commit": "50c24a2000c785f8be2367e1fc7938a5eda5c9e8",
      "tree": "4f6b33dae6fad115e014290b2535c0b931c9d0a1",
      "parents": [
        "f07b8a3f691be39083fb5163f9456bcfa566f93f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 20 16:46:11 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 20 16:53:13 2011 -0700"
      },
      "message": "clean-up. get rid ofunused code and members in Surface[Control].cpp\n\nChange-Id: Ia7790ae28af2c2ac99eae01c2c5044ace4a490a4\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": "949be32b671304d5281ac0abbf30dcf4ebaa9eaf",
      "tree": "f12cbc9997bd2270f1a7604ba4d78739688975c3",
      "parents": [
        "8d96f19692815aa14979c811a130b38eafc1bf65"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 13 17:39:11 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 15 17:47:08 2011 -0700"
      },
      "message": "move lock/unlock implementaion outside of Surface into SurfaceTextureClient\n\nThis makes ANativeWindow_lock/ANativeWindow_unlockAndPost work\nwith ANativeWindows implemented by Surface and SurfaceTextureClient.\n\nAlso, Surface now inherits directly from SurfaceTextureClient.\n\nBug: 5003724\nChange-Id: I9f285877c7bae9a262e9a7af91c2bae78804b2ef\n"
    },
    {
      "commit": "06b54d7184e015256ad1817e381f61eb7514a3e2",
      "tree": "8e88a243d1d426e97890c6ed716fe53b379d2c09",
      "parents": [
        "b3a26f4d94f390d4baeac0fc11ccb9d451b67dbd",
        "9709687463dc5f1255f435e57b3d2beed8b70330"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jul 14 17:54:27 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 14 17:54:27 2011 -0700"
      },
      "message": "Merge changes Id9aa1003,I8c154189\n\n* changes:\n  SurfaceTexture: make (dis)connect into an IPC\n  SurfaceTexture: add support for new connect values\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": "97eae025ad857e33dce5b3d1d4fd5fe5813d2a80",
      "tree": "e383a743c76a50a1d201ba9d8b34606c661b6787",
      "parents": [
        "d44e1b6033eed29718f2e7e3540e4884929941a5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jul 01 13:12:07 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jul 11 12:31:45 2011 -0700"
      },
      "message": "EGL: fix the ANativeWindow size/fmt override\n\nThis change fixes how the Android EGL layer overrides the size and\nformat of an ANativeWindow in eglCreateWindowSurface.  The new behavior\nis to leave the size untouched when overriding the format.  The previous\nbehavior was to reset the ANativeWindow to use the default size set by\nthe ANativeWindow implementation.\n\nIt also adds two new \u0027perform\u0027 methods to the ANativeWindow interface:\nset_buffers_dimensions and set_buffers_format, and redefines the\nbehavior of set_buffers_geometry to be the combination of these two new\nmethods.\n\nAdditionally, this change adds an error check for the return value of\nthe new native_window_set_buffers_format call, which required adding a\n(stub) handler for to FramebufferNativeWindow.\n\nChange-Id: I805c7ccd8d4730dfb132d10d8bc3fb058a0b9df1\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": "aff74054189a4276a250eac91ac301ab2df37ae3",
      "tree": "9ff93cb4a6667ffd4692e07cab3f5b4125729a2d",
      "parents": [
        "f71e5469441286c6f466043e64a7f6492557cbd9"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jun 20 12:04:09 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jun 20 14:16:49 2011 -0700"
      },
      "message": "SurfaceTexture: fix a NULL ptr dereference.\n\nThis change adds a NULL check when searching the slot list in\nSurfaceTextureClient for the slot corresponding to a buffer being\nqueued or canceled.\n\nBug: 4645023\nChange-Id: I806cbc1e34da118ea33a83c4f25ce8193ba1c3ad\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": "73e0bc805a143d8cc2202fccb73230459edc6869",
      "tree": "59aeea0bcd592df160cf08606fa03cd5fa0a4211",
      "parents": [
        "48a542aabe2d58a0c3e7bac7f384d9951e5a26ed"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 17 22:54:42 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 27 17:04:55 2011 -0700"
      },
      "message": "9-axis sensor fusion with Kalman filter\n\nAdd support for 9-axis gravity and linear-acceleration sensors\nvirtual orientation sensor using 9-axis fusion\n\nChange-Id: I6717539373fce781c10e97b6fa59f68a831a592f\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": "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": "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": "f95a9f019daa0631e6d6ddc826ad9cfe787c42ce",
      "tree": "8e2998c5efebb67a007cfcbe7f2e110d97abbf92",
      "parents": [
        "c4ca7c511499693f13622b135637f600ec913e57"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Mar 14 15:08:53 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Mar 14 17:47:11 2011 -0700"
      },
      "message": "SurfaceTextureClient: Add ISurfaceTexture getter.\n\nThis change adds a getter method to SurfaceTextureClient to get the\nISurfaceTexture object with which the SurfaceTextureClient is\ncommunicating.\n\nBug: 4086509\nChange-Id: Ifec621e0fe5392a5be56b2348fdc54067cbebcdd\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"
    },
    {
      "commit": "4fe6c3e51be77e35f40872cdbca6c80f8f8b7ecb",
      "tree": "5cbcfad147ad1bf26deb384e41d27f4e6bfcdb80",
      "parents": [
        "c891d2b3529b9cf24ef4781a585cd4784815e711"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 13 23:17:30 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 14 01:59:45 2010 -0700"
      },
      "message": "Replace epoll() with poll() and rename PollLoop to Looper.\n\nAs part of this change, consolidated and cleaned up the Looper API so\nthat there are fewer distinctions between the NDK and non-NDK declarations\n(no need for two callback types, etc.).\n\nRemoved the dependence on specific constants from sys/poll.h such as\nPOLLIN.  Instead looper.h defines events like LOOPER_EVENT_INPUT for\nthe events that it supports.  That should help make any future\nunder-the-hood implementation changes easier.\n\nFixed a couple of compiler warnings along the way.\n\nChange-Id: I449a7ec780bf061bdd325452f823673e2b39b6ae\n"
    },
    {
      "commit": "050b56244ff46d43e4886018d7cd20f0b1dc02b9",
      "tree": "1c0cfcd08dbd18b386bebe5dd2cbeb1c945ccbda",
      "parents": [
        "3fb627525e077fa5452a99ac1e2a7e9c41995044"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 16:51:38 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 18:18:00 2010 -0700"
      },
      "message": "Added SensorManager.getMinDelay()\n\nExposed the new \"min delay\" sensor property through native and\njava sensor apis. This allows the caller to know what is the\nmaximum rate at which a sensor can return events, or, if a sensor\nworks in \"update\" mode (events returned only when the value changes).\n\nAlso augmented SensorManager.regusterSensorEvent() so that it can\naccept a value in microsecond in addition to the 4 constants already\ndefined.\n\nChange-Id: If425e9979892666df8c989d7de3c362230fa19e0\n"
    },
    {
      "commit": "23e8de26b7b3d04daf08526f314c2fdd2f8fee65",
      "tree": "239037f931ad847efc861c12c94b68c855a894d6",
      "parents": [
        "5df13ef30e7dd58e4e718e6d949ac3d1f5af94e0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 15:59:50 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 16:09:39 2010 -0700"
      },
      "message": "propagate sensor event rate properly\n\nChange-Id: I32e67d30e4295285a6827956cc8161b2025d70bc\n"
    },
    {
      "commit": "1bf797857e025e8a71db86fb9e79765a767ec1eb",
      "tree": "e8d1aabae069f2b7368be746b99667eb150363f5",
      "parents": [
        "ff7049ab2886acc73e145367118646f7741ce333"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 23:41:37 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 17:57:29 2010 -0700"
      },
      "message": "new SensorService\n\nremove old sensor service and implement SensorManager\non top of the new (native) SensorManger API.\n\nChange-Id: Iddb77d498755da3e11646473a44d651f12f40281\n"
    },
    {
      "commit": "b957b9d63c88efd3a961759424987b99219adeed",
      "tree": "930432d7a5ca739d27d494734de339a938ec7fb6",
      "parents": [
        "e558010a623ead3564fe4d656a5963bf05c17edd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 22:21:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 22:21:56 2010 -0700"
      },
      "message": "first step at implementing the native sensor support\n\nin this commit:\n- implemented the C stub\n- implemented the binder interfaces involved\n- implemented most of the C++ client side\n\nmissing:\n- SensorManager cannot connect to the SensorServer yet\n(because there is no SensorServer yet)\n\nChange-Id: I75010cbeef31c98d6fa62fd5d388dcef87c2636b\n"
    }
  ]
}
