)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "dc8a7f69d7df5f1ca29763995a0d55acf7936fc6",
      "tree": "8a136169f8ff4548bfabadf95e3305589ff21677",
      "parents": [
        "400907086ac1a304daa50a72013ac27a9c63b26b"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 10 11:29:34 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 18 10:46:33 2010 -0700"
      },
      "message": "Add new API to take over a window\u0027s Surface.\n\nChange-Id: Iad6245faadc95f19ea63c8e229a1c02e9188f69e\n"
    },
    {
      "commit": "ea5477c85445d743284b365b90171c867315ec48",
      "tree": "4f18d74733461452991c54d71c82a34348815d65",
      "parents": [
        "73bbcc4d025bd64401517943200f46c0dfecdf99",
        "89ad07b048ff035394596d6a8916f639f3f0b868"
      ],
      "author": {
        "name": "Dan Bornstein",
        "email": "danfuzz@android.com",
        "time": "Thu May 06 12:43:52 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 06 12:43:52 2010 -0700"
      },
      "message": "am 89ad07b0: am 42ee86e6: Merge \"For issue #2651381, allow library prelinking.\" into froyo\n\nMerge commit \u002789ad07b048ff035394596d6a8916f639f3f0b868\u0027 into kraken\n\n* commit \u002789ad07b048ff035394596d6a8916f639f3f0b868\u0027:\n  For issue #2651381, allow library prelinking.\n"
    },
    {
      "commit": "782e9fd7492e607f2f71c13da5d86ee99ae03544",
      "tree": "69ff4ee3d04d46b3601ad2f3d96d71df25b7c4f7",
      "parents": [
        "2d315667ab733375d8c696f8c2f155bc1de9e4a2"
      ],
      "author": {
        "name": "Dan Bornstein",
        "email": "danfuzz@android.com",
        "time": "Wed May 05 18:23:05 2010 -0700"
      },
      "committer": {
        "name": "Dan Bornstein",
        "email": "danfuzz@android.com",
        "time": "Wed May 05 18:23:05 2010 -0700"
      },
      "message": "For issue #2651381, allow library prelinking.\n\nChange-Id: I1cb467a158e21fc02cac6af585ac8d27c2bf42de\n"
    },
    {
      "commit": "69969e48f2bca9339662dddfacff0bbf6374ed7f",
      "tree": "073be8188794a4542611e624a05fbbefaef98fc3",
      "parents": [
        "f24e66dbb99b52e3ef8e56b66c807ff1d5129fca"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue May 04 11:40:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed May 05 15:17:26 2010 -0700"
      },
      "message": "First pass at NativeActivity.\n\nThis is a rough sketch of the new pure-native API, which you can\nuse through a NativeActivity in your manifest (no Java code in\nthe .apk needed!).\n\nIntentionally no docs yet, the API is still being seriously\nmessed with.  But it works.\n\nChange-Id: I0e916d58a0d159ecaf3689e41834eb8dc681c0c0\n"
    },
    {
      "commit": "3227631fe99c271a47f9f5135c4ffe1bec3e72f0",
      "tree": "f8b018711c55c14b6ef364b580d7f14ccbad31dd",
      "parents": [
        "3c4a1ebc19abba06af565071c243e55ba6eef585"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Feb 04 12:15:09 2010 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Feb 04 15:31:19 2010 -0800"
      },
      "message": "Move the NDK graphics wrapper (libjnigraphics) to frameworks/base/native\n\nChange-Id: I2a5adde9f8e4683c4b4526a29ad276c3e581e029\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    }
  ]
}
