)]}'
{
  "log": [
    {
      "commit": "06ea4d65e81123832d2ae547538d612b0e6b90fa",
      "tree": "a120b2dee9218ebc5814dc3bbe58d46b29a6b45c",
      "parents": [
        "14b0a6bc0ec8814291751b2b8e80da606cfa12b3"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Dec 13 11:58:55 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Dec 13 12:02:19 2010 -0800"
      },
      "message": "Introduce NDK API for 64-bit assets\n\nAssets were switched to using 64-bit all through the system, so switch\nthe NDK to using this new API as well.\n\nChange-Id: I2817b11369db3a4dd504b839ef1a3a9780b83533\n"
    },
    {
      "commit": "1542af35976ce121b8a69812ab8dec7b71a0b283",
      "tree": "ae7c8471d4c48b835f67a979f45dd5025b6c5c3c",
      "parents": [
        "f4ade58b3eb24c20337ba9608a4b2008fb4a017d",
        "ddb76c4644756b31be948d70aaa8ee541dd94999"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Dec 08 14:46:22 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 08 14:46:22 2010 -0800"
      },
      "message": "Merge \"Change assets to use 64-bit API\""
    },
    {
      "commit": "ddb76c4644756b31be948d70aaa8ee541dd94999",
      "tree": "782d260d2da982941148be7c1a0a0780749cdfdc",
      "parents": [
        "8028a951c3aa74990907efb9376d1093d84084af"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 24 12:56:06 2010 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Dec 08 11:21:30 2010 -0800"
      },
      "message": "Change assets to use 64-bit API\n\nThe asset system and supporting libraries were using off_t instead of\noff64_t to access files larger than 2GB (32-bit signed). This change\nreplaces all off_t with off64_t and lseek64.\n\nThere is a new utils/Compat.h added for Mac OS compatibility.\n\nAlso fixed some size-related compiler warnings.\n\nBug: 3205336\nChange-Id: I9097b3cb7a602e811fe52f245939d8975da55e9e\n"
    },
    {
      "commit": "49ed71db425c5054e3ad9526496a7e116c89556b",
      "tree": "3d3b28bdaf76d5cc531fd3b52fcbb0efb32a05ba",
      "parents": [
        "f30c8287525ac049d4d7589a330be5713256046b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Dec 06 17:13:33 2010 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Dec 07 17:35:26 2010 -0800"
      },
      "message": "Add support for fallback keycodes.\n\nThis change enables the framework to synthesize key events to implement\ndefault behavior when an application does not handle a key.\nFor example, this change enables numeric keypad keys to perform\ntheir associated special function when numlock is off.\n\nThe application is informed that it is processing a fallback keypress\nso it can choose to ignore it.\n\nAdded a new keycode for switching applications.\n\nAdded ALT key deadkeys.\n\nNew default key mappings:\n- ESC -\u003e BACK\n- Meta+ESC -\u003e HOME\n- Alt+ESC -\u003e MENU\n- Meta+Space -\u003e SEARCH\n- Meta+Tab -\u003e APP_SWITCH\n\nFixed some comments.\nFixed some tests.\n\nChange-Id: Id7f3b6645f3a350275e624547822f72652f3defe\n"
    },
    {
      "commit": "3adf490a5aaa2e87676c8985b566fcb0dfeb74b9",
      "tree": "8d851498f455a4aaee22743eb93c0d4ec4eb724a",
      "parents": [
        "e7bdbf2aa7eb4cacfd3985cba6a12c3b1caf11a0"
      ],
      "author": {
        "name": "Jason Bayer",
        "email": "bayer@google.com",
        "time": "Tue Nov 09 14:54:55 2010 -0800"
      },
      "committer": {
        "name": "Jason Bayer",
        "email": "bayer@google.com",
        "time": "Thu Nov 11 18:36:11 2010 -0800"
      },
      "message": "Add new keycodes initially used for GoogleTV devices.\n\nChange-Id: I1b901037d6d401931dd3ec6f7d5e1e6ad165d1c9\n"
    },
    {
      "commit": "3915bb845b032dc184dba5e60970b803390ca3ed",
      "tree": "198a47c1d4ada990ef04d563b5e0caaec35abc18",
      "parents": [
        "60029771d26ca3c51288c3d92cab1d3537147acd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 05 15:02:16 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 08 12:49:43 2010 -0800"
      },
      "message": "Tell system server whether the app handled input events.\n\nRefactored ViewRoot, NativeActivity and related classes to tell the\ndispatcher whether an input event was actually handled by the application.\n\nThis will be used to move more of the global default key processing\ninto the system server instead of the application.\n\nChange-Id: If06b98b6f45c543e5ac5b1eae2b3baf9371fba28\n"
    },
    {
      "commit": "51e7fe7545e3509ebb5c31c10440acd31cec89a2",
      "tree": "c9826e9555c6ec96ba3061365bcb7ed2a555c43e",
      "parents": [
        "06a42367ce6b7116c451f9e3155196ef8806f861"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 29 22:19:53 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 05 13:27:35 2010 -0700"
      },
      "message": "Rename the locked meta key constants for clarity.\n\nAlso added some tests for LED setting.\n\nChange-Id: I3fd86322afd07ae8de52d1ccbc2fae2c6d586641\n"
    },
    {
      "commit": "b0418da0e7594a8c2164a46985c5f1993632e010",
      "tree": "f73f81b31796d4f75ef6530d1fb883fccc74031f",
      "parents": [
        "c68134b74016b82e0c49c47b89d93b2d0921cbe5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 01 15:24:01 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 02 17:31:39 2010 -0700"
      },
      "message": "Add plumbing for volume mute key.\n\nFull support for the volume mute key will be implemented in a\nlater change.\n\nBug: 2912307\nChange-Id: I98c27d6360f159c8b7447e04b45f442eff87b38a\n"
    },
    {
      "commit": "49d1735482dbcb017775b1807847e943f0a5152c",
      "tree": "6dc2bff4637ec52f036d570d4feef985e38f2dd2",
      "parents": [
        "324be170219987d643c1d05701a00cd358bc03e2",
        "1b98a9e6a9bd22c4dca731491b701f7ece6a6eb7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 26 12:23:53 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 26 12:23:53 2010 -0700"
      },
      "message": "am 1b98a9e6: am 5219dd8e: Merge \"add format parameter to setBufferGeometry\" into gingerbread\n"
    },
    {
      "commit": "3026a1c4e88412b7fe997f93fedba871d79a03cd",
      "tree": "f8eb7c4b680c14bc6bfdd082e15420dfa0c7e779",
      "parents": [
        "457bed2bc6561dd67429dde238453fee8602fa9b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 24 18:35:26 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 25 15:58:35 2010 -0700"
      },
      "message": "add format parameter to setBufferGeometry\n\nChange-Id: I7cc2acdc6e65e9468ecfd5b2f22e6b495a383be9\n"
    },
    {
      "commit": "6ab84eeb0fad723d6e3e1e9fc63a4896a5905248",
      "tree": "19c80ad4bfbf3407395eb5800be27d2ba7685edb",
      "parents": [
        "aa6110d84024776674131eb3b7a609499cf48810",
        "c2f78020d3887539fc90230d96465e4b1dc84d8e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 24 18:42:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 24 18:42:12 2010 -0700"
      },
      "message": "am c2f78020: am 23656899: Merge \"Fix issue #3126018: No way to specify NativeActivity\\\u0027s native method\" into gingerbread\n\nMerge commit \u0027c2f78020d3887539fc90230d96465e4b1dc84d8e\u0027\n\n* commit \u0027c2f78020d3887539fc90230d96465e4b1dc84d8e\u0027:\n  Fix issue #3126018: No way to specify NativeActivity\u0027s native method\n"
    },
    {
      "commit": "236568999411214ef440cabc6d12e3bf5f19d8f4",
      "tree": "bd7f442be4bc3b6ebbdd7c5ca0dbadc081033a8c",
      "parents": [
        "860c2df4132a2a0be9bcb0e91bfb7e79588c000f",
        "e21d91c694e828e6285cc50e79b2a6be6e8c692b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 24 18:33:36 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Oct 24 18:33:36 2010 -0700"
      },
      "message": "Merge \"Fix issue #3126018: No way to specify NativeActivity\u0027s native method\" into gingerbread"
    },
    {
      "commit": "e21d91c694e828e6285cc50e79b2a6be6e8c692b",
      "tree": "bff7d5088aa8dc568c33a1c68a7dbd976ebe0f58",
      "parents": [
        "b6a2256e5461160a89d077b761d3253d95ce869f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 24 14:56:38 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Sun Oct 24 14:56:38 2010 -0700"
      },
      "message": "Fix issue #3126018: No way to specify NativeActivity\u0027s native method\n\nChange-Id: I59de6a543e7f7f45d963a905829a3f56f32bf8cf\n"
    },
    {
      "commit": "3ae4ac8538765d6cf5b8aceea8c81b21854321bd",
      "tree": "d0e8ae9e1117ce1aeebf375a2807de5ed95c0655",
      "parents": [
        "4761b176ed241a88394968b983f06c5ae1aad26a",
        "2ef36763700eff5679d6012e7f078c57f1a4c465"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 24 14:36:23 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 24 14:36:23 2010 -0700"
      },
      "message": "am 2ef36763: am 860c2df4: Merge \"Add unit tests for native input and fix bugs identified.\" into gingerbread\n\nMerge commit \u00272ef36763700eff5679d6012e7f078c57f1a4c465\u0027\n\n* commit \u00272ef36763700eff5679d6012e7f078c57f1a4c465\u0027:\n  Add unit tests for native input and fix bugs identified.\n"
    },
    {
      "commit": "c3db858de9fa152480b9cf53c8c0cb793a280722",
      "tree": "ba337dd2df79d211a940727c5c93c112cf0de77d",
      "parents": [
        "b6a2256e5461160a89d077b761d3253d95ce869f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 20 15:33:38 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Oct 23 03:52:57 2010 -0700"
      },
      "message": "Add unit tests for native input and fix bugs identified.\n\nFixed a bug where we would lose the first touch point when swiping out of\nthe virtual key area.\n\nFixed a bug where we would not send an ACTION_MOVE event in cases where\nindividual pointers went down/up and the remaining pointers actually moved.\nThis is important since many applications do not handle pointer movements\nduring ACTION_POINTER_DOWN or ACTION_POINTER_UP.  In the case of\nACTION_POINTER_UP the movement was completely lost since all pointers were\ndispatched using their old location rather than the new location.\n\nImproved motion event validation to check for duplicate pointer ids.\n\nAdded an input source constant that was missing from the NDK api but\ndefined in the framework api.\n\nAdded a timestamp when reporting added/removed devices in EventHub.\n\nBug: 3070082\nChange-Id: I3206a030f43b7616e2f48006e5a9d522c4d92e56\n"
    },
    {
      "commit": "8fff4bff4de6b1a997d41a54a82ebf643759d49a",
      "tree": "591e9b4f2391a54de3bb55682282ca4e9fd9941b",
      "parents": [
        "b063e7903e49bc4689bd54ebe39e8094a58b910b",
        "4f734cabd0737d5e06bb5a2b9036d4b620c4ad17"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Oct 22 12:31:09 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 22 12:31:09 2010 -0700"
      },
      "message": "am 4f734cab: am 7ce276b5: Merge \"Update script for copying NDK headers/library.\" into gingerbread\n"
    },
    {
      "commit": "de5ba5ef7274f993d1612d3f902f27545aa99c8d",
      "tree": "38d0e014b75cd545f1c30c0c938d5910228ed780",
      "parents": [
        "fdbb2168f7a9a202ee9406d65e7ef98a6745b488"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 21:10:26 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 21:10:26 2010 -0700"
      },
      "message": "Update script for copying NDK headers/library.\n\nChange-Id: Ia441ce37123d5b5cd343f2746671495705501fb5\n"
    },
    {
      "commit": "bff26d156d23e55e2428e19b3fb7f52acf03f79f",
      "tree": "b0993306b63215d4db6559a86f02bcdb5ff22c55",
      "parents": [
        "4924aee9cb1c5988359f3162b6e89689c5b101e1",
        "86f1b643d10e0b5b17ae01db3b81020db87b3295"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 20:27:15 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 20:27:15 2010 -0700"
      },
      "message": "am 86f1b643: am bf5efba2: Merge \"Fix issue #3117918: No way to finish a native activity\" into gingerbread\n\nMerge commit \u002786f1b643d10e0b5b17ae01db3b81020db87b3295\u0027\n\n* commit \u002786f1b643d10e0b5b17ae01db3b81020db87b3295\u0027:\n  Fix issue #3117918: No way to finish a native activity\n"
    },
    {
      "commit": "db28a94d499f995b467b07cee5c9b9119f538b1c",
      "tree": "f720143b3b6a9813d26fdbc210bec10a0780f0b0",
      "parents": [
        "7dc08fb070ff7455e794fc81645ccb4349cd152f"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 17:22:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Oct 21 19:07:37 2010 -0700"
      },
      "message": "Fix issue #3117918: No way to finish a native activity\n\nChange-Id: Ic53e712f7ab5412d72a31b96ecba252344b91644\n"
    },
    {
      "commit": "497a92cc5ba2176b8a8484b0a7da040eac0e887b",
      "tree": "2d9bd7a2ef24754fa83a36f440ee45fd8a32b9fb",
      "parents": [
        "cd9afc3722a1edebf0e6f7172627930052c81ce4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 12 17:55:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 16:00:07 2010 -0700"
      },
      "message": "Add keycodes and meta-key modifiers to support external keyboards.\n\nAdded new key maps for external keyboards.  These maps are intended to\nbe shared across devices by inheriting the \"keyboards.mk\" product\nmakefile as part of the device\u0027s product definition.\n\nOne of the trickier changes here was to unwind some code in\nMetaKeyKeyListener that assumed that only the low 8 bits of the meta key\nstate were actually used.  The new code abandons bitshifts in favor\nof simple conditionals that are probably easier to read anyways.\nThe special meta key state constants used by MetaKeyKeyListener\nare now (@hide) defined in KeyEvent now so as to make it clearer that they\nshare the same code space even if those codes are not valid for KeyEvents.\n\nThe EventHub now takes care of detecting the appropriate key layout\nmap and key character map when the device is added and sets system\nproperties accordingly.  This avoids having duplicate code in\nKeyCharacterMap to probe for the appropriate key character map\nalthough the current probing mechanism has been preserved for legacy\nreasons just in case.\n\nAdded support for tracking caps lock, num lock and scroll lock and\nturning their corresponding LEDs on and off as needed.\n\nThe key character map format will need to be updated to correctly support\nPC style external keyboard semantics related to modifier keys.\nThat will come in a later change so caps lock doesn\u0027t actually do\nanything right now except turn the shiny LEDs on and off...\n\nAdded a list of symbolic key names to KeyEvent and improved the toString()\noutput for debug diagnosis.  Having this list in a central place in the\nframework also allows us to remove it from Monkey so there is one less\nthing to maintain when we add new keycodes.\n\nBug: 2912307\nChange-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4\n"
    },
    {
      "commit": "733e79c24042145d12a18cac59e8edb08965fab0",
      "tree": "55a0da888e5fecbb8c63f888519cb624a3c5a84e",
      "parents": [
        "4bd4bd6fc05ab7108f4f59f98bd6b595cec58e02",
        "2f98a585cda066689b1b525322c51fcacbc3770b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 15 08:32:30 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 08:32:30 2010 -0700"
      },
      "message": "am 2f98a585: am 49ec3dff: Merge \"OBB: Change documentation to reflect reality\" into gingerbread\n\nMerge commit \u00272f98a585cda066689b1b525322c51fcacbc3770b\u0027\n\n* commit \u00272f98a585cda066689b1b525322c51fcacbc3770b\u0027:\n  OBB: Change documentation to reflect reality\n"
    },
    {
      "commit": "0a9b54e88b9cbb30748b5f0b331aec3f3ef8d639",
      "tree": "22ff1466c777067596537ccb085cd64ed0bc3bc5",
      "parents": [
        "0726fd9e835579019f6b23ab50d7b45401e11dbe",
        "8bb7a1dfbb43dda49fb3c4f86181bcd7f969a832"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 15:43:35 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 15:43:51 2010 -0700"
      },
      "message": "resolved conflicts for merge of 8bb7a1df to master\n\nChange-Id: Ieec036f494a54eab74a27b954d1423bf981dd3f9\n"
    },
    {
      "commit": "19dcd2aeba184f81b140b4fbc692bdd80a51299e",
      "tree": "abadf161e0f2bbdb69ddf1d82d1c5089e7bfa6c1",
      "parents": [
        "dfc07279fc6205c38f5f39cb5ba4f0aef6b593a4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 12:37:18 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Oct 13 12:37:18 2010 -0700"
      },
      "message": "OBB: Change documentation to reflect reality\n\nWe can\u0027t reliably detect when the key for an OBB is incorrect, so just\nremove the mention in the documentation. It still returns an error, but\njust not the most specific error.\n\nBug: 3091064\nChange-Id: I70e506822f2178a0ac5e4617fe545b23ce0026f4\n"
    },
    {
      "commit": "af9d667ccf3e24058214cf4cc0a8aa8bc5100e3c",
      "tree": "c59adbe6d27cf236d6920f689dd237a115fef3f9",
      "parents": [
        "ce2f1909c74a1b90995f06a865d21260b062300b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Oct 08 09:21:39 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Oct 11 17:22:03 2010 -0700"
      },
      "message": "OBB: rearrange to be entirely asynchronous\n\nRearrange structure of MountService handling of OBBs to be entirely\nasynchronous so we don\u0027t rely on locking as much. We still need the\nlocking to support dumpsys which has been improved to output all the\ndata structures for OBBs.\n\nAdded more tests to cover more of the error return codes.\n\nOh and fix a logic inversion bug.\n\nChange-Id: I34f541192dbbb1903b24825889b8fa8f43e6e2a9\n"
    },
    {
      "commit": "d5da367024c36b317b101fc066a7a4cf992c7d58",
      "tree": "87cf98a6514557be5427c462349a0ee9deb9a9dd",
      "parents": [
        "bcf74accafcdac6c7a940ce28982fc0ef08e111b",
        "22cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 10 12:52:40 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 10 12:52:40 2010 -0700"
      },
      "message": "am 22cb4ef8: am d577cfd7: Merge \"Switch Looper back to using poll() instead of epoll().\" into gingerbread\n\nMerge commit \u002722cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5\u0027\n\n* commit \u002722cb4ef8ce9c4d5536ac5cee5c40b82bfa56ccc5\u0027:\n  Switch Looper back to using poll() instead of epoll().\n"
    },
    {
      "commit": "415d8c38199e258dfce92cdb0c69e056b3b51ef8",
      "tree": "5bf6d167a19b272f2a153df6010a7dd6f58a274f",
      "parents": [
        "930d6c3cd5ad387489eb1d35a38beeafe54166b6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Oct 05 15:35:37 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 07 13:26:39 2010 -0700"
      },
      "message": "Switch Looper back to using poll() instead of epoll().\n\nAdded a couple of micro-optimizations to avoid calling wake() unnecessarily\nand reduce JNI overhead slightly.\n\nFixed a minor issue where we were not clearing the \"next\" field of Messages\nreturned by the MessageQueue so the Message would hold on to its successor\nand potentially prevent the GC from collecting it if the message were leaked\nsomehow.\n\nChange-Id: I488d29417ce0cdd7d0e447cda76ec978ef7f811c\n"
    },
    {
      "commit": "8fc2518776cb3989a4898ba4b1475549a548b7fb",
      "tree": "1f45aca3d5f4f4ff640eccb50f8bc4090f93db57",
      "parents": [
        "9987b1534e31b0aa406943450e6b5746f3ab2c03",
        "c3bc8b7b08611c8d86919f4695430990bc6b475d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Sep 30 14:57:23 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 30 14:57:23 2010 -0700"
      },
      "message": "am c3bc8b7b: am 1bfbf19b: Merge \"Fix night/notnight resource folder handling.\" into gingerbread\n\nMerge commit \u0027c3bc8b7b08611c8d86919f4695430990bc6b475d\u0027\n\n* commit \u0027c3bc8b7b08611c8d86919f4695430990bc6b475d\u0027:\n  Fix night/notnight resource folder handling.\n"
    },
    {
      "commit": "2b9785aa65abdb1b38270c51ac34240462aecf65",
      "tree": "bcb75c6fff5ad0742de84aabeb388d8fd0b33147",
      "parents": [
        "2cbb56f961e4893a3bf7ded560d4bdbf45eabd01"
      ],
      "author": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Thu Sep 30 10:57:24 2010 +0200"
      },
      "committer": {
        "name": "Tobias Haamel",
        "email": "haamel@google.com",
        "time": "Thu Sep 30 11:26:02 2010 +0200"
      },
      "message": "Fix night/notnight resource folder handling.\n\nThe values for NIGHT_NO / NIGHT_YES are shifted later on in the\nResourceTypes header file to match with the ones specified in the\nConfiguration class file. This is basically the same as it\u0027s done for\nthe SCREEN_LONG_NO / SCREEN_LONG_YES constants.\n\nSince the values are also masked later on by 0x30 (MASK_UI_MODE_NIGHT)\nthe system currently recognizes resources specified in night/notnight\nfolders as if they were resources which can be used for any of both\nmodes. This results in an error saying that the resources are already\nspecified somewhere else.\n\nShould fix: http://b/issue?id\u003d3022577\n\nChange-Id: I554b37231ea4c69a8625e519150473fddce7d8ed\n"
    },
    {
      "commit": "bff405f91001237ec94ec64f86fa2370c4509559",
      "tree": "c492bfa8bacef42800f47b1638b1812275cecb6d",
      "parents": [
        "e63f20b5fe373822758182226d7512859d8e8356",
        "d8e8186c887fe47977721315f439465771a96374"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 28 18:16:50 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 28 18:16:50 2010 -0700"
      },
      "message": "resolved conflicts for merge of d8e8186c to master\n\nChange-Id: Ica3f6cd958717ea7033cab8b4bf9cd3425c1e1c5\n"
    },
    {
      "commit": "05105f7abe02b2dff91d6260b3628c8b97816bab",
      "tree": "f42676d818548d76b2c55045a1bcc4866d6feec1",
      "parents": [
        "ea2cf2f936b03f1720bc43863e41c89ea2a7903a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Sep 22 17:29:43 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 28 17:23:26 2010 -0700"
      },
      "message": "Update OBB API to include callbacks\n\nAdd a callback for users of the StorageManager API to be able to receive\nnotifications when the requested operation completes for mountObb and\nunmountObb.\n\nAdd NDK API to get to ObbInfo like the Java API has.\n\nAlso update the docs for the API and remove the \"STOPSHIP\" comments.\n\nChange-Id: I23a4409c7f8b74d3169614beba920b4d667990a4\n"
    },
    {
      "commit": "707929d6f8f8ff2663da9982a99f943736b8be5c",
      "tree": "c68c3251dc53422c136ab6ec239033b60ec32e33",
      "parents": [
        "6cca469ed6e58444dc6264a353510250cacfcf09",
        "61cf67a220ba3205737c646c1c836a92074220de"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 13:05:50 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 16 13:05:50 2010 -0700"
      },
      "message": "am 61cf67a2: am 24326f72: Merge \"Input API review.\" into gingerbread\n\nMerge commit \u002761cf67a220ba3205737c646c1c836a92074220de\u0027\n\n* commit \u002761cf67a220ba3205737c646c1c836a92074220de\u0027:\n  Input API review.\n"
    },
    {
      "commit": "49478536b6b8b28f33398393bed5e939085af7af",
      "tree": "a83f41bc6da9dd267005ad23b0b32c6f40f860d0",
      "parents": [
        "a5ab8ce602ecfd897805e185c89a6eff0c78aabe",
        "14bc6b5d0677e5c454a67775c852f90389bb4567"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 15 12:32:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 15 12:32:29 2010 -0700"
      },
      "message": "am 14bc6b5d: am 09340a4b: Merge \"Replace epoll() with poll() and rename PollLoop to Looper.\" into gingerbread\n\nMerge commit \u002714bc6b5d0677e5c454a67775c852f90389bb4567\u0027\n\n* commit \u002714bc6b5d0677e5c454a67775c852f90389bb4567\u0027:\n  Replace epoll() with poll() and rename PollLoop to Looper.\n"
    },
    {
      "commit": "dc1ab4b5cc274b7d744c11a939bb5910becec5e0",
      "tree": "b548d8f3afe385d196b250d208fcc529ac28ed0d",
      "parents": [
        "cee0b97eed0a460e2da58500e24d3e4dac5cb9f6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 14 18:03:38 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 14 20:46:14 2010 -0700"
      },
      "message": "Input API review.\n\nDrop currently unsupported input features.\nAdd documentation comments.\n\nChange-Id: I407d2e1dd90c5ee82983a3ccf177430d35ee7592\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": "b380c4d7edc158788a85c906900232675c0164ac",
      "tree": "579f4e6e8cd611c0f95302e0e53b6739b2e4d84e",
      "parents": [
        "35dc79da11639117aab34d3278a7ae90984c0f87",
        "a05088c18d22f822e78e7b91d60f518dc3dc06fc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 13:02:55 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 13:02:55 2010 -0700"
      },
      "message": "resolved conflicts for merge of a05088c1 to master\n\nChange-Id: I7973f9f28586dec9b9659f8f662f40db7997a521\n"
    },
    {
      "commit": "85a3176704b5bfbeece9bd928369fbb76eec7dc6",
      "tree": "1a84f21c037b514c5b6717b106f5a9a2c4fd6c99",
      "parents": [
        "c0b4f6d30d962d75125628317b5f5ea622531dfe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 01 17:01:00 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 11:50:55 2010 -0700"
      },
      "message": "Add support for secure views.\n\nAdded the MotionEvent.FLAG_WINDOW_IS_OBSCURED flag which is set by the\ninput manager whenever another visible window is partly or wholly obscured\nthe target of a touch event so that applications can filter touches\naccordingly.\n\nAdded a \"filterTouchesWhenObscured\" attribute to View which can be used to\nenable filtering of touches when the view\u0027s window is obscured.\n\nChange-Id: I936d9c85013fd2d77fb296a600528d30a29027d2\n"
    },
    {
      "commit": "347262622b86410ff8a4ff3530ab3688b6a20b21",
      "tree": "f596d33ff54ab5169a7c52e19319b63d0e200e63",
      "parents": [
        "7dea769319701f4e883fc448507967b806b9b245",
        "a1205f07a6f0c745e8f42f16fe38c06af04143c7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 18:52:06 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 07 18:52:06 2010 -0700"
      },
      "message": "am a1205f07: am 2d3739d4: Merge \"Modify native ALooper to take an explicit ident.\" into gingerbread\n\nMerge commit \u0027a1205f07a6f0c745e8f42f16fe38c06af04143c7\u0027\n\n* commit \u0027a1205f07a6f0c745e8f42f16fe38c06af04143c7\u0027:\n  Modify native ALooper to take an explicit ident.\n"
    },
    {
      "commit": "42c03e579aade011b451e2a13ea3f44a2ef0056a",
      "tree": "1716fbd88e2beb816d303c3d3fa0ca1785b8db61",
      "parents": [
        "6e86915e8f5dfffa60ae5d1a4ca9aa74912fd026"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 15:28:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 07 15:46:55 2010 -0700"
      },
      "message": "Modify native ALooper to take an explicit ident.\n\nThe ALooper API now uses an explicit \"identifier\" for the integer\nthat is returned rather than implicitly using the fd.  This allows\nthe APIs that had the fd to be a little more sane.\n\nChange-Id: I8507f535ad484c0bdc4a1bd016d87bb09acd7ff0\n"
    },
    {
      "commit": "ee6d676c5b997a1214e96b6ba3755054382717c5",
      "tree": "9576d1113eff5dd088834bf447345e8748be9f9e",
      "parents": [
        "97a24c60eec54cb95ded8dcb7db6c2e95d835ce4",
        "df02df115a594553b3ebaa95a0a7f7185a8787d3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 31 15:53:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 31 15:53:17 2010 -0700"
      },
      "message": "am df02df11: am 307ed31c: Merge \"Remove incomplete input device enumeration NDK API.\" into gingerbread\n\nMerge commit \u0027df02df115a594553b3ebaa95a0a7f7185a8787d3\u0027\n\n* commit \u0027df02df115a594553b3ebaa95a0a7f7185a8787d3\u0027:\n  Remove incomplete input device enumeration NDK API.\n"
    },
    {
      "commit": "5fad2675e8deee60aa91d7a96c9ac4826357f2c5",
      "tree": "a6bd559cdfc301df21693357650c3b58b95e0763",
      "parents": [
        "47471175c9d19a00d06a77aa316dcda08be97deb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 31 15:20:28 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 31 15:24:55 2010 -0700"
      },
      "message": "Remove incomplete input device enumeration NDK API.\n\nChange-Id: I32de74ff5fcf0e29179a2aee03ddabd22fa485bb\n"
    },
    {
      "commit": "22f5ee93746f37823265b8cb9b1e94e572607514",
      "tree": "269e105935875e8453c0bd33792fdeedd4c928ee",
      "parents": [
        "02f4f0eb4919453e8dbf40549d4ae9c05f05b8dd",
        "36f0cb26cbb4ef62995ff2e5a540cf8814e7f030"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 30 18:29:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 30 18:29:12 2010 -0700"
      },
      "message": "am 36f0cb26: am 8d60866e: Input device calibration and capabilities.\n\nMerge commit \u002736f0cb26cbb4ef62995ff2e5a540cf8814e7f030\u0027\n\n* commit \u002736f0cb26cbb4ef62995ff2e5a540cf8814e7f030\u0027:\n  Input device calibration and capabilities.\n"
    },
    {
      "commit": "8d60866e2100db70ecf0502c14768a384514d7e9",
      "tree": "514e46b4e4d58fd68cd52de93b93e7782fdf4e9f",
      "parents": [
        "bb660d7e1bed3a07a1804bd9641d9634bfaa4972"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 30 03:02:23 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 30 18:16:43 2010 -0700"
      },
      "message": "Input device calibration and capabilities.\n\nFinished the input device capability API.\nAdded a mechanism for calibrating touch devices to obtain more\naccurate information about the touch contact area.\nImproved pointer location to show new coordinates and capabilities.\nOptimized pointer location display and formatting to avoid allocating large\nnumbers of temporary objects.  The GC churn was causing the application to\nstutter very badly when more than a couple of fingers were down).\nAdded more diagnostics.\n\nChange-Id: Ie25380278ed6f16c5b04cd9df848015850383498\n"
    },
    {
      "commit": "53e75ea847df20b29124966a4232dc0109c37e27",
      "tree": "4c545e0c93b0d50122002201d3f6836225a6b3dd",
      "parents": [
        "d820714e30a53b244d252e77c7922e2c1604adbc",
        "485de781f6bd30dfb7aa1e55c4f1efb3d3b11eba"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Aug 24 09:57:33 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Aug 24 09:57:33 2010 -0700"
      },
      "message": "resolved conflicts for merge of 485de781 to master\n\nChange-Id: I483cb81596f09b024b1aea7fc55960183f38b24f\n"
    },
    {
      "commit": "086d084dd9deab4350981da5e48c8bda5e88fb75",
      "tree": "f43719f65c6cb73dbd5f05cf283fac2618f26b3f",
      "parents": [
        "be857d42849eaaa554d4772dbba7755f8a0f3547"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Aug 19 17:55:56 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 20 13:27:31 2010 -0700"
      },
      "message": "Add AStorageManager API to NDK\n\nAStorageManager allows users of the NDK to access OBBs for now.\n\nChange-Id: I8a25757901a175aa90a9f3e8c2a5db7873e8615e\n"
    },
    {
      "commit": "7b6d0d99b6904b511996267efae215fe9cb5e98f",
      "tree": "85c1f63b5ba66ec77d5c9ecd5a2b44229ed67699",
      "parents": [
        "ea65ec23f6dc18e978ab6dcf23d3c2b27a0c2109",
        "679ac09a5c22175354f3a04b28456b323839530e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 00:50:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 11 00:50:56 2010 -0700"
      },
      "message": "am 679ac09a: am a5ae50cd: Merge \"More native work.\" into gingerbread\n\nMerge commit \u0027679ac09a5c22175354f3a04b28456b323839530e\u0027\n\n* commit \u0027679ac09a5c22175354f3a04b28456b323839530e\u0027:\n  More native work.\n"
    },
    {
      "commit": "08d5b8fad8d46ccb64db2fdcb4d66972ec87bf48",
      "tree": "7e2e67603ec8a2ca164548301b65a2b733df76a0",
      "parents": [
        "091c5238a00ca51dc69b8b09459e6ac88e1eb077"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 04 11:12:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 11 00:29:59 2010 -0700"
      },
      "message": "More native work.\n\nImplement save/restore of state, and add native APIs for\nconfiguration information.\n\nChange-Id: I2a3ddc2ba605db58d7c8b2b31b9215fb323f90b5\n"
    },
    {
      "commit": "ce49d03aa40123a086d6017052873bed83835298",
      "tree": "2de1d2e8a3e34939c75b9b01418fe6c09b4cfca9",
      "parents": [
        "d4e60a1f8e6a92102c0ac55775c4153e31aec407",
        "02513855530b80dd554b13852db75f3adde2c9f4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 22:06:44 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 29 22:06:44 2010 -0700"
      },
      "message": "resolved conflicts for merge of 02513855 to master\n\nChange-Id: Ie33d57798d3d5b800edde753dac86de062bc270c\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": "48555f8f09c87224e312554b6b771ee30da6a435",
      "tree": "2a364c1621b34ec80d6852904328d30f84d96df8",
      "parents": [
        "fc8ae40da05519ed71988e78547fb3c95ee951dc",
        "31a0b956396e417bdbfee97554afb5b52d68a8ba"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:44:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 16:44:56 2010 -0700"
      },
      "message": "am 31a0b956: am 3de27d5a: Merge \"Add stdint.h to fix sim-eng\" into gingerbread\n\nMerge commit \u002731a0b956396e417bdbfee97554afb5b52d68a8ba\u0027\n\n* commit \u002731a0b956396e417bdbfee97554afb5b52d68a8ba\u0027:\n  Add stdint.h to fix sim-eng\n"
    },
    {
      "commit": "e30de4e6a312aa921633d119f2518f4b07a7effa",
      "tree": "8e154eb1ce1fa9fed249409a08dd254db0b681f9",
      "parents": [
        "9d90ed71ccf45bc1e422ee2abc9acf0a806b9319"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:41:02 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Jul 28 16:41:02 2010 -0700"
      },
      "message": "Add stdint.h to fix sim-eng\n\nChange-Id: I82cebe3e769aa4db99bd758bd2f182b0d462de6f\n"
    },
    {
      "commit": "2279971b6f66d60240b8c72a9d52644a3bcdf01b",
      "tree": "6bb439e7b3c2b8c32a10a4b71cd8220045a49a90",
      "parents": [
        "5193a5bab165a4f812b8e72d656b6a18ee04f42b",
        "9795a25da060f9a7df87da8ab43fb1086d4322a5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 28 14:27:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 28 14:27:55 2010 -0700"
      },
      "message": "am 9795a25d: am 6d0fec2d: Refactor input reader to support new device types more easily.\n\nMerge commit \u00279795a25da060f9a7df87da8ab43fb1086d4322a5\u0027\n\n* commit \u00279795a25da060f9a7df87da8ab43fb1086d4322a5\u0027:\n  Refactor input reader to support new device types more easily.\n"
    },
    {
      "commit": "6d0fec2de3601821f4f44eeb7d7deedebb2b7117",
      "tree": "9fdea32c5691a6d0bcb3085df47f42a8e6ecd565",
      "parents": [
        "b350bec514eb9fee473e4ef62680c53e992dc49b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 23 21:28:06 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 28 14:16:15 2010 -0700"
      },
      "message": "Refactor input reader to support new device types more easily.\n\nRefactored the input reader so that each raw input protocol is handled\nby a separate subclass of the new InputMapper type.  This way, behaviors\npertaining to keyboard, trackballs, touchscreens, switches and other\ndevices are clearly distinguished for improved maintainability.\n\nAdded partial support for describing capabilities of input devices\n(incomplete and untested for now, will be fleshed out in later commits).\n\nSimplified EventHub interface somewhat since InputReader is taking over\nmore of the work.\n\nCleaned up some of the interactions between InputManager and\nWindowManagerService related to reading input state.\n\nFixed swiping finger from screen edge into display area.\n\nAdded logging of device information to \u0027dumpsys window\u0027.\n\nChange-Id: I17faffc33e3aec3a0f33f0b37e81a70609378612\n"
    },
    {
      "commit": "50558b956157dad980441bf4fb44931ce834e36b",
      "tree": "2d208a78ab3a1c77d91751b8bbe5cafd9415f0d8",
      "parents": [
        "c1b11b1b37d0692bd3c63575c9f2c0d9fa566602",
        "bc54e63c84a517f0dca88ba900ff2b56719f685b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 18:10:22 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 21 18:10:22 2010 -0700"
      },
      "message": "resolved conflicts for merge of bc54e63c to master\n\nChange-Id: I4245b15b4cda6963d735442c0c6a04a0477ff5e1\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": "781d34747941f3534b2a985ff57368ad89855d7d",
      "tree": "d7a87b96737fa8dfe18bb3d2b2985a77898123c2",
      "parents": [
        "fb4e1e24a93c7e6bc0fcdb3f5cfadfbc19503cd8",
        "9c37e5add9d7678a29b4e0d1e178fe78a13db961"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 16 09:12:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 16 09:12:29 2010 -0700"
      },
      "message": "am 9c37e5ad: am 75a91389: Merge \"Implement native key pre-dispatching to IMEs.\" into gingerbread\n\nMerge commit \u00279c37e5add9d7678a29b4e0d1e178fe78a13db961\u0027\n\n* commit \u00279c37e5add9d7678a29b4e0d1e178fe78a13db961\u0027:\n  Implement native key pre-dispatching to IMEs.\n"
    },
    {
      "commit": "b75fa30aaf03d9e425d150b452501e5df0621351",
      "tree": "c7914253bdc9964a7bca8093341173a91341c74d",
      "parents": [
        "3fdab65f244c92aed36bc0a5ee435d5dfbe2d673",
        "aca672ba2eea19420df16906851d56077a3fd3b2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 23:47:29 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 23:47:29 2010 -0700"
      },
      "message": "resolved conflicts for merge of aca672ba to master\n\nChange-Id: I7ae11fca0acdbf513a4870226d0d3e3cafbe9a08\n"
    },
    {
      "commit": "6ba776ad34a8029e4d0c784ce0092f1fcbc91bef",
      "tree": "8df9196a58f89c0f05b49e3588bc08481a1ee198",
      "parents": [
        "085d0f55e6a2e8449961174673d43a5868874639",
        "078ccbdbb98c118aa87cab2fef61ff90dd128358"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 15 23:05:27 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 15 23:05:27 2010 -0700"
      },
      "message": "am 078ccbdb: am 2c40582a: Merge \"Add native C APIs for working with the Asset Manager\" into gingerbread\n\nMerge commit \u0027078ccbdbb98c118aa87cab2fef61ff90dd128358\u0027\n\n* commit \u0027078ccbdbb98c118aa87cab2fef61ff90dd128358\u0027:\n  Add native C APIs for working with the Asset Manager\n"
    },
    {
      "commit": "2c6081ce3593712f30dacd990a97209c791d6ced",
      "tree": "4808bc521c207ea11ec0daceb98f77a6b47b00a0",
      "parents": [
        "c5ed5910c9ef066cec6a13bbb404ec57b1e92637"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 17:44:53 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 15 22:05:33 2010 -0700"
      },
      "message": "Implement native key pre-dispatching to IMEs.\n\nThis significantly re-works the native key dispatching code to\nallow events to be pre-dispatched to the current IME before\nbeing processed by native code.  It introduces one new public\nAPI, which must be called after retrieving an event if the app\nwishes for it to be pre-dispatched.\n\nCurrently the native code will only do pre-dispatching of\nsystem keys, to avoid significant overhead for gaming input.\nThis should be improved to be smarted, filtering for only\nkeys that the IME is interested in.  Unfortunately IMEs don\u0027t\ncurrently provide this information. :p\n\nChange-Id: Ic1c7aeec8b348164957f2cd88119eb5bd85c2a9f\n"
    },
    {
      "commit": "c5ed5910c9ef066cec6a13bbb404ec57b1e92637",
      "tree": "b06dfdac2d807dae78a2634007b6e627eefd0804",
      "parents": [
        "d9452ecd0ce6c8e0518055929ba1fd0712146405"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 18:48:53 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 15 18:32:33 2010 -0700"
      },
      "message": "Add support for new input sources.\n\nAdded several new coordinate values to MotionEvents to capture\ntouch major/minor area, tool major/minor area and orientation.\n\nRenamed NDK input constants per convention.\n\nAdded InputDevice class in Java which will eventually provide\nuseful information about available input devices.\n\nAdded APIs for manufacturing new MotionEvent objects with multiple\npointers and all necessary coordinate data.\n\nFixed a bug in the input dispatcher where it could get stuck with\na pointer down forever.\n\nFixed a bug in the WindowManager where the input window list could\nend up containing stale removed windows.\n\nFixed a bug in the WindowManager where the input channel was being\nremoved only after the final animation transition had taken place\nwhich caused spurious WINDOW DIED log messages to be printed.\n\nChange-Id: Ie55084da319b20aad29b28a0499b8dd98bb5da68\n"
    },
    {
      "commit": "6cce32b6adbb3a9725fc730ba0e0068a74657e60",
      "tree": "659b099eb08109f3e4e51e184d929f392928e722",
      "parents": [
        "d6343c26b8580f61a257a3045bfa124049201116"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Mon Jul 12 18:21:36 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Jul 15 14:28:21 2010 -0700"
      },
      "message": "Add native C APIs for working with the Asset Manager\n\nChange-Id: I493b142c4b35e5cc1a1e85283bb5dfb306a6d261\n"
    },
    {
      "commit": "4b85590f8d021e338248623b641b4867329e2834",
      "tree": "0a21968d35653731ef82f7d1f327573fa37d5d14",
      "parents": [
        "764f436cb9e734afdc55a7b4ac65b27860383a09",
        "7417ae9354e10971c0b5d41dc9194fab17b80ea1"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 14 16:51:33 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 16:51:33 2010 -0700"
      },
      "message": "am 7417ae93: am ccc77328: Merge \"Remove old glue code.\" into gingerbread\n\nMerge commit \u00277417ae9354e10971c0b5d41dc9194fab17b80ea1\u0027\n\n* commit \u00277417ae9354e10971c0b5d41dc9194fab17b80ea1\u0027:\n  Remove old glue code.\n"
    },
    {
      "commit": "ccc77328da66436010f3bca000c4b4665270500a",
      "tree": "588132abd837a231042b17e803c81b646b39915a",
      "parents": [
        "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06",
        "1e86ce6ed29ed774e83256c196c5341791e7cdb4"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 14 16:46:37 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 14 16:46:37 2010 -0700"
      },
      "message": "Merge \"Remove old glue code.\" into gingerbread"
    },
    {
      "commit": "764f436cb9e734afdc55a7b4ac65b27860383a09",
      "tree": "c42c8bfaac5919a33718800ba5d7a9fc51f87758",
      "parents": [
        "172b79e9df9a5689681cf0355921ec2445bc9f6f",
        "db386f2c263c6e9e4b825d4c9a320849f8f2c916"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 16:39:55 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 14 16:39:55 2010 -0700"
      },
      "message": "am db386f2c: am c9a11088: Merge \"first step at implementing the native sensor support\" into gingerbread\n\nMerge commit \u0027db386f2c263c6e9e4b825d4c9a320849f8f2c916\u0027\n\n* commit \u0027db386f2c263c6e9e4b825d4c9a320849f8f2c916\u0027:\n  first step at implementing the native sensor support\n"
    },
    {
      "commit": "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06",
      "tree": "d6841ee8f8cf79e7079bfb0f53dc053cc5bd670d",
      "parents": [
        "38eea8bf990540360b45b963195a7766c30b55d2",
        "b957b9d63c88efd3a961759424987b99219adeed"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 16:32:04 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 14 16:32:04 2010 -0700"
      },
      "message": "Merge \"first step at implementing the native sensor support\" into gingerbread"
    },
    {
      "commit": "1e86ce6ed29ed774e83256c196c5341791e7cdb4",
      "tree": "d796b181562bdd8ab0152765ef28d650621775b5",
      "parents": [
        "05940b2c04041d6b3b8d222f4acfd12faeeb6c9c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 14 15:58:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 14 15:58:30 2010 -0700"
      },
      "message": "Remove old glue code.\n\nChange-Id: Ic4a9c1f09d9bd4258d9766d546b0999b79997635\n"
    },
    {
      "commit": "039a9ae320f0df32df33964ca1afe5fb52e4305d",
      "tree": "630d50df074590ed9f9b1973fed8737a024e45a9",
      "parents": [
        "26dd7b3bb381ba06ce3a7eb17205e54fdd7becfc"
      ],
      "author": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Wed Jul 14 15:20:07 2010 -0700"
      },
      "committer": {
        "name": "Charles Chen",
        "email": "clchen@google.com",
        "time": "Wed Jul 14 15:21:56 2010 -0700"
      },
      "message": "Adding the old legacy method for getTtsEngine for Froyo compatibility.\n\nChange-Id: I1f29f1b670137daff0c153e9f7ecdb7bfb2b5ff6\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"
    },
    {
      "commit": "0eb1d98bc4a347a1fee62501e0b1731dc82d1011",
      "tree": "4319b1cb102dd42936fbf15523a07d6fb81baa9d",
      "parents": [
        "c269a13e899428ca9ae010613f21148787ff6287",
        "e69204a02a9d2babd5352180fb541e7295db911a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 21:23:52 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 21:23:52 2010 -0700"
      },
      "message": "am e69204a0: am 36ff93aa: Merge \"NDK sensor API\" into gingerbread\n\nMerge commit \u0027e69204a02a9d2babd5352180fb541e7295db911a\u0027\n\n* commit \u0027e69204a02a9d2babd5352180fb541e7295db911a\u0027:\n  NDK sensor API\n"
    },
    {
      "commit": "36ff93aa1f489e6af6c2acce38beb0bffd6b8f8a",
      "tree": "7037996310e9560303d1a9bd12136dfc0762a12d",
      "parents": [
        "021e906a46f044025ce0a4632309abecd069240d",
        "e558010a623ead3564fe4d656a5963bf05c17edd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 21:18:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 13 21:18:30 2010 -0700"
      },
      "message": "Merge \"NDK sensor API\" into gingerbread"
    },
    {
      "commit": "e558010a623ead3564fe4d656a5963bf05c17edd",
      "tree": "96c710cf3ba21eca1fa77a15623a770ad6a743bd",
      "parents": [
        "b10080106909fd860ed33ac46de9f2f084e358d6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 12 20:05:06 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 13 21:17:40 2010 -0700"
      },
      "message": "NDK sensor API\n\nChange-Id: Ie07afc349ca3331e065725ba9d7ebe9722959653\n"
    },
    {
      "commit": "2388ad9eef109fa7f63c196c819c83f0376f0645",
      "tree": "19c965b6d7efb893604fc448cebc9380ebb60fb6",
      "parents": [
        "fc6d300f408959b11f86623ea7a0ce547ded3563",
        "f8d9379bd834573feca085284970cf686993c330"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 19:50:36 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 19:50:36 2010 -0700"
      },
      "message": "am f8d9379b: am d76b67c3: IME events are now dispatched to native applications.\n\nMerge commit \u0027f8d9379bd834573feca085284970cf686993c330\u0027\n\n* commit \u0027f8d9379bd834573feca085284970cf686993c330\u0027:\n  IME events are now dispatched to native applications.\n"
    },
    {
      "commit": "d76b67c340d1564abf8d14d976fdaf83bf2b3320",
      "tree": "59c0fff396681a622480a84f4f9c74d188970a11",
      "parents": [
        "fd03582995e0fce963dd0fa0669e3211b74c0dd7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 17:48:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 13 18:36:46 2010 -0700"
      },
      "message": "IME events are now dispatched to native applications.\n\nAnd also:\n\n- APIs to show and hide the IME, and control its interaction with the app.\n- APIs to tell the app when its window resizes and needs to be redrawn.\n- API to tell the app the content rectangle of its window (to layout\n  around the IME or status bar).\n\nThere is still a problem with IME interaction -- we need a way for the\napp to deliver events to the IME before it handles them, so that for\nexample the back key will close the IME instead of finishing the app.\n\nChange-Id: I37b75fc2ec533750ef36ca3aedd2f0cc0b5813cd\n"
    },
    {
      "commit": "6ac7674e143f9716312f048da3f25ca83b646315",
      "tree": "53fe0d254223187c268773539fc37bc5f2a415ce",
      "parents": [
        "e5e285509fdba2b996006e610e0d2888450230f0",
        "89ee578b7053d27a50922f82feb94bf6054b330c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:48:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 13 17:48:56 2010 -0700"
      },
      "message": "am 89ee578b: am fd035829: Add initial gamepad support.\n\nMerge commit \u002789ee578b7053d27a50922f82feb94bf6054b330c\u0027\n\n* commit \u002789ee578b7053d27a50922f82feb94bf6054b330c\u0027:\n  Add initial gamepad support.\n"
    },
    {
      "commit": "fd03582995e0fce963dd0fa0669e3211b74c0dd7",
      "tree": "8f7fe0e2a437620a7cbe4e494f71fe8ccfdbe2eb",
      "parents": [
        "c0a7e690bfd32dd897ceccd04dd0fa6bf6e9cee6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 16:10:35 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jul 13 17:04:57 2010 -0700"
      },
      "message": "Add initial gamepad support.\n\nChange-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9\n"
    },
    {
      "commit": "d63c5d4e930732ef2a41266fcc8237cb1ec81320",
      "tree": "8c58ce351eb9e9c317180f8d21becaf37c19c5e9",
      "parents": [
        "8445ca6c3ba9b7cee6d20f5919e3b3ba8e6b8c96",
        "bbf0bde5d8311f84b6f0a8d018d78a78429602b7"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 18:30:22 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 09 18:30:22 2010 -0700"
      },
      "message": "am bbf0bde5: am faccac76: Make a stupid thing about the glue less stupid.\n\nMerge commit \u0027bbf0bde5d8311f84b6f0a8d018d78a78429602b7\u0027\n\n* commit \u0027bbf0bde5d8311f84b6f0a8d018d78a78429602b7\u0027:\n  Make a stupid thing about the glue less stupid.\n"
    },
    {
      "commit": "faccac7616795859af257777900db514d425a106",
      "tree": "54845290d489839c1bf48c36a907d7aa9bb4e35a",
      "parents": [
        "289b9b62372ef52a06113b83dfb870e2c2fb325a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 18:20:09 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 18:20:09 2010 -0700"
      },
      "message": "Make a stupid thing about the glue less stupid.\n\nThere is no reason to make the app developer delete the\nglue.  Seriously.\n\nChange-Id: Ic6a93ba17b44889783b35a2a0a2b67ffcd647f47\n"
    },
    {
      "commit": "8445ca6c3ba9b7cee6d20f5919e3b3ba8e6b8c96",
      "tree": "9d91e1020e2f75baf83cd9b9b4934c81fe7025d6",
      "parents": [
        "3a70b20ee5aa2c0d451f1d2a5701bf9c43c8ca6f",
        "b14f325a0118ffce286155caaabaae149653462c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 17:05:23 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 09 17:05:23 2010 -0700"
      },
      "message": "am b14f325a: am 289b9b62: Add ANativeWindow API for directly drawing to the surface bits.\n\nMerge commit \u0027b14f325a0118ffce286155caaabaae149653462c\u0027\n\n* commit \u0027b14f325a0118ffce286155caaabaae149653462c\u0027:\n  Add ANativeWindow API for directly drawing to the surface bits.\n"
    },
    {
      "commit": "289b9b62372ef52a06113b83dfb870e2c2fb325a",
      "tree": "e444446a331fdbe9b936a0c2570a609675468d05",
      "parents": [
        "2aaa9e9fc5ddc05cedbe530c7a41eca0e3a62b7a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 11:44:11 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 09 16:58:19 2010 -0700"
      },
      "message": "Add ANativeWindow API for directly drawing to the surface bits.\n\nAlso other cleanup and fixes:\n\n- We now properly set the default window format to 565.\n- New APIs to set the window format and flags from native code.\n- Tweaked glue for simpler handling of the \"destroy\" message.\n- Um, other stuff.\n\nChange-Id: Id7790a21a2fa9a19b91854d225324a7c1e7c6ade\n"
    },
    {
      "commit": "d8a6271bb1da4ee2a8ae126b532f1b5f302decb8",
      "tree": "5de91054c0b6d73707104eb6ae30d0c612e94665",
      "parents": [
        "2a57917a5cc10cbfea9a2f7ed7b040ce80c6705b",
        "49159f0748c704e53a7bd754f26113d9ab844a97"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 08 19:10:17 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 08 19:10:17 2010 -0700"
      },
      "message": "am 49159f07: am 74bf59b4: Merge \"Add new glue code for writing native apps.\" into gingerbread\n\nMerge commit \u002749159f0748c704e53a7bd754f26113d9ab844a97\u0027\n\n* commit \u002749159f0748c704e53a7bd754f26113d9ab844a97\u0027:\n  Add new glue code for writing native apps.\n"
    },
    {
      "commit": "85448bbecd4e0909eecfab15b7c3605f114d0427",
      "tree": "3380a9a85e321dc7ee4397dc1b4f22564af117d8",
      "parents": [
        "f7d2b4a2e096ae1f8ac3a2ed8b2f0e30a237f732"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 07 14:27:31 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 08 11:06:59 2010 -0700"
      },
      "message": "Add new glue code for writing native apps.\n\nThis factors out the boiler-plate code from the sample\napp to a common glue code that can be used for everyone\nwriting this style of app: a dedicated app thread that\ntakes care of waiting for events and processing them.\n\nAs part of doing this, ALooper has a new facility to allow\nregistration of fds that cause ALooper_pollOnce() to return\nthe fd that has data, allowing the app to drive the loop\nwithout callbacks.  Hopefully this makes some people feel better. :)\n\nAlso do some other cleanup of the ALooper API, plus some\nactual documentation.\n\nChange-Id: Ic53bd56bdf627e3ba28a3c093faa06a92be522b8\n"
    },
    {
      "commit": "97250d5c4ab5c36dc4f7cf1d9d48157ed934615d",
      "tree": "e1075093796bc528940a2159adc557e20c3b1edb",
      "parents": [
        "054e3d5e17378bc3419c8f80c3f204b270d733e8",
        "e24901d3adb28fff72821d4e8e2ccc25b2184550"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 07 09:14:57 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 07 09:14:57 2010 -0700"
      },
      "message": "am e24901d3: am 68267415: Add new native Looper API.\n\nMerge commit \u0027e24901d3adb28fff72821d4e8e2ccc25b2184550\u0027\n\n* commit \u0027e24901d3adb28fff72821d4e8e2ccc25b2184550\u0027:\n  Add new native Looper API.\n"
    },
    {
      "commit": "682674154e3fe88f6061245145f934f25f1a2eb8",
      "tree": "a105ce9f0ae4d88732bfc8fb1a52d4474f17bc86",
      "parents": [
        "8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 02 18:52:01 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 02 18:57:02 2010 -0700"
      },
      "message": "Add new native Looper API.\n\nThis allows us to avoid exposing the file descriptor of\nthe event queue; instead, you attach an event queue to\na looper.  This will also should allow native apps to be\nwritten without the need for a separate thread, by attaching\nthe event queue to the main thread\u0027s looper and scheduling\ntheir own messages there.\n\nChange-Id: I38489282635895ae2cbfacb88599c1b1cad9b239\n"
    },
    {
      "commit": "4847e630e5e740f6bf0e87b3cccbb655346edcb7",
      "tree": "42008f8882311fe1b984009bcc0247d055ebdb07",
      "parents": [
        "cc08bb8884d7ab720296cc63f8098249659c48b1",
        "39c921c6e5316696d8c61d1ee465f9b5f894c4ed"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 01 19:26:57 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 01 19:26:57 2010 -0700"
      },
      "message": "am 39c921c6: am 8ae5a8e7: Get to the point of being able to do native drawing.\n\nMerge commit \u002739c921c6e5316696d8c61d1ee465f9b5f894c4ed\u0027\n\n* commit \u002739c921c6e5316696d8c61d1ee465f9b5f894c4ed\u0027:\n  Get to the point of being able to do native drawing.\n"
    },
    {
      "commit": "8ae5a8e7c04c7b204b739dfcd5da9e2e0f83e1eb",
      "tree": "3967411cd4a849e239a6c79425e90de101c0caf4",
      "parents": [
        "f520411a35db5248934a4b50859ca72e3f865593"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 01 18:44:46 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 01 18:44:46 2010 -0700"
      },
      "message": "Get to the point of being able to do native drawing.\n\nA little cleanup.\n\nChange-Id: I37ef0557abf330d91d6fe47e81d062206b3bc346\n"
    },
    {
      "commit": "738639ccd0f12b06d17df3d3b3ee68f506311331",
      "tree": "b8a1c104c9683f03dfa1408e1467478531ff4e39",
      "parents": [
        "3cd310f18dd5e8dc451583319c67270bac4e4b4f",
        "58f35ff41601769ca4f357575a9385f16c01b991"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 01 16:04:02 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 01 16:04:02 2010 -0700"
      },
      "message": "am 58f35ff4: am 54a181b1: Make real API for native code to get its window.\n\nMerge commit \u002758f35ff41601769ca4f357575a9385f16c01b991\u0027\n\n* commit \u002758f35ff41601769ca4f357575a9385f16c01b991\u0027:\n  Make real API for native code to get its window.\n"
    },
    {
      "commit": "54a181b1a2b1517a9479b21fbf7705a688232faf",
      "tree": "90bf20d8f5f818d357c677cb713e964b920dea67",
      "parents": [
        "65c83b906d01c3c1493d0547757dbb16d4c3722a"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 18:35:14 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Jul 01 14:43:23 2010 -0700"
      },
      "message": "Make real API for native code to get its window.\n\nAdded implementation to use ANativeWindow and provide\nit to a NativeActivity.\n\nChange-Id: I890d71b6e15d4af71e6cf81b327961d7061ec1c2\n"
    },
    {
      "commit": "efcd77407b321498a43ca380c8f67b84eb5a2d6e",
      "tree": "7860ab6884ca2ed8911c4108cfa88f82c63718ea",
      "parents": [
        "01959f65520a69537a2d93f4e543b03705694ad9",
        "177c405a242e811b1010bd8382b5807ab8df31a8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 16:11:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 30 16:11:21 2010 -0700"
      },
      "message": "am 177c405a: am c6e1d880: Merge \"Introduce official public NativeWindow type.\" into gingerbread\n\nMerge commit \u0027177c405a242e811b1010bd8382b5807ab8df31a8\u0027\n\n* commit \u0027177c405a242e811b1010bd8382b5807ab8df31a8\u0027:\n  Introduce official public NativeWindow type.\n"
    },
    {
      "commit": "25a98b8e21f7840ae582ce0a4cde21694c4c94ec",
      "tree": "f7599e13f67ffaba8b1b888cbd62f420a5a87ebe",
      "parents": [
        "b6643d90e615b871c6d9e41d932a9fcf0d7d2156",
        "7f6c6e8ffa3c6e036bf8037012a930e52f54e296"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 15:44:58 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 15:44:58 2010 -0700"
      },
      "message": "resolved conflicts for merge of 7f6c6e8f to master\n\nChange-Id: Id9dddb78c51f16ff8c4b60339421c94fde506db2\n"
    },
    {
      "commit": "8b49bd1a2f8117e1c22884f0150e72cbcf838f32",
      "tree": "ec6e43ed118268b09cbb61c8eed02c757e9602ed",
      "parents": [
        "3c80a4a044865bdf1289c7896baffa1c082d835c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 13:56:17 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 15:32:04 2010 -0700"
      },
      "message": "Introduce official public NativeWindow type.\n\nNot yet hooked up to anything in the NDK, but requires renaming\nthe existing android_native_window_t type everywhere.\n\nChange-Id: Iffee6ea39c93b8b34e20fb69e4d2c7c837e5ea2e\n"
    },
    {
      "commit": "3c80a4a044865bdf1289c7896baffa1c082d835c",
      "tree": "557c89a685e672e44f90f55660da1f989d00a113",
      "parents": [
        "92dbad8ab0c8e242c4c3e52c339ed3296ae7901c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 29 19:20:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 10:49:40 2010 -0700"
      },
      "message": "Implement default key handling for native code.\n\nThe native code now maintains a list of all keys that may use\ndefault handling.  If the app finishes one of these keys\nwithout handling it, the key will be passed back off to Java\nfor default treatment.\n\nChange-Id: I6a842a0d728eeafa4de7142fae573f8c11099e18\n"
    },
    {
      "commit": "639061d9c29fb97646c083f719a26992a7d24d85",
      "tree": "19de773a4ae2f75d4171581be3913091a672140e",
      "parents": [
        "f42c181ecece995e23f91ac13d67f1a597340e98",
        "b5f05d0018d72531e40c2afadfee90e9bc0c8893"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 29 12:21:16 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 29 12:21:16 2010 -0700"
      },
      "message": "am b5f05d00: am 0934fbb6: Merge \"Update native activity \u0026 event APIs to follow correct conventions.\" into gingerbread\n\nMerge commit \u0027b5f05d0018d72531e40c2afadfee90e9bc0c8893\u0027\n\n* commit \u0027b5f05d0018d72531e40c2afadfee90e9bc0c8893\u0027:\n  Update native activity \u0026 event APIs to follow correct conventions.\n"
    },
    {
      "commit": "2e9f93e8db509d5236229dc8540e0904c5dbb9f5",
      "tree": "9aa6aa2c4a59b808dd99604afb23eb5a0096d9a2",
      "parents": [
        "059f009d970fb37ac4e408dcf8e1d2d2cdcf0a84"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon Jun 28 15:27:30 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 29 10:43:54 2010 -0700"
      },
      "message": "Update native activity \u0026 event APIs to follow correct conventions.\n\nChange-Id: Ie64fb3a9c68bc9c117fa5621b75d1f609e304e0e\n"
    },
    {
      "commit": "320742b15a710ede57862eee170945da26ef0172",
      "tree": "5c4b08874acac30f86b217af59938d0254688bc1",
      "parents": [
        "a58a7aecf44a5c818b9519240a2129e27ffdf294",
        "e3e2883f2232007174ead562610eb01201890d9b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 23 10:32:25 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 23 10:32:25 2010 -0700"
      },
      "message": "am e3e2883f: am e24a60aa: Merge \"First stab at attaching native event dispatching.\" into gingerbread\n\nMerge commit \u0027e3e2883f2232007174ead562610eb01201890d9b\u0027\n\n* commit \u0027e3e2883f2232007174ead562610eb01201890d9b\u0027:\n  First stab at attaching native event dispatching.\n"
    },
    {
      "commit": "a95e4cb62f3642cb190d032dbf7dc40d9ecc6973",
      "tree": "ae4437444a3d3ebeff48dabfd1e9c11fc14620ac",
      "parents": [
        "ef730e6ececa96a3e0576140eea707f7c48cd66c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jun 18 18:09:33 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jun 22 11:21:50 2010 -0700"
      },
      "message": "First stab at attaching native event dispatching.\n\nProvides the basic infrastructure for a\nNativeActivity\u0027s native code to get an object representing\nits event stream that can be used to read input events.\n\nStill work to do, probably some API changes, and reasonable\ndefault key handling (so that for example back will still\nwork).\n\nChange-Id: I6db891bc35dc9683181d7708eaed552b955a077e\n"
    },
    {
      "commit": "4e74ae3d5b27d917ea26d0929015f9fdc64af412",
      "tree": "228cc5893a99c7def050024be582e53ad644a3d3",
      "parents": [
        "733c6f2e9bff13e24dcb468dd05219ec6ea8aa96",
        "42bb545a54d89f0ddbb230d7a01ea4210c0f6c00"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 13:32:45 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jun 17 13:32:45 2010 -0700"
      },
      "message": "am 42bb545a: am 5c225b16: Even more native input dispatch work in progress.\n\nMerge commit \u002742bb545a54d89f0ddbb230d7a01ea4210c0f6c00\u0027\n\n* commit \u002742bb545a54d89f0ddbb230d7a01ea4210c0f6c00\u0027:\n  Even more native input dispatch work in progress.\n"
    },
    {
      "commit": "5c225b1680e696ae8bbf505a1997d6f720672f74",
      "tree": "932326fd02ee91d8a64adfcc9415027646c56563",
      "parents": [
        "3a0146cd29fae3c5bc29d8d535d67826284f8cc9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 16 01:53:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jun 17 13:27:16 2010 -0700"
      },
      "message": "Even more native input dispatch work in progress.\n\nAdded more tests.\nFixed a regression in Vector.\nFixed bugs in pointer tracking.\nFixed a starvation issue in PollLoop when setting or removing callbacks.\nFixed a couple of policy nits.\n\nModified the internal representation of MotionEvent to be more\nefficient and more consistent.\n\nAdded code to skip/cancel virtual key processing when there are multiple\npointers down.  This helps to better disambiguate virtual key presses\nfrom stray touches (such as cheek presses).\n\nChange-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c\n"
    },
    {
      "commit": "8e03b7566c42621fda01186b66b019142eb84fbf",
      "tree": "17c45ea04288d2d57053ea740ae1cf332a4308c8",
      "parents": [
        "5ddd127d5a38d80c0d8087d1770f41f61f84f048",
        "9e660c8201ab9aeead5d78a75c2bbfecc374858f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 19:16:55 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 19:16:55 2010 -0700"
      },
      "message": "resolved conflicts for merge of 9e660c82 to master\n\nChange-Id: Ic4bd85cbaa5b9a10dcb474a0dad46490bf967e43\n"
    },
    {
      "commit": "46b9ac0ae2162309774a7478cd9d4e578747bfc2",
      "tree": "46ad021a41e25ca9f1250b709a29b724dc6b504d",
      "parents": [
        "f62c57d684b83df7d2817db976c0afdb500ae92a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 22 18:58:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 13 17:42:16 2010 -0700"
      },
      "message": "Native input dispatch rewrite work in progress.\n\nThe old dispatch mechanism has been left in place and continues to\nbe used by default for now.  To enable native input dispatch,\nedit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy.\n\nIncludes part of the new input event NDK API.  Some details TBD.\n\nTo wire up input dispatch, as the ViewRoot adds a window to the\nwindow session it receives an InputChannel object as an output\nargument.  The InputChannel encapsulates the file descriptors for a\nshared memory region and two pipe end-points.  The ViewRoot then\nprovides the InputChannel to the InputQueue.  Behind the\nscenes, InputQueue simply attaches handlers to the native PollLoop object\nthat underlies the MessageQueue.  This way MessageQueue doesn\u0027t need\nto know anything about input dispatch per-se, it just exposes (in native\ncode) a PollLoop that other components can use to monitor file descriptor\nstate changes.\n\nThere can be zero or more targets for any given input event.  Each\ninput target is specified by its input channel and some parameters\nincluding flags, an X/Y coordinate offset, and the dispatch timeout.\nAn input target can request either synchronous dispatch (for foreground apps)\nor asynchronous dispatch (fire-and-forget for wallpapers and \"outside\"\ntargets).  Currently, finding the appropriate input targets for an event\nrequires a call back into the WindowManagerServer from native code.\nIn the future this will be refactored to avoid most of these callbacks\nexcept as required to handle pending focus transitions.\n\nEnd-to-end event dispatch mostly works!\n\nTo do: event injection, rate limiting, ANRs, testing, optimization, etc.\n\nChange-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25\n"
    },
    {
      "commit": "01f2f960e73701633a169fbb2b777a4915a5b12c",
      "tree": "6dac2d44f0b9df824a9fe3912e6b89d5066f7c42",
      "parents": [
        "28d01123754b10dc467a344650238ba583159ec9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu May 20 16:57:34 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 11 18:02:51 2010 -0700"
      },
      "message": "Improved native TTS interface header.\n\nThe purpose of this patch is to add a C-based ABI that can be exposed by the NDK\nfor developers wanting to write a TTS Engine. This replaces the C++ ABI that is\ncurrently under frameworks/base/include/tts/TtsEngine.h but is *binary* compatible\nwith it.\n\nAs a consequence, the svox pico plugin under external/svox/pico/tts/, which\nlinks against tts/TtsEngine.h can be loaded by the TTS service properly.\n\nAnother patch would modify the pico tts to use \u003candroid/tts.h\u003e, then we will\nbe able to get rid of \u003ctts/TtsEngine.h\u003e in the source tree.\n\nChange-Id: I16844cef9b5b006cc32655a29e4f9f193c8c1a91\n"
    },
    {
      "commit": "74323fd1ab8eb11beea286d5c213c63e4b803141",
      "tree": "6c3108b7da5b5fb32d2b05ff3126b102a138b6d8",
      "parents": [
        "4ec730cabb68ee8347c6aa5dc929b09651275aca"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 18 17:56:23 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 18 18:16:35 2010 -0700"
      },
      "message": "Update NativeActivity to allow direct surface access.\n\nNo actual native API for using a surface, but it\u0027s a step.\n\nChange-Id: I627f26b705abc7a05edf9117411abfacf0fae64a\n"
    }
  ],
  "next": "dc8a7f69d7df5f1ca29763995a0d55acf7936fc6"
}
