)]}'
{
  "log": [
    {
      "commit": "3e87d8dadefaf4b56bf15a15f1b53928d7a12cd2",
      "tree": "ab668b163c12f23f013e4b4402e703a187afa34f",
      "parents": [
        "a01b4e237d57b74689576a3d486a2b2b903e74f4"
      ],
      "author": {
        "name": "Michael Johnson",
        "email": "mpj@google.com",
        "time": "Fri Aug 19 11:47:08 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "More error checks to avoid div by zero.\n\nChange-Id: I18e5b72d02bf5420c14334d3a03f18fa40572d31\n"
    },
    {
      "commit": "a01b4e237d57b74689576a3d486a2b2b903e74f4",
      "tree": "ffd68e8a310051e32e3d5c4d793178265e04b2f1",
      "parents": [
        "16bcf66afa333f8d3f3b835ed556e4fce8fa35bf"
      ],
      "author": {
        "name": "Max Braun",
        "email": "braun@google.com",
        "time": "Wed Aug 17 18:22:52 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "Fix occasional fusion divergence by detecting it and resetting the fusion.\n\nChange-Id: I51186e12fb9b2316e3671e3908174f4495df89a0\n"
    },
    {
      "commit": "16bcf66afa333f8d3f3b835ed556e4fce8fa35bf",
      "tree": "303191acfe597d283d30a2d64a25e692b02e7c48",
      "parents": [
        "16c3e4ae72e543f53a82f393dd287c11db8a7a80"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 15 17:10:23 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "have the sensorsevice test print the delay of the first received event\n\nChange-Id: I89d63122574c3f8790f00512c76d59b463acf18f\n"
    },
    {
      "commit": "16c3e4ae72e543f53a82f393dd287c11db8a7a80",
      "tree": "686210337e18a31e0fddcba370337ea1b0aa45fe",
      "parents": [
        "7b2b32f2e761a919deb6f82d978b379429f77b05"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 20 18:51:15 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "silence sensorservice when it\u0027s dropping events\n\nChange-Id: Ib05862e545aa780821aa605e45ab189f530494b7\n"
    },
    {
      "commit": "7b2b32f2e761a919deb6f82d978b379429f77b05",
      "tree": "810eb268e4f2d17c5d51f2fbf67acd9952e2be23",
      "parents": [
        "0be7a26220f786c068d6f5488d89ea4937c1df51"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 14 16:39:46 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "sensorservice: be more robust when there are no sensor h/w\n\nBug: 5030108\nChange-Id: I45b85b3c492b9268cb0ae44d2e5fc8c708b6e66e\n"
    },
    {
      "commit": "0be7a26220f786c068d6f5488d89ea4937c1df51",
      "tree": "61239b0091a4a58391617e784e75a26044fc3f40",
      "parents": [
        "1cb13461a8cf62e3ba634e5965332f2d284f6d42"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "Remove the simulator target from all makefiles. Bug: 5010576\n\nChange-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8\n"
    },
    {
      "commit": "1cb13461a8cf62e3ba634e5965332f2d284f6d42",
      "tree": "63b64546b7de078632172b12e99616e3deaf5a2e",
      "parents": [
        "eaf2d0bfe37415ba1e42a97608823e8dbef53220"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 27 16:05:52 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "PermissionCache caches permission checks\n\nThis is intended to absorb the cost of the IPC\nto the permission controller.\nCached permission checks cost about 3us, while\nfull blown ones are two orders of magnitude slower.\n\nCAVEAT: PermissionCache can only handle system\npermissions safely for now, because the cache is\nnot purged upon global permission changes.\n\nChange-Id: I8b8a5e71e191e3c01e8f792f253c379190eee62e\n"
    },
    {
      "commit": "eaf2d0bfe37415ba1e42a97608823e8dbef53220",
      "tree": "b5fa6d5604d45683ae17c8163f96e3128ffe4b5b",
      "parents": [
        "010e42230135815907e76e5d7e5f30edf9e1799d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 13 16:00:49 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "cleanup Kalman filter parameters, add/fix comments/units\n\nChange-Id: Iedcae7164af8f7ea0e048ea7c72d0f35d16d739f\n"
    },
    {
      "commit": "010e42230135815907e76e5d7e5f30edf9e1799d",
      "tree": "13bb4554c80bccf41a8fa999b55f8747c35e44fa",
      "parents": [
        "3301542828febc768e1df42892cfac4992c35474"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 08 20:06:50 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "improve orientation sensor with gyro data\n\nwhen we do our own sensor fusion, we also export an\nimproved orientation sensor and hide the HAL sensor.\nThe fused orientation sensor is much more precise, fast\nand smooth.\n\nChange-Id: I0ea843b47ad9d12f6b22cce51f8629852d423126\n"
    },
    {
      "commit": "3301542828febc768e1df42892cfac4992c35474",
      "tree": "759732e19eaa05c365b2c92f0add66a9dd878e30",
      "parents": [
        "984826cc158193e61e3a00359ef4f6699c7d748a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 27 18:18:13 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:55 2012 -0700"
      },
      "message": "use quaternions instead of MRPs\n\nalso use correct time propagation equation\ndisable the fused sensors when gyro is not present since\nthey were unusable in practice.\n\nChange-Id: Iad797425784e67dc6c5690e97c71c583418cc5b5\n"
    },
    {
      "commit": "984826cc158193e61e3a00359ef4f6699c7d748a",
      "tree": "22c7bfb0fb0367137f1e4a4d1a0bb6921600a0e1",
      "parents": [
        "a1b7db95b6ccf5be9d8dfaac1b8f45494813edc0"
      ],
      "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": "Wed Jun 27 17:07:54 2012 -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": "a1b7db95b6ccf5be9d8dfaac1b8f45494813edc0",
      "tree": "5a69fa86c79c4a46f43a12ed47c2209c86805370",
      "parents": [
        "e04a63b3053270d64890f156869e7cf75c436fbb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 27 16:23:58 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "Fix a few issues with sensors reference-counting\n"
    },
    {
      "commit": "e04a63b3053270d64890f156869e7cf75c436fbb",
      "tree": "ccf006f02b150c76b205ea89a507860485793a01",
      "parents": [
        "b1c14906ba87420d3a02e311ea65df1f03f7a3f9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 19 16:21:32 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "Fix a crasher in SensorService\n\nSensorService main thread wasn\u0027t java-enabled. however, in\nsome situations we end-up calling into the BatteryService from\nthat thread which causes a crash.\n\nChange-Id: Iffba90e4c4b743dba84d62f1342001a9db31916d\n"
    },
    {
      "commit": "b1c14906ba87420d3a02e311ea65df1f03f7a3f9",
      "tree": "8de1c696797f27dd2e9d027e8a563db4d5accbbd",
      "parents": [
        "3f2f8916112126fb1a93e4a4b4e2d4e01570aeee"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Mar 14 14:02:13 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "frameworks/base: remove LOCAL_PRELINK_MODULE\n\nChange-Id: I54dd62ebef47e7690afa5a858f3cad941b135481\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "3f2f8916112126fb1a93e4a4b4e2d4e01570aeee",
      "tree": "2ab551ee19f73c3d7f261a96cb8d7a020e84e653",
      "parents": [
        "db5b4bce9e65ec9c2c7762b601297e4abadbc22a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 10 15:23:28 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "fix [4025681] continuous sensors should not try to send an event as soon as they\u0027re activated\n\nMake sure to send an event down only for sensors that report a value only on data\nchange. Other sensors, will naturally send an event when the next event is available.\n\nBug: 4025681\nChange-Id: I6d444deda388b6bc9a33e3371e09d390f1566ec5\n"
    },
    {
      "commit": "db5b4bce9e65ec9c2c7762b601297e4abadbc22a",
      "tree": "13d7fa9b4e86d227b3e4c6d1bbf88ba0554f530e",
      "parents": [
        "2cf098846c83bab82272f107ba110f7c47df1763"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 03 14:52:47 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "fix [3421350] Killing a game that uses the accelerometer renders the device unable to sleep\n\nwhen an app dies, make sure to disable all sensors that process\nis connected to, regardless of wether this was the LAST connection\nto this sensor.\n\nChange-Id: I9c72b1792eee03815304674d5c2f25b5270e4748\n"
    },
    {
      "commit": "2cf098846c83bab82272f107ba110f7c47df1763",
      "tree": "1c580f77c986271d364d73aa0904d887f1d35642",
      "parents": [
        "50b66767f6c5635430483393e17d15969dfe2f05"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 14:26:25 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "fix [3369027] Sensor.TYPE_ROTATION_VECTOR is unstable and returns NaNs when running slowly\n\nThe cut-off frequency of the lowpass filter was too high\nfor the sampling rate used by DELAY_NORMAL.\n\nNow we use the same filters used for the gravity vector\n(cascaded biquad at 1.5 Hz)\n\nChange-Id: I319dc4f449a3abd553d61b196a9ddcf7782f912d\n"
    },
    {
      "commit": "50b66767f6c5635430483393e17d15969dfe2f05",
      "tree": "62204a2e607a9e53abb466befadae3240650de66",
      "parents": [
        "87c9dbb728febe9ce035874796c58f308043879d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 29 17:26:51 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "fix [3237242] sensormanager sensor active count gets out of sync\n\nwhether a physical sensor needed to be active or not was managed by\na simpe reference counter; unfortunatelly nothing prevented it to\nget out of sync if a sensor was disabled more than once.\n\nsensorservice already maintainted a list of all the \"clients\"\nconnected to a physical sensor; we now use that list to determine if\na sensor should be enabled. This can never be \"out-of-sync\" since\nthis is the only data structure linking a sensor to a user of that\nsensor.\n\nalso removed the isEnabled() method, which was never used and\nimplemented wrongly (since it didn\u0027t take into account that a sensor\ncould be disabled for a client but not of another).\n\nChange-Id: I789affb877728ca957e99f7ba749def37c4db1c7\n"
    },
    {
      "commit": "87c9dbb728febe9ce035874796c58f308043879d",
      "tree": "279105827ef53b465ac4f1ca3ea2b32026846c2f",
      "parents": [
        "ddf1ceb647d029febfd007b389cd92c84668a03c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 11 17:58:51 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "Uses 4-th order low-pass for extracting gravity.\n\nMost accelerometers have 8-bits accuracy so we beed to\nreject 48dB in thestop-band, which requires a 4-th order\nfilter at the cut-off frequency we\u0027re using.\n\nChange-Id: Ic00421d38d751641f86b1f3ad7663e6b44a91198\n"
    },
    {
      "commit": "ddf1ceb647d029febfd007b389cd92c84668a03c",
      "tree": "c83ef8664e25e5c3a7f3a58d1d0fa7fb89cb1f8f",
      "parents": [
        "5c6d7ff3e643d0fb4b46d81a3a4e6edaba779edd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 22 15:48:10 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "allow rotation-vector to have 4 components\n\n- upadte documentation for rotation vector\n- update method dealing with rotation vector to deal with 4 components\n- virtual rotation-vector sensor reports all four components\n- improve SensorManager documentation layout\n\nWhent he 4-th component of the rotation-vector is present, we can save\na square-root when computing the quaternion or rotation matrix from it.\n\nChange-Id: Ia84d278dd5f0909fab1c5ba050f8df2679e2c7c8\n"
    },
    {
      "commit": "5c6d7ff3e643d0fb4b46d81a3a4e6edaba779edd",
      "tree": "a56e015dde1660d103d95a8aa457cad1668b5774",
      "parents": [
        "f001c92436b4a66eb7687286325ced7f10c9f917"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 22 01:04:09 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "don\u0027t attempt to normalize the rotation vector\n\nindeed, by construction of the rotation matrix, it is\nguaranteed to have a length of 1.\n\nmoreover, the normalization code was missing a square-root,\nfortunatelly, since the length is 1, this didn\u0027t cause any\ndamage (since sqrt(1) \u003d 1).\n\nChange-Id: I9facd668caaf5bb3bfccb139ab872f2bb2066365\n"
    },
    {
      "commit": "f001c92436b4a66eb7687286325ced7f10c9f917",
      "tree": "f0ea4638557d194f8cf634e026eae78824d811c6",
      "parents": [
        "71d7a5c289c6ef6b5fc86dd4784a075ca6470e38"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 11 17:58:51 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "Add support for virtual sensors.\n\nRework sensorservice to allow \"virtual sensors\", that is\nsensors that report a synthetized value based on real sensors.\n\nthe main change to sensorservice is around managing which real\nsensor need to be activated and which rate to use.\n\nThe logic for all this has been moved into SensorDevice, which\nessentially wraps the sensor HAL but adds two features to it:\n- it keeps track of which sensors need to be activated\n- it keeps track of what rate needs to be used\n\nFor this purpose an \"identity\" is associated with each real sensor\nactivation, so we can track them.\n\nOn start-up we check for gravity, linear-acceleration and\nrotation-vector sensors, if they\u0027re not present in the HAL, we\nsynthetize them in sensor-service.\n\nChange-Id: I841db2c1b37ef127ed571efa21732ecc5adf1800\n"
    },
    {
      "commit": "71d7a5c289c6ef6b5fc86dd4784a075ca6470e38",
      "tree": "0179f726357ef2daa400e207dbc56c0576a81c52",
      "parents": [
        "94e8f6813f3fb2beaa9bcbfb1ad9b4ae2eb46949"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Nov 14 20:55:25 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "Fix a race condition in sensormanager\n\nthe per-connection state assumed the main sensorservice\nlock was held during access. This is however not true while\npre-processing the events just before sending them to clients.\nTherefore, there was a small window during which this state\ncould be modified while being used.\n\nwe now have an internal lock that protects this state.\n\nChange-Id: I594680f20f09d6a4f1f38f093a1d3f650dcef1be\n"
    },
    {
      "commit": "94e8f6813f3fb2beaa9bcbfb1ad9b4ae2eb46949",
      "tree": "3e914f44f392e87d17d75d946c2dae5f1e43185f",
      "parents": [
        "24d72350f321c17b0bfe1ef3fd52d4070a1c02c3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Nov 10 17:50:28 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "record the last event received regardless of having clients or not\n\nWe only recorded the last received event (which is needed when a sensor\nis activated on a connection) when there was some connection active.\nThis should fix an issue where sometimes the light sensor doesn\u0027t\nreturn an event whent activated.\n\nwe also didn\u0027t need to hold the main lock while dispatching events\nto clients.\n\nChange-Id: I6c6386c040051ce205e3c0516c678e0603fa45e1\n"
    },
    {
      "commit": "24d72350f321c17b0bfe1ef3fd52d4070a1c02c3",
      "tree": "a67b823f55392cf18573af61b4f5536c1d6d5946",
      "parents": [
        "1e0b1e8491e5f6dc59faabe70cbfa942853150e0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 05 19:12:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:54 2012 -0700"
      },
      "message": "improve sensorservice dumpsys and increase the max sensor rate to 1 ms (1000Hz)\n\nthe increased maximum rate is needed for proper gyro integration, current gyro\nparts can sample at up to 800Hz\n\nChange-Id: Ide75f6d5bc7a0fdafeb2dafd72db39e7afb9e794\n"
    },
    {
      "commit": "1e0b1e8491e5f6dc59faabe70cbfa942853150e0",
      "tree": "25c72aee36e1963def5b93dd448f59a3a140acb9",
      "parents": [
        "c4a930d1d5a432a1f302763ac55460d6e83fe7e0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 13 23:17:30 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:53 2012 -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": "c4a930d1d5a432a1f302763ac55460d6e83fe7e0",
      "tree": "4906618206df21db114c10fa2fb0da6ce6717bb6",
      "parents": [
        "3560fb24b668675627934356f210d84d19bf4e56"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 22:19:43 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:53 2012 -0700"
      },
      "message": "Report sensor events to BatteryStats service\n\nChange-Id: I9b83aa709887aa658bc474391573f2d45b6c4eb2\n"
    },
    {
      "commit": "3560fb24b668675627934356f210d84d19bf4e56",
      "tree": "b8ac08db1906f9bc81c8f243d8b7298f340d55c3",
      "parents": [
        "cf51001dbf28e9885fcacd4048902f1c75768fe9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 21:24:39 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:53 2012 -0700"
      },
      "message": "SensorService handles last known state properly\n\nSensorService now correctly sends the last known\nstate of a sensor as soon as a new connection is made.\nThis fixes the issue where, for instance, an application\ncould wait a long time before getting the light or proximity\nsensor initial state.\n\nChange-Id: Ic41392f3626e26c4f15746c7e17c7ecd44bbb10b\n"
    },
    {
      "commit": "cf51001dbf28e9885fcacd4048902f1c75768fe9",
      "tree": "e9d2c04df2e0ab5052d1a7c96bc3c22861fbd96e",
      "parents": [
        "7c1c531872a95051cb11ec829e3daf890d9bb58a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 22 16:18:10 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:53 2012 -0700"
      },
      "message": "filter sensor event by connection\n\nwe now don\u0027t send events down to a connection that has not\nregistered for this event.\n\nChange-Id: I3fe507974d3e99293749bfec2ef871e8a0ee9600\n"
    },
    {
      "commit": "7c1c531872a95051cb11ec829e3daf890d9bb58a",
      "tree": "c423c06e8c6a1ff6ebf64a89acf7d50f0c3f887c",
      "parents": [
        "1cd700015318727d6d42236ab6274f1949fb08ba"
      ],
      "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 Jun 27 17:07:53 2012 -0700"
      },
      "message": "propagate sensor event rate properly to the sensor HAL\n\nChange-Id: I1abe4c0fcce423caab79208353fded4d57398227\n"
    },
    {
      "commit": "1cd700015318727d6d42236ab6274f1949fb08ba",
      "tree": "f209f8348eb9e6b7cbd5f6f03c2f8e21a622b548",
      "parents": [
        "50df2959e58fc7408f98d11d77c8428397dca445"
      ],
      "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 Jun 27 17:07:53 2012 -0700"
      },
      "message": "propagate sensor event rate properly\n\nChange-Id: I32e67d30e4295285a6827956cc8161b2025d70bc\n"
    },
    {
      "commit": "50df2959e58fc7408f98d11d77c8428397dca445",
      "tree": "53ca49cb7741d83e7668114810e61596f252f01e",
      "parents": [
        "5d2707214dfb97bd8dfcc6620be36841d3c82420"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 19:09:10 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:53 2012 -0700"
      },
      "message": "SensorService doesn\u0027t crash if correct HAL is not present\n\nChange-Id: I83700b1a1b43390f5830e1056572bfb16e58e8e4\n"
    },
    {
      "commit": "5d2707214dfb97bd8dfcc6620be36841d3c82420",
      "tree": "ea345328d34949f2fd828aebb14b19d569beb3f4",
      "parents": [
        "451beee076cac09f817abae78a990dea108a9482"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 15:20:39 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:53 2012 -0700"
      },
      "message": "Better dumpsys logs\n\nChange-Id: Iae65a8547ee5815cc4c3b74d2c9ef17bed7f565d\n"
    },
    {
      "commit": "451beee076cac09f817abae78a990dea108a9482",
      "tree": "e37c6bdd843ea224127ccdf74d46bec56b3159ac",
      "parents": [
        "fc32881fcc68640d008c7515cdd1bcd866f72cd5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 19 15:03:55 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 27 17:07:53 2012 -0700"
      },
      "message": "Added partial support for repporting sensor activity to IBatteryStats\n\nChange-Id: I2af319d89e49b0f2349ec9d8b0fccac80e9bc047\n"
    },
    {
      "commit": "fc32881fcc68640d008c7515cdd1bcd866f72cd5",
      "tree": "2de6f80569aeeefde79a40c1954055763f572a4b",
      "parents": [
        "ec44ed0758871db896d9c7d5c09f7084ddea1c7a"
      ],
      "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": "Wed Jun 27 17:07:53 2012 -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": "ec44ed0758871db896d9c7d5c09f7084ddea1c7a",
      "tree": "5cb5531020a1bb40bfd96dd570ca3c89b98409db",
      "parents": [
        "3443b333f16cd356d7cc7322810fe6188f58f1d9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Jun 27 15:34:43 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Jun 27 15:34:43 2012 -0700"
      },
      "message": "Utils: Fix a bug in the linear transformation code.\n\nHand merge from ics-aah\n\n\u003e Utils: Fix a bug in the linear transformation code.\n\u003e\n\u003e Fix a bug where an incorrect result would be computed if you used the\n\u003e linear transformation code to do a reverse transformation (from B\u0027s\n\u003e domain into A\u0027s domain) when the scaler fraction was negative.\n\u003e\n\u003e Change-Id: I8e5f109314d235a177ab41f65d3c4cd08cff78be\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: Id90e18f685c61c1a89fd91c32adcf01363b3e8f3\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "3443b333f16cd356d7cc7322810fe6188f58f1d9",
      "tree": "b3aabc8556e80d3c99019c5eb78b29a272b50cd8",
      "parents": [
        "b7c839b1103f72f8eb89fc0e19f7805969fc622f",
        "db1597a98958b78dc0d8eced19ae1406382b70d6"
      ],
      "author": {
        "name": "Johannes Carlsson",
        "email": "johannes.carlsson.x@sonyericsson.com",
        "time": "Mon Jun 25 14:06:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 25 14:06:56 2012 -0700"
      },
      "message": "am db1597a9: Fix shutdown sequence to avoid SIGSEGV when running am command\n\n* commit \u0027db1597a98958b78dc0d8eced19ae1406382b70d6\u0027:\n  Fix shutdown sequence to avoid SIGSEGV when running am command\n"
    },
    {
      "commit": "db1597a98958b78dc0d8eced19ae1406382b70d6",
      "tree": "730cb59e988106c42aad61f56e15e533af05f1d1",
      "parents": [
        "589cdbed556fd38a95895ab684dbcded7f4851e9"
      ],
      "author": {
        "name": "Johannes Carlsson",
        "email": "johannes.carlsson.x@sonyericsson.com",
        "time": "Thu Feb 17 14:06:53 2011 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Jun 25 13:58:47 2012 -0700"
      },
      "message": "Fix shutdown sequence to avoid SIGSEGV when running am command\n\nWhen the app_process is shutting down the main thread will close the\nbinder fd while pool threads are executing an ioctl (in\nIPCThreadState::stopProcess called by AppRuntime::onStarted in\napp_main.c).\n\nThe binder driver will then return all pending calls in ioctl\nwithout any error and with a command. One of the threads gets a\nBR_SPAWN_LOOPER which will create a new thread (the other thread\ngets a BR_NOOP). This new thread then calls\nvm-\u003eAttachCurrentThread. Usually this results in a log entry with\n\"AndroidRuntime: NOTE: attach of thread \u0027Binder Thread #3\u0027 failed\",\nbut sometimes it also causes a SIGSEGV. This depends on the timing\nbetween the new thread an the main thread that calls DestroyJavaVM\n(in AndroidRuntime::start).\n\nIf IPCThreadState.cpp is compiled with \"#define LOG_NDEBUG 0\" the\npool thread will loop and hit the\nALOG_ASSERT(mProcess-\u003emDriverFD \u003e\u003d 0) in\nIPCThreadState::talkWithDriver.\n\nCrashes like this has been seen when running the am command and\nother commands that use the app_process.\n\nThis fix makes sure that any command that is received when the driver\nfd is closed are ignored and IPCThreadState::talkWithDriver instead\nreturns an error which will cause the pool thread to exit and detach\nitself from the vm. A check to avoid calling ioctl to a fd with -1\nwas also added in IPCThreadState::threadDestructor.\n\nAnother solution might be to change the binder driver so that it\nreturns an error when the fd is closed (or atleast not a\nBR_SPAWN_LOOPER command). It might also be possible to call exit(0)\nwhich is done when System.exit(0) is called from java.\n\nChange-Id: I3d1f0ff64896c44be2a5994b3a90f7a06d27f429\n"
    },
    {
      "commit": "b7c839b1103f72f8eb89fc0e19f7805969fc622f",
      "tree": "075c491472c6584c30920dbb26f8c97811e2f882",
      "parents": [
        "a277b7a4d7fa162d2d88f4701d44cedbe6dbfc56",
        "f78575400977f644cf0b12beb2fa5fc278b6ed4c"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 22 19:58:47 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 22 19:58:47 2012 -0700"
      },
      "message": "Merge \"Pass fences from BufferQueue to SurfaceTextureClient\""
    },
    {
      "commit": "a277b7a4d7fa162d2d88f4701d44cedbe6dbfc56",
      "tree": "9624b3d718e065747bedff50cb969151d675a471",
      "parents": [
        "37815d16f6eac2d19783c9234a04d62635d81bbc",
        "ef19414bd8b77a26f5751f3845be79025a8263fe"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 22 19:45:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 22 19:45:10 2012 -0700"
      },
      "message": "Merge \"Transfer HWC release fences to BufferQueue\""
    },
    {
      "commit": "37815d16f6eac2d19783c9234a04d62635d81bbc",
      "tree": "f9ece14d0f5b4751cd8085222d4ecdb4ca9cee75",
      "parents": [
        "52aab9cbc1fda9f23991d149bb93f0b57a633f6a",
        "a74cbc06493ed941a8a54f2f1d0074f03fc9aafb"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 22 10:15:00 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 22 10:15:00 2012 -0700"
      },
      "message": "Merge \"Move remaining bits of lockBuffer to dequeueBuffer\""
    },
    {
      "commit": "52aab9cbc1fda9f23991d149bb93f0b57a633f6a",
      "tree": "49d694305ba98c49997e8d92ece28da939ad13ed",
      "parents": [
        "d8e812ce6fe9ae0388e98b08456e1d18b9498239",
        "589cdbed556fd38a95895ab684dbcded7f4851e9"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 22 08:20:21 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 22 08:20:21 2012 -0700"
      },
      "message": "am 589cdbed: Reconcile with jb-release\n\n* commit \u0027589cdbed556fd38a95895ab684dbcded7f4851e9\u0027:\n"
    },
    {
      "commit": "589cdbed556fd38a95895ab684dbcded7f4851e9",
      "tree": "128518699458ae48012a23c43b7b4092768c508d",
      "parents": [
        "8aaf3e47a51aa0beebecc8c536504d310d07cda9",
        "f455c9a267332960334794428c2abc5f716ee6ea"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 22 08:17:16 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jun 22 08:17:16 2012 -0700"
      },
      "message": "Reconcile with jb-release\n\nChange-Id: Ic18750e72ccec1b5aad558da8959c9c4031b27f8\n"
    },
    {
      "commit": "f78575400977f644cf0b12beb2fa5fc278b6ed4c",
      "tree": "075c491472c6584c30920dbb26f8c97811e2f882",
      "parents": [
        "ef19414bd8b77a26f5751f3845be79025a8263fe"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 14 15:26:33 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 22:21:12 2012 -0700"
      },
      "message": "Pass fences from BufferQueue to SurfaceTextureClient\n\nISurfaceTexture::dequeueBuffer now returns the buffer\u0027s fence for the\nclient to wait on. For BufferQueue, this means passing it through\nBinder so it can be returned to the SurfaceTextureClient. Now\nSurfaceTextureClient is responsible for waiting on the fence in\ndequeueBuffer instead of BufferQueue: one step closer to the goal.\n\nChange-Id: I677ae758bcd23acee2d784b8cec11b32cccc196d\n"
    },
    {
      "commit": "ef19414bd8b77a26f5751f3845be79025a8263fe",
      "tree": "9624b3d718e065747bedff50cb969151d675a471",
      "parents": [
        "a74cbc06493ed941a8a54f2f1d0074f03fc9aafb"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 14 14:45:17 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 22:21:12 2012 -0700"
      },
      "message": "Transfer HWC release fences to BufferQueue\n\nAfter a HWC set, each SurfaceFlinger Layer retrieves the release fence\nHWC returned and gives it to the layer\u0027s SurfaceTexture. The\nSurfaceTexture accumulates the fences into a merged fence until the\nnext updateTexImage, then passes the merged fence to the BufferQueue\nin releaseBuffer.\n\nIn a follow-on change, BufferQueue will return the fence along with\nthe buffer slot in dequeueBuffer. For now, dequeueBuffer waits for the\nfence to signal before returning.\n\nThe releaseFence default value for BufferQueue::releaseBuffer() is\ntemporary to avoid transient build breaks with a multi-project\ncheckin. It\u0027ll disappear in the next change.\n\nChange-Id: Iaa9a0d5775235585d9cbf453d3a64623d08013d9\n"
    },
    {
      "commit": "a74cbc06493ed941a8a54f2f1d0074f03fc9aafb",
      "tree": "f9ece14d0f5b4751cd8085222d4ecdb4ca9cee75",
      "parents": [
        "d8e812ce6fe9ae0388e98b08456e1d18b9498239"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 11:35:23 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 11:56:49 2012 -0700"
      },
      "message": "Move remaining bits of lockBuffer to dequeueBuffer\n\nFramebufferNativeWindow::dequeueBuffer now waits for the next buffer\nto be non-front in addition to being free.\n\nChange-Id: I991f154958cc6b488b1241aba83d1f95a0513b3c\n"
    },
    {
      "commit": "f455c9a267332960334794428c2abc5f716ee6ea",
      "tree": "9e454c7648b681fcd5545899e79fbdbc110a0c79",
      "parents": [
        "a67e418e1fda219f6cc0a7e420bcf5cc4f9fe710",
        "9e39e5353c80fd7dd8935ba5f92f387098850c76"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Thu Jun 21 07:02:53 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Thu Jun 21 07:02:53 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "d8e812ce6fe9ae0388e98b08456e1d18b9498239",
      "tree": "49d694305ba98c49997e8d92ece28da939ad13ed",
      "parents": [
        "f25e183a70bd631f75dce51e85b7d568472a0cdb"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jun 13 16:32:25 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Jun 20 15:48:30 2012 -0700"
      },
      "message": "Update ANativeWindow clients for sync\n\nThis change updates the uses of ANativeWindow to use the new ANW functions that\naccept and return Sync HAL fence file descriptors.\n\nChange-Id: I3ca648b6ac33f7360e86754f924aa072f95242f6\n"
    },
    {
      "commit": "f25e183a70bd631f75dce51e85b7d568472a0cdb",
      "tree": "adeaf3920d889c4caffca6884d83bf6b0d9c0b3f",
      "parents": [
        "aa049f0d19684cf92f2f6510133a33138845dcd3"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jun 13 16:31:43 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Jun 20 15:48:30 2012 -0700"
      },
      "message": "libui: add the Fence class\n\nThis change adds the Fence class to libui for to wrap the libsync\nfunctionality.\n\nChange-Id: I93a31baeee608b93c14da807a32013dabf783f84\n"
    },
    {
      "commit": "aa049f0d19684cf92f2f6510133a33138845dcd3",
      "tree": "5c9f071e99479abc95c9eaf5a71a8fa8cee69b9e",
      "parents": [
        "549646d29fccfb2366cc9ca4d894d39c55351fae",
        "8aaf3e47a51aa0beebecc8c536504d310d07cda9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 20 13:39:58 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 13:39:58 2012 -0700"
      },
      "message": "am 8aaf3e47: am a67e418e: Exit boot animation cleanly.\n\n* commit \u00278aaf3e47a51aa0beebecc8c536504d310d07cda9\u0027:\n  Exit boot animation cleanly.\n"
    },
    {
      "commit": "8aaf3e47a51aa0beebecc8c536504d310d07cda9",
      "tree": "128518699458ae48012a23c43b7b4092768c508d",
      "parents": [
        "fb05c7c34b45e468103b399ef60763e235dd6e06",
        "a67e418e1fda219f6cc0a7e420bcf5cc4f9fe710"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 20 13:37:09 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 20 13:37:09 2012 -0700"
      },
      "message": "am a67e418e: Exit boot animation cleanly.\n\n* commit \u0027a67e418e1fda219f6cc0a7e420bcf5cc4f9fe710\u0027:\n  Exit boot animation cleanly.\n"
    },
    {
      "commit": "a67e418e1fda219f6cc0a7e420bcf5cc4f9fe710",
      "tree": "9e454c7648b681fcd5545899e79fbdbc110a0c79",
      "parents": [
        "7c24b1d4da5e13329d2105cb2f8285715d920787"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 19 17:26:12 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 19 17:32:00 2012 -0700"
      },
      "message": "Exit boot animation cleanly.\n\nThe desc.txt file can now mark parts as \u0027must finish cleanly\u0027 by using\n\u0027c\u0027 as the part line prefix rather than \u0027p\u0027.  If so indicated, if the\nbootanimation is asked to quit it will do so only after waiting to\nfinish that part.\n\nI considered either making init.c service killing smarter or promoting\nbootanim to be a bindable service with a requestExit method.  However,\nthese changes are probably too big/risky given our ship date.  So\nI used a property as a mailbox between SurfaceFlinger and bootanim.\n\nBug: 6679877\nChange-Id: Id7dca22caa50b450fff25ca94f7242d971034f41\n"
    },
    {
      "commit": "549646d29fccfb2366cc9ca4d894d39c55351fae",
      "tree": "850009f37d52dd32a84e7783acc6a093dc52c66f",
      "parents": [
        "543ed967adf1e7abc2de091d91a7c0d98af0582c",
        "5880cc573823148237eac9ab7bc586b8e4eb7160"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Jun 19 08:55:12 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 19 08:55:12 2012 -0700"
      },
      "message": "Merge \"Add support for HWC_DEVICE_API_VERSION_1_0\""
    },
    {
      "commit": "543ed967adf1e7abc2de091d91a7c0d98af0582c",
      "tree": "f1eaceb2d9e19a026ebb2dfbbbfb249a8c65c850",
      "parents": [
        "5df996211d4e263feb862121cfafa7f9c8eeda68",
        "fb05c7c34b45e468103b399ef60763e235dd6e06"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jun 19 06:16:15 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 06:16:15 2012 -0700"
      },
      "message": "am fb05c7c3: Reconcile with jb-release\n\n* commit \u0027fb05c7c34b45e468103b399ef60763e235dd6e06\u0027:\n  SF could get stuck waiting for vsync when turning the screen off\n"
    },
    {
      "commit": "fb05c7c34b45e468103b399ef60763e235dd6e06",
      "tree": "d9c8ce09812a648fe330ebe8c99b5d149b6e1ff1",
      "parents": [
        "bbdad8193ea3a16e9f65f32f4469959577b400e9",
        "9e39e5353c80fd7dd8935ba5f92f387098850c76"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jun 19 06:13:43 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Jun 19 06:13:43 2012 -0700"
      },
      "message": "Reconcile with jb-release\n\nChange-Id: I6a74f5247794a5dddd6fbb75b2edbaba06674ab7\n"
    },
    {
      "commit": "5df996211d4e263feb862121cfafa7f9c8eeda68",
      "tree": "f1eaceb2d9e19a026ebb2dfbbbfb249a8c65c850",
      "parents": [
        "db403e8ff0d7727015e1a5009bab20eb7ec205bc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 18 17:27:56 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 18 17:27:56 2012 -0700"
      },
      "message": "fix typo in makefile LOCAL_CFLAGS was spelled LOCAL_CLFAGS\n\nChange-Id: I58b96d28f608ce16fcad5ed0efb887e582779e03\n"
    },
    {
      "commit": "db403e8ff0d7727015e1a5009bab20eb7ec205bc",
      "tree": "d3f1ecdf0c9aae3a7990b4c525a8bbfbd78d2592",
      "parents": [
        "d50fdb02091e7d258ed9701af5f57d1b2b15cd61"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 18 16:47:56 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 18 16:47:56 2012 -0700"
      },
      "message": "split-up Client.h out of SurfaceFlinger.h\n\nChange-Id: I1993bf23e417163749d886283563a93d50b361b4\n"
    },
    {
      "commit": "d50fdb02091e7d258ed9701af5f57d1b2b15cd61",
      "tree": "05b05461d51a5014cc85b919d62c5666640c7e20",
      "parents": [
        "d3076aca0f6106dbc6c5a1588f560c62567752a4",
        "bbdad8193ea3a16e9f65f32f4469959577b400e9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 18 10:52:34 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 18 10:52:34 2012 -0700"
      },
      "message": "am bbdad819: am 7c24b1d4: Merge \"SF could get stuck waiting for vsync when turning the screen off\" into jb-dev\n\n* commit \u0027bbdad8193ea3a16e9f65f32f4469959577b400e9\u0027:\n  SF could get stuck waiting for vsync when turning the screen off\n"
    },
    {
      "commit": "bbdad8193ea3a16e9f65f32f4469959577b400e9",
      "tree": "d9c8ce09812a648fe330ebe8c99b5d149b6e1ff1",
      "parents": [
        "0512af11f4b790fb032dc7c344dcdac527faf8ad",
        "7c24b1d4da5e13329d2105cb2f8285715d920787"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 18 10:32:32 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 18 10:32:32 2012 -0700"
      },
      "message": "am 7c24b1d4: Merge \"SF could get stuck waiting for vsync when turning the screen off\" into jb-dev\n\n* commit \u00277c24b1d4da5e13329d2105cb2f8285715d920787\u0027:\n  SF could get stuck waiting for vsync when turning the screen off\n"
    },
    {
      "commit": "9e39e5353c80fd7dd8935ba5f92f387098850c76",
      "tree": "8158585799401dde7e5dca0f523589c5b981ce9a",
      "parents": [
        "7c24b1d4da5e13329d2105cb2f8285715d920787",
        "1ffdccc46ea67d3e4c39e3fa44f21b36dd46f3c5"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Sat Jun 16 07:03:06 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Sat Jun 16 07:03:06 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "1ffdccc46ea67d3e4c39e3fa44f21b36dd46f3c5",
      "tree": "f411ce786be842cfad1532b4785444dcdaf22ef8",
      "parents": [
        "23a39ef1445548c2e9b22d86182b55d4a7669383"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 14 23:39:35 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Fri Jun 15 16:17:06 2012 -0700"
      },
      "message": "SF could get stuck waiting for vsync when turning the screen off\n\nWhen turning the screen off we could have 2 waiters on the\nvsync condition: The main vsync waiter as well as one in\nonScreenReleased(). We were only signaling the condition though,\nso it it would be possible to wake onScreenReleased() without waking\nthe main vsync thread which would then be stuck in .wait().\n\nWe fix this by just using broadcast() when receiving a vsync event.\n\nWe also add a broadcast() to signal when the state of\nmUseSoftwareVSync changes.  This is important particularly for\nthe transition from hardware to software vsync because the main\nvsync waiter might have observed mUseSoftwareVSync \u003d\u003d false\nand decided to block indefinitely pending a hardware vsync\nsignal that will never arrive.\n\nRemoved a potentially deadlocking wait for a signal in\nonScreenReleased().  The function was trying to wait for the last\nvsync event from the hardware to be delivered to clients but there\nwas no guarantee that another thread would signal it to wake up\nagain afterwards.  (As far as I can tell, the only other other\nthread that might wake it up at this point would be a client\napplication issuing a vsync request.)  We don\u0027t really need to wait\nhere anyhow.  It\u0027s enough to set the mUseSoftwareVSync flag,\nwake up the thread loop and go.  If there was a pending vsync\ntimestamp from the hardware, then the thread loop will grab\nit and use it then start software vsync on the next iteration.\n\nBug: 6672102\nChange-Id: I7c6abc23bb021d1dfc94f101bd3ce18e3a81a73e\n"
    },
    {
      "commit": "d3076aca0f6106dbc6c5a1588f560c62567752a4",
      "tree": "f8b5ef4959d8545e75500b1ec0d40851a55b5a85",
      "parents": [
        "b6d00dcf3e0c65b1642ad0011c1b4605b80a56e1",
        "3e87601170141229d661df93e2f59e1ced73474b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 15 15:34:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 15 15:34:55 2012 -0700"
      },
      "message": "Merge \"Implement SurfaceFlinger\u0027s ANW on top of BufferQueue\""
    },
    {
      "commit": "7c24b1d4da5e13329d2105cb2f8285715d920787",
      "tree": "8158585799401dde7e5dca0f523589c5b981ce9a",
      "parents": [
        "16272efb7af0692266fecdc53b2c6d995bf397b7",
        "7d886474734623fd2565ff40215ffe497e10b4cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 15 15:30:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 15 15:30:35 2012 -0700"
      },
      "message": "Merge \"SF could get stuck waiting for vsync when turning the screen off\" into jb-dev"
    },
    {
      "commit": "7d886474734623fd2565ff40215ffe497e10b4cc",
      "tree": "f411ce786be842cfad1532b4785444dcdaf22ef8",
      "parents": [
        "2d15fcab3e3588cfddb6c7b180faecd3eccce2e5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 14 23:39:35 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 15 14:59:31 2012 -0700"
      },
      "message": "SF could get stuck waiting for vsync when turning the screen off\n\nWhen turning the screen off we could have 2 waiters on the\nvsync condition: The main vsync waiter as well as one in\nonScreenReleased(). We were only signaling the condition though,\nso it it would be possible to wake onScreenReleased() without waking\nthe main vsync thread which would then be stuck in .wait().\n\nWe fix this by just using broadcast() when receiving a vsync event.\n\nWe also add a broadcast() to signal when the state of\nmUseSoftwareVSync changes.  This is important particularly for\nthe transition from hardware to software vsync because the main\nvsync waiter might have observed mUseSoftwareVSync \u003d\u003d false\nand decided to block indefinitely pending a hardware vsync\nsignal that will never arrive.\n\nRemoved a potentially deadlocking wait for a signal in\nonScreenReleased().  The function was trying to wait for the last\nvsync event from the hardware to be delivered to clients but there\nwas no guarantee that another thread would signal it to wake up\nagain afterwards.  (As far as I can tell, the only other other\nthread that might wake it up at this point would be a client\napplication issuing a vsync request.)  We don\u0027t really need to wait\nhere anyhow.  It\u0027s enough to set the mUseSoftwareVSync flag,\nwake up the thread loop and go.  If there was a pending vsync\ntimestamp from the hardware, then the thread loop will grab\nit and use it then start software vsync on the next iteration.\n\nBug: 6672102\nChange-Id: I7c6abc23bb021d1dfc94f101bd3ce18e3a81a73e\n"
    },
    {
      "commit": "b6d00dcf3e0c65b1642ad0011c1b4605b80a56e1",
      "tree": "22ba520f4eec463242db90a11791712dea461368",
      "parents": [
        "3e8b853d67c737abdb363f9c978e7d83eac4d888",
        "0512af11f4b790fb032dc7c344dcdac527faf8ad"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 15 12:00:28 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 15 12:00:28 2012 -0700"
      },
      "message": "am 0512af11: am 16272efb: Add ASSIST keycode.\n\n* commit \u00270512af11f4b790fb032dc7c344dcdac527faf8ad\u0027:\n  Add ASSIST keycode.\n"
    },
    {
      "commit": "0512af11f4b790fb032dc7c344dcdac527faf8ad",
      "tree": "5343311d0e5871a2ce8099071aca0fa1a0661302",
      "parents": [
        "1d2eb663ef5cf69aa852045c8a1c1807dfa7039e",
        "16272efb7af0692266fecdc53b2c6d995bf397b7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 15 11:57:37 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 15 11:57:37 2012 -0700"
      },
      "message": "am 16272efb: Add ASSIST keycode.\n\n* commit \u002716272efb7af0692266fecdc53b2c6d995bf397b7\u0027:\n  Add ASSIST keycode.\n"
    },
    {
      "commit": "16272efb7af0692266fecdc53b2c6d995bf397b7",
      "tree": "3aa1d600d15795eedff127217b55804fe21980df",
      "parents": [
        "2d15fcab3e3588cfddb6c7b180faecd3eccce2e5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 15 11:46:11 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 15 11:46:11 2012 -0700"
      },
      "message": "Add ASSIST keycode.\n\nBug: 6594275\nChange-Id: I032b055207d16bfff93ee8a350c0dc52b9102926\n"
    },
    {
      "commit": "5880cc573823148237eac9ab7bc586b8e4eb7160",
      "tree": "e5e02f74fd18e3c9450de630d9d9b09867db5fc3",
      "parents": [
        "3e8b853d67c737abdb363f9c978e7d83eac4d888"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Jun 05 23:40:32 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 14 12:35:32 2012 -0700"
      },
      "message": "Add support for HWC_DEVICE_API_VERSION_1_0\n\nThe acquire and release fences aren\u0027t yet used; this is just support\nfor the new version and temporary backwards compatibility for older\nversions.\n\nChange-Id: Ia5ccc05a97c86f649042b9a35e11042fa0187e84\n"
    },
    {
      "commit": "3e8b853d67c737abdb363f9c978e7d83eac4d888",
      "tree": "7796273778c9b2e8cf8739a58d0d3925e0deeaea",
      "parents": [
        "fe6102f07cc3fa8cfa2283e2c51e6d19f056ee7c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun May 13 20:42:01 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 14 11:56:55 2012 -0700"
      },
      "message": "refactor HWComposer to break dependency with the HAL headers\n\nHWComposer must abstract the HWC HAL entirely, so that the\nHAL can continue to evolve (and break binary compatibility)\nwithout breaking SurfaceFlinger. The HWC data structure had\nleaked outside of HWComposer, this is now fixed.\n\nWe now have an abstract interface that provide all the\nneeded functionality, HWCompose provides concrete\nimplementations of it based on the the HWC version.\n\nChange-Id: I40c4676dc986b682ede5520a1c60efe64037b0bb\n"
    },
    {
      "commit": "3e87601170141229d661df93e2f59e1ced73474b",
      "tree": "e079df58541938d0854cabb2a1394c221a2dc98f",
      "parents": [
        "04d7eaf138678ef591076ff02b896f93394bcfaf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 07 17:52:54 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 13 18:07:47 2012 -0700"
      },
      "message": "Implement SurfaceFlinger\u0027s ANW on top of BufferQueue\n\nSF now has its own implementation of ANW for the\nframebuffer and it uses BufferQueue. FramebufferNativeWindow\nis now only used by stand-alone apps.\n\nChange-Id: Iddeb24087df62bd92b0f78e391dda9b97ddc859c\n"
    },
    {
      "commit": "fe6102f07cc3fa8cfa2283e2c51e6d19f056ee7c",
      "tree": "f2196e8544afc73031fefc7e45777dc4b0b79f9d",
      "parents": [
        "4b3e4ae04577d4fcce0aac40bfba4043c34047f6",
        "fe98127eaaf82686ba750001e2b771abece44e97"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 13 16:27:54 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 13 16:27:54 2012 -0700"
      },
      "message": "Merge \"don\u0027t error out when eglTerminate()ing an already terminated display\""
    },
    {
      "commit": "fe98127eaaf82686ba750001e2b771abece44e97",
      "tree": "4ed9a2dee3e03874322b47af02ad9110c2db6d9b",
      "parents": [
        "04d7eaf138678ef591076ff02b896f93394bcfaf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 13 15:21:21 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 13 15:21:21 2012 -0700"
      },
      "message": "don\u0027t error out when eglTerminate()ing an already terminated display\n\nso says the EGL specification, section 3.2\n\nChange-Id: Ice60530f8f6e47b4e14e06d2ab8eba799a7688a6\n"
    },
    {
      "commit": "4b3e4ae04577d4fcce0aac40bfba4043c34047f6",
      "tree": "d774c8ff750753587dd1ec0c9641f821fa44d050",
      "parents": [
        "25f54e22cc031b044e18101aa27193a0016fbda3",
        "1d2eb663ef5cf69aa852045c8a1c1807dfa7039e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 12 13:15:10 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 13:15:10 2012 -0700"
      },
      "message": "am 1d2eb663: am 2d15fcab: Merge \"reduce PB size from 2MB to 512KB\" into jb-dev\n\n* commit \u00271d2eb663ef5cf69aa852045c8a1c1807dfa7039e\u0027:\n  reduce PB size from 2MB to 512KB\n"
    },
    {
      "commit": "1d2eb663ef5cf69aa852045c8a1c1807dfa7039e",
      "tree": "f1cd03b51df06622c05e1e9dbad670ff7cb177e9",
      "parents": [
        "7c94f9d8e07d17803c2b45ac6e115da3fe8827a4",
        "2d15fcab3e3588cfddb6c7b180faecd3eccce2e5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 12 12:42:38 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 12 12:42:38 2012 -0700"
      },
      "message": "am 2d15fcab: Merge \"reduce PB size from 2MB to 512KB\" into jb-dev\n\n* commit \u00272d15fcab3e3588cfddb6c7b180faecd3eccce2e5\u0027:\n  reduce PB size from 2MB to 512KB\n"
    },
    {
      "commit": "23a39ef1445548c2e9b22d86182b55d4a7669383",
      "tree": "c0b92c220ceca8a1089a7f5c9b2fa72121adc70f",
      "parents": [
        "2d15fcab3e3588cfddb6c7b180faecd3eccce2e5",
        "7f92bf2bf9bdac8745342df7a928d3e939b0446a"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Tue Jun 12 11:23:05 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Tue Jun 12 11:23:05 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "2d15fcab3e3588cfddb6c7b180faecd3eccce2e5",
      "tree": "c0b92c220ceca8a1089a7f5c9b2fa72121adc70f",
      "parents": [
        "9be7caf380b0e2fb29b8813fb8762c2ae417ce95",
        "d75f84d6410da934d1b1760fdc0d05d4ba1e8f35"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 11 14:43:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 11 14:43:37 2012 -0700"
      },
      "message": "Merge \"reduce PB size from 2MB to 512KB\" into jb-dev"
    },
    {
      "commit": "25f54e22cc031b044e18101aa27193a0016fbda3",
      "tree": "41275ed36a4d9db9b3ea257d123968fb2eb65d7d",
      "parents": [
        "c2a98439e04b60d64e9ade614f94e71cf516c7e5",
        "3ef9e9671c224af82d2efec1a1e9a275fb9acf44"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Mon Jun 11 12:26:03 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 11 12:26:03 2012 -0700"
      },
      "message": "Merge \"gltrace: Fixup vertex attrib pointers only for GLES2\""
    },
    {
      "commit": "3ef9e9671c224af82d2efec1a1e9a275fb9acf44",
      "tree": "83157f70bf94210d8c62b2ac94b2e7f78a5b8f02",
      "parents": [
        "af1cb83516589034aedcbf211f1b66bd80250136"
      ],
      "author": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Mon Jun 11 11:14:23 2012 -0700"
      },
      "committer": {
        "name": "Siva Velusamy",
        "email": "vsiva@google.com",
        "time": "Mon Jun 11 11:16:56 2012 -0700"
      },
      "message": "gltrace: Fixup vertex attrib pointers only for GLES2\n\nChange-Id: Ibf280c2a4372ce6e598e164eef0d72b7c0a6d1c2\n"
    },
    {
      "commit": "c2a98439e04b60d64e9ade614f94e71cf516c7e5",
      "tree": "1a8637e26a219c08bedd939a8fb306a709eee055",
      "parents": [
        "04d7eaf138678ef591076ff02b896f93394bcfaf",
        "7c94f9d8e07d17803c2b45ac6e115da3fe8827a4"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 11 09:25:48 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 11 09:25:48 2012 -0700"
      },
      "message": "am 7c94f9d8: Reconcile with jb-release\n\n* commit \u00277c94f9d8e07d17803c2b45ac6e115da3fe8827a4\u0027:\n"
    },
    {
      "commit": "7c94f9d8e07d17803c2b45ac6e115da3fe8827a4",
      "tree": "a3d39f6bb7b50463480cf63dbe81c26361d21df7",
      "parents": [
        "4f0dfaa7c338870eb58d96fe40234505734db728",
        "7f92bf2bf9bdac8745342df7a928d3e939b0446a"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 11 09:22:35 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 11 09:22:35 2012 -0700"
      },
      "message": "Reconcile with jb-release\n\nChange-Id: Iac1c88f2833e67e52af2bc22a17fa93d30cb44cc\n"
    },
    {
      "commit": "7f92bf2bf9bdac8745342df7a928d3e939b0446a",
      "tree": "c12db4ba7221c9103e1439d38f5cad939e67a279",
      "parents": [
        "9be7caf380b0e2fb29b8813fb8762c2ae417ce95",
        "a38f794b0d31f0bdcc8b53ee2f04bbed5011270b"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Mon Jun 11 07:02:56 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Mon Jun 11 07:02:56 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "04d7eaf138678ef591076ff02b896f93394bcfaf",
      "tree": "1a8637e26a219c08bedd939a8fb306a709eee055",
      "parents": [
        "a39d01a79a2a435b45a49f5d9a02b55fec66a586",
        "4f0dfaa7c338870eb58d96fe40234505734db728"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 08 15:33:30 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 15:33:30 2012 -0700"
      },
      "message": "am 4f0dfaa7: am 9be7caf3: Merge \"Include stack traces for certain native processes in bugreport.\" into jb-dev\n\n* commit \u00274f0dfaa7c338870eb58d96fe40234505734db728\u0027:\n  Include stack traces for certain native processes in bugreport.\n"
    },
    {
      "commit": "4f0dfaa7c338870eb58d96fe40234505734db728",
      "tree": "a3d39f6bb7b50463480cf63dbe81c26361d21df7",
      "parents": [
        "66506eaacb8c419a4e5ce5f8de00a0b8fbe0b156",
        "9be7caf380b0e2fb29b8813fb8762c2ae417ce95"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 08 15:30:38 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 15:30:38 2012 -0700"
      },
      "message": "am 9be7caf3: Merge \"Include stack traces for certain native processes in bugreport.\" into jb-dev\n\n* commit \u00279be7caf380b0e2fb29b8813fb8762c2ae417ce95\u0027:\n  Include stack traces for certain native processes in bugreport.\n"
    },
    {
      "commit": "9be7caf380b0e2fb29b8813fb8762c2ae417ce95",
      "tree": "c12db4ba7221c9103e1439d38f5cad939e67a279",
      "parents": [
        "49b97e20f17af0ba98cdece2b7b93ab0a2199af4",
        "bf7f49238d0af497d4300f7e611cf831854d6434"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 08 14:38:30 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 08 14:38:30 2012 -0700"
      },
      "message": "Merge \"Include stack traces for certain native processes in bugreport.\" into jb-dev"
    },
    {
      "commit": "a39d01a79a2a435b45a49f5d9a02b55fec66a586",
      "tree": "074fc16177083bf156f3bad2e20abeb66c0b1db5",
      "parents": [
        "52cf768fc24f7b6b8f4bacf8b630acc1fbee7e2f",
        "66506eaacb8c419a4e5ce5f8de00a0b8fbe0b156"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 08 14:23:45 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 14:23:45 2012 -0700"
      },
      "message": "am 66506eaa: am 49b97e20: I am having second thoughts about 512m for the large heap size.\n\n* commit \u002766506eaacb8c419a4e5ce5f8de00a0b8fbe0b156\u0027:\n  I am having second thoughts about 512m for the large heap size.\n"
    },
    {
      "commit": "66506eaacb8c419a4e5ce5f8de00a0b8fbe0b156",
      "tree": "219f6c57788cf4b496b9a770374fa3920a7a1fc0",
      "parents": [
        "1ba24574b2debd3ca012adbbd77f12bed4f2d266",
        "49b97e20f17af0ba98cdece2b7b93ab0a2199af4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 08 14:22:06 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 14:22:06 2012 -0700"
      },
      "message": "am 49b97e20: I am having second thoughts about 512m for the large heap size.\n\n* commit \u002749b97e20f17af0ba98cdece2b7b93ab0a2199af4\u0027:\n  I am having second thoughts about 512m for the large heap size.\n"
    },
    {
      "commit": "52cf768fc24f7b6b8f4bacf8b630acc1fbee7e2f",
      "tree": "1f91fc18b4aa4807a6a9bda091e5294e9f9ff40c",
      "parents": [
        "bd3ad5b23fa026be35595ebf52633e2d51cfc1ca",
        "8e533069e5721e55cb9768e140e16546c3a4a8b6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jun 08 14:14:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 08 14:14:18 2012 -0700"
      },
      "message": "Merge \"surfaceflinger: replace early suspend with binder call from PowerManager\""
    },
    {
      "commit": "49b97e20f17af0ba98cdece2b7b93ab0a2199af4",
      "tree": "45ff39b97a2ee36e67fdb24c60b3917a8f2862ba",
      "parents": [
        "0cd545f14261d829513e0d6e8fa5e4e4f3372b3d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 08 13:02:09 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 08 13:02:09 2012 -0700"
      },
      "message": "I am having second thoughts about 512m for the large heap size.\n\nLet\u0027s go with 384 megs, half way between the large heap size on\nXoom and 512.\n\nChange-Id: I4a7f2e5a8b2920b49fa53777725e24811145f5f2\n"
    },
    {
      "commit": "bf7f49238d0af497d4300f7e611cf831854d6434",
      "tree": "b4b264b9b3d78c1b8f1b6c6114d582471c7b989c",
      "parents": [
        "be502a02c8e0ea232e7339ed60b1754c929ecec1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 07 16:40:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jun 08 11:45:00 2012 -0700"
      },
      "message": "Include stack traces for certain native processes in bugreport.\n\nBug: 6615693\nChange-Id: I64c3b3ce0bba62d9c332a795f7d979fb753dc27b\n"
    },
    {
      "commit": "bd3ad5b23fa026be35595ebf52633e2d51cfc1ca",
      "tree": "56535b6f664ef9d26d67e9e7143ec789288d5208",
      "parents": [
        "af1cb83516589034aedcbf211f1b66bd80250136",
        "1ba24574b2debd3ca012adbbd77f12bed4f2d266"
      ],
      "author": {
        "name": "Magnus Strandberg",
        "email": "magnus.strandberg@sonyericsson.com",
        "time": "Fri Jun 08 08:32:28 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 08:32:28 2012 -0700"
      },
      "message": "am 1ba24574: Aligning native Parcel implementation to Java.\n\n* commit \u00271ba24574b2debd3ca012adbbd77f12bed4f2d266\u0027:\n  Aligning native Parcel implementation to Java.\n"
    },
    {
      "commit": "1ba24574b2debd3ca012adbbd77f12bed4f2d266",
      "tree": "9141495058ae27f0411797c842787f270f02946a",
      "parents": [
        "b2c1cfbe95bed419487455d1b82956f9c5b2a40c"
      ],
      "author": {
        "name": "Magnus Strandberg",
        "email": "magnus.strandberg@sonyericsson.com",
        "time": "Tue May 03 15:44:00 2011 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jun 08 08:29:01 2012 -0700"
      },
      "message": "Aligning native Parcel implementation to Java.\n\nThe Java implementation of writing the RPC response header\ncalculates the length of the header including the 4 bytes\nspecifying the header length but the native implementation\nexcludes the 4 bytes specifying the length from the header\nlength.\nThe native implementation has been aligned to the Java impl.\n\nChange-Id: I325bf272a63152d8fded4cf4e51a906b5a9bfe19\n"
    },
    {
      "commit": "a38f794b0d31f0bdcc8b53ee2f04bbed5011270b",
      "tree": "f215784f7b8e7031dfba053cc790da94751434de",
      "parents": [
        "0cd545f14261d829513e0d6e8fa5e4e4f3372b3d",
        "ce786fca55283ec301cec784839c3756ab47165c"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Fri Jun 08 08:20:32 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Fri Jun 08 08:20:32 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "af1cb83516589034aedcbf211f1b66bd80250136",
      "tree": "ab0fe6b96518bad81487e1acd3e0dc9f1f6ef5e9",
      "parents": [
        "05ef75e4a0111b0992994fd5876e28e12f3aa3e6",
        "b2c1cfbe95bed419487455d1b82956f9c5b2a40c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 07 17:21:53 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 07 17:21:53 2012 -0700"
      },
      "message": "am b2c1cfbe: am 0cd545f1: sometimes we would incorrectly scale the content of a surface\n\n* commit \u0027b2c1cfbe95bed419487455d1b82956f9c5b2a40c\u0027:\n  sometimes we would incorrectly scale the content of a surface\n"
    },
    {
      "commit": "b2c1cfbe95bed419487455d1b82956f9c5b2a40c",
      "tree": "f215784f7b8e7031dfba053cc790da94751434de",
      "parents": [
        "d77493907eca9cb5ddbe4c72fd758211901f73e1",
        "0cd545f14261d829513e0d6e8fa5e4e4f3372b3d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 07 17:16:52 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 07 17:16:52 2012 -0700"
      },
      "message": "am 0cd545f1: sometimes we would incorrectly scale the content of a surface\n\n* commit \u00270cd545f14261d829513e0d6e8fa5e4e4f3372b3d\u0027:\n  sometimes we would incorrectly scale the content of a surface\n"
    },
    {
      "commit": "0cd545f14261d829513e0d6e8fa5e4e4f3372b3d",
      "tree": "f215784f7b8e7031dfba053cc790da94751434de",
      "parents": [
        "ba43e0a1faee9629ca2d0beb53dd6c44bb9bfd05"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 07 14:18:55 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 07 17:12:20 2012 -0700"
      },
      "message": "sometimes we would incorrectly scale the content of a surface\n\nthis would happen when a resize was pending (ie: we have received\nand processed a resize transaction but have not received a buffer\nwith the right size) and a new transaction came in that didn\u0027t\ninvolve a resize, for instance a translate-only transaction.\n\nin this case, we would incorrectly update the drawing state\nwith the pending size, eventhough we still don\u0027t have a buffer\nfor it.\n\nthe solution is quite simple, we never allow the size to propagate\nfrom current to drawing state during the regular transaction processing\n(unless we are in fixed-size mode -- meaning we don\u0027t need to have\na matching size buffer), this propagation happens later once we\nreceive the buffer.\n\nBug: 6624163\nChange-Id: I11a97e4b88a7f3a0571ddcfe99c86cb04ce01a4d\n"
    },
    {
      "commit": "8e533069e5721e55cb9768e140e16546c3a4a8b6",
      "tree": "711922166d28d1eb8b4a38e1e0798b59f64ca405",
      "parents": [
        "1e339878c128ef47271278779c2685a8dfa49cd1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 07 13:17:52 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 07 16:28:30 2012 -0700"
      },
      "message": "surfaceflinger: replace early suspend with binder call from PowerManager\n\nSurfaceFlinger will no longer directly synchronize with early suspend.\nInstead, PowerManagerService will synchronize with SurfaceFlinger to\nensure that a black frame has been drawn on the display, and then\ntrigger all early suspend handlers.\n\nChange-Id: I07acdd628440d23fdb69db94319ec5d65d3f4919\n"
    },
    {
      "commit": "05ef75e4a0111b0992994fd5876e28e12f3aa3e6",
      "tree": "66a6b9e50cb2ee46d8e9a4d566b2817becdc325b",
      "parents": [
        "1e339878c128ef47271278779c2685a8dfa49cd1",
        "d77493907eca9cb5ddbe4c72fd758211901f73e1"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 07 07:55:24 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 07 07:55:24 2012 -0700"
      },
      "message": "am d7749390: Reconcile with jb-release\n\n* commit \u0027d77493907eca9cb5ddbe4c72fd758211901f73e1\u0027:\n"
    },
    {
      "commit": "d77493907eca9cb5ddbe4c72fd758211901f73e1",
      "tree": "59530b1be204b82df45e2bf1b91a5e99a7b40d35",
      "parents": [
        "ec07c8e9576f6f455e281dc0b619100b29133c0e",
        "ce786fca55283ec301cec784839c3756ab47165c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 07 07:51:00 2012 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 07 07:51:00 2012 -0700"
      },
      "message": "Reconcile with jb-release\n\nChange-Id: I73f561b3fb9c76aa30ff7de8eab378a1ba5963cc\n"
    },
    {
      "commit": "ce786fca55283ec301cec784839c3756ab47165c",
      "tree": "59530b1be204b82df45e2bf1b91a5e99a7b40d35",
      "parents": [
        "ba43e0a1faee9629ca2d0beb53dd6c44bb9bfd05",
        "76b77c931246ddb000677473bafea1f8bb308fc6"
      ],
      "author": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Thu Jun 07 07:03:01 2012 -0700"
      },
      "committer": {
        "name": "The Android Automerger",
        "email": "android-build@android.com",
        "time": "Thu Jun 07 07:03:01 2012 -0700"
      },
      "message": "merge in jb-release history after reset to jb-dev\n"
    },
    {
      "commit": "1e339878c128ef47271278779c2685a8dfa49cd1",
      "tree": "66a6b9e50cb2ee46d8e9a4d566b2817becdc325b",
      "parents": [
        "a9a05d73f5a3633835b7e5f83a181d989204f090"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Apr 25 13:38:45 2012 -0700"
      },
      "committer": {
        "name": "Dmitry Shmidt",
        "email": "dimitrysh@google.com",
        "time": "Wed Jun 06 16:43:16 2012 -0700"
      },
      "message": "dumpstate: handle old style \"adb bugreport\"\n\nWhen \"adb bugreport\" was run on previous adb releases, it\ncalled \"adb shell dumpstate\". In later versions of Android,\nthis was changed to \"adb shell bugreport\", which starts\nthe dumpstate service.\n\nModify the dumpstate command so that it calls bugreport\nwhen it\u0027s not running as root. This allows both\n\"adb shell dumpstate\" and \"adb shell bugreport\" to have\nthe exact same output.\n\nBug: 6391938\nChange-Id: Ia32bb9ebc579db3bee7caa0fe66dc3f124d60a12\n"
    }
  ],
  "next": "a9a05d73f5a3633835b7e5f83a181d989204f090"
}
