)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
