)]}'
{
  "log": [
    {
      "commit": "bb3fcba0caf697f1d238a2cbefdf1efe06eded99",
      "tree": "61dccaf85759b22557e978672b81bd686089e087",
      "parents": [
        "7f5b99676f2fda710c2182cae16f6b9094a1d98c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon Jun 06 19:23:05 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon Jun 06 19:23:05 2011 -0700"
      },
      "message": "Touch pad improvements.\nBug: 4124987\n\nOnly show one spot per touch point instead of one spot per\nfinger for multitouch gestures.\n\nTweaked the pointer acceleration curves.\n\nDissociated the hover/tap timeouts from the \"tap\" timeout\nsince they mean very different things.\n\nChange-Id: I7c2cbd30feeb65ebc12f6c7e33a67dc9a9f59d4c\n"
    },
    {
      "commit": "1a84fd1fb7a51f3fe4f8865e1cdd09f3490f696c",
      "tree": "cf9491aedb10c8355e62ae8384db0e9f005beb1c",
      "parents": [
        "19c97d46fb57f87ff45d9e6ea7122b4eb21ede8c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Thu Jun 02 01:26:32 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Thu Jun 02 15:39:21 2011 -0700"
      },
      "message": "Add a preference panel for mouse speed.\n\nBug: 4124987\nChange-Id: I3ce175d268a1d043cf5878481261b1049a15a149\n"
    },
    {
      "commit": "19c97d46fb57f87ff45d9e6ea7122b4eb21ede8c",
      "tree": "4cb7adbcc382269d7b0eeddd0043b9a9e0c71a7a",
      "parents": [
        "2969b51132b80c873663aa2472b21d3e95845927"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed Jun 01 12:33:19 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Thu Jun 02 14:12:05 2011 -0700"
      },
      "message": "Implement pointer acceleration.\n\nBug: 4124987\nChange-Id: I1f31a28f1594c55302ccabe13fe3ca6d2ff71d50\n"
    },
    {
      "commit": "214eaf48878bba00cbd5831871bcbd82632b6e34",
      "tree": "e981793f6a27d6aa789d92fe49ea346433452ae0",
      "parents": [
        "4e3f7206eb0af14d3da4c03bdf9918161774e726"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Thu May 26 19:17:02 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 31 15:00:59 2011 -0700"
      },
      "message": "Use ViewConfiguration to seed input system configuration.\n\nFix bug where the pointer presentation would be updated on\nany input reader timeout rather than only when a pointer gesture\nis in progress.\n\nBug: 4124987\nChange-Id: Ie9bba4a0b3228d55e45e65fa2ede5cd6ba887a08\n"
    },
    {
      "commit": "4e3f7206eb0af14d3da4c03bdf9918161774e726",
      "tree": "e215aef3d33b636e7478ff0a3be97d0f4a3d7aa0",
      "parents": [
        "2a108403803bd30bee1c019060c208fb8c52c10c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 31 15:00:18 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 31 15:00:58 2011 -0700"
      },
      "message": "Button state should reflect actual buttons. (DO NOT MERGE)\n\nBug: 4124987\nChange-Id: If0585bd1432c8c61ed0c9a6a4f6de4a62e3f6e53\n"
    },
    {
      "commit": "538881e18323a0c983bd8809f8c3b1cdeeeab8a6",
      "tree": "da646d2cb739b3eb72ee78360b062ccda762dc07",
      "parents": [
        "2cb7981e70dd1d4e4368dbef8797d336e0797b61"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 18:23:38 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 19:08:49 2011 -0700"
      },
      "message": "Touch pad UX improvements.\n\nFade the pointer spot when swiping or performing a freeform\ngesture.\n\nSupport configuring the gesture mode in the device IDC file.\n\nAdded workaround for devices that report individual finger\nmovements one at a time instead of all at once.\n\nBug: 4124987\nChange-Id: I44628b00382ad59306e4ec5c4717d69cc6fbebb8\n"
    },
    {
      "commit": "2cb7981e70dd1d4e4368dbef8797d336e0797b61",
      "tree": "4dbab6702f87bedd2c1898690857abd5d5521155",
      "parents": [
        "b416e241db85b678cdfcdee1c74a7f356a5554ef"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 18:52:21 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 18:53:49 2011 -0700"
      },
      "message": "Fix deadlock in dispatcher. (DO NOT MERGE)\n\nThis regression was caused due to a bad cherry-pick / merge.\n\nChange-Id: I79e84285bbfd4cd4b66681461543fb185b60d3ba\n"
    },
    {
      "commit": "b416e241db85b678cdfcdee1c74a7f356a5554ef",
      "tree": "0cc3e409f5c0ed645027bf3c2f86663496659442",
      "parents": [
        "325bd07b311f8ba68079000e9fe8afbcc076d7b6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 24 15:17:57 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 14:37:18 2011 -0700"
      },
      "message": "Fix bug reporting presence of orientation axis. (DO NOT MERGE)\n\nChange-Id: I20aecca392d2843601e6e0ec4ac913c8ccdbbf89\n"
    },
    {
      "commit": "325bd07b311f8ba68079000e9fe8afbcc076d7b6",
      "tree": "294be252cd5b4a197e8709b014f436bedaf200d0",
      "parents": [
        "86ea1f5f521981d075aef56f11693e4f3bc32fdb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 19 21:20:10 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 14:37:17 2011 -0700"
      },
      "message": "Add tap/drag touchpad gesture. (DO NOT MERGE)\n\nThe mapper sends a DOWN when the finger is released then starts\na short timer.  If the finger is not pressed again before the timer\nelapses, then the mapper sends an UP to complete the tap.  If the\nfinger is pressed again then the mapper starts sending MOVEs\nas part of a drag.\n\nDouble/triple taps work as intended because we also start watching\nfor a new tap when the finger is pressed again.  If a new tap\noccurs the old tap is also finished.  So each individual finger\nshort press/release cycle constitutes a distinct tap.\n\nChange-Id: Id0a6ee10dd27e723f6cb04e56b43939abe9e940c\n"
    },
    {
      "commit": "86ea1f5f521981d075aef56f11693e4f3bc32fdb",
      "tree": "72e1e44513d3e9e204a4fbd2855a079822e949eb",
      "parents": [
        "a6dbfdd3a858aac52cc87f80f91e8eef7d613605"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 12 22:39:53 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 14:37:17 2011 -0700"
      },
      "message": "Initial checkin of spot presentation for touchpad gestures. (DO NOT MERGE)\n\nAdded a new PointerIcon API (hidden for now) for loading\npointer icons.\n\nFixed a starvation problem in the native Looper\u0027s sendMessage\nimplementation which caused new messages to be posted ahead\nof old messages sent with sendMessageDelayed.\n\nRedesigned the touch pad gestures to be defined in terms of\nmore fluid finger / spot movements.  The objective is to reinforce\nthe natural mapping between fingers and spots which means there\nmust not be any discontinuities in spot motion relative to\nthe fingers.\n\nRemoved the SpotController stub and folded its responsibilities\ninto PointerController.\n\nChange-Id: Ib647dbd7a57a7f30dd9c6e2c260df51d7bbdd18e\n"
    },
    {
      "commit": "a6dbfdd3a858aac52cc87f80f91e8eef7d613605",
      "tree": "2807e5662e74b090e880588f39cdc1caf4e01e0e",
      "parents": [
        "5ced76a14350db56f1a80f00076f8be3d982c389"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 11 11:54:25 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 14:37:16 2011 -0700"
      },
      "message": "Add a sprite controller. (DO NOT MERGE)\n\nRefactored PointerController to extract the surface management\ncode to a new component called a SpriteController so that it can\nbe used to move finger tracking spots around the screen as well.\nThe SpriteController is designed to fully decouple the client from\nany latency introduced by surface transactions and drawing.\nAll sprite updates are performed asynchronously on the Looper using\na copy of the sprite state.\n\nAdded a stub SpotController implementation for touch pad UX.\nIt will be implemented in a subsequent patch.\n\nFixed a little bug in pointer orientation changes when entering\nDISPLAY_ORIENTATION_90 the x offset was clobbered.\n\nChange-Id: I6d59d80df9af61e93af50290e7776337d10c9d5a\n"
    },
    {
      "commit": "5ced76a14350db56f1a80f00076f8be3d982c389",
      "tree": "e4999223efed26ef0864761a1a47bafaf99e1dac",
      "parents": [
        "7157f6fe13ab7e2fef44cc33c95d1c531418220f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 24 11:23:27 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 14:37:16 2011 -0700"
      },
      "message": "Coalesce input events that arrive faster than 333Hz. (DO NOT MERGE)\n\nSome drivers report individual finger updates one at a time\ninstead of all at once.  When 10 fingers are down, this can\ncause the framework to have to handle 10 times as many events\neach with 10 times as much data.  Applications like\nPointerLocation would get significantly bogged down by all\nof the redundant samples.\n\nThis change coalesces samples that are closely spaced in time,\nbefore they are dispatched, as part of the motion event batching\nprotocol.\n\nIncreased the size of the InputChannel shared memory buffer so\nthat applications can catch up faster if they accumulate a\nbacklog of samples.\n\nChange-Id: Ibc6abf8af027d9003011ac75caa12941080caba3\n"
    },
    {
      "commit": "7157f6fe13ab7e2fef44cc33c95d1c531418220f",
      "tree": "f0c10ae8a4fbd2fa351c61f824eea908fbf45e90",
      "parents": [
        "d0132e8e187ebf69bf4d2d6d0ef0027ff3f7a727"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 06 17:19:48 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Wed May 25 14:37:15 2011 -0700"
      },
      "message": "Allow batching samples onto the pending motion event. (DO NOT MERGE)\n\nThis enlarges the window of opportunity for batching to\nencompass time spent for the window to become ready (while it is\nbusy processing the last event).\n\nChange-Id: I8870cc3081d27a4de659fb4e375f888fe966460b\n"
    },
    {
      "commit": "524ee64b91bc123e1ccfc881a0f1a1e84722251d",
      "tree": "c3f358e5a7afc91dd63265e01ecbf3db781f58eb",
      "parents": [
        "22d789d580a4ab5bed83c0ed698d2f5bc721e176"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 29 15:11:34 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 24 15:21:46 2011 -0700"
      },
      "message": "Support chorded fallback keys. (DO NOT MERGE)\n\nAlso be more careful about canceling fallback keys during focus\ntransitions, when the application handles the key, or when the\npolicy decides to do something different.\n\nFixed a crash due to JNI CallObjectMethod returning an undefined\nvalue (not null) when an exception is thrown.\n\nFixed a crash due to the policy trying to create a Dialog for\nrecent apps on the dispatcher thread.  It should happen on the\npolicy\u0027s Looper instead.\n\nBug: 4187302\nChange-Id: I043f82913830f411b3bb4018d6422467b6ca454f\n"
    },
    {
      "commit": "22d789d580a4ab5bed83c0ed698d2f5bc721e176",
      "tree": "9d848a0918aa939b457a6fa92bedf43612a50cba",
      "parents": [
        "dbf8d27f4c32e20e132e90ad713c6ebaf71d7756"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 25 11:58:46 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 24 15:21:46 2011 -0700"
      },
      "message": "Fix focused application handle. (DO NOT MERGE)\n\nFix a bug where we were always setting the focused application\nhandle to NULL.  This broke ANR processing while starting\napplications and caused input events to be dropped while\nstarting applications.\n\nBug: 4174573\nChange-Id: Ice7ce3a2b65219568a8227fc1383bafb294666b5\n"
    },
    {
      "commit": "dbf8d27f4c32e20e132e90ad713c6ebaf71d7756",
      "tree": "a7dbe3db8501916c9b564c12bd997b59335c9182",
      "parents": [
        "68d6075b4ad2205c10064c78cde552e3210cca91"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 18 18:14:26 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 24 15:21:21 2011 -0700"
      },
      "message": "Optimize EventHub to process events in big chunks. (DO NOT MERGE)\n\nWhen 10 fingers are down, reduces the CPU time spent by the InputReader\nthread from ~30% to ~5% on Stingray.\n\nChange-Id: I42ee5c67b8521af715cbab43e763a4af4eb1f914\n"
    },
    {
      "commit": "68d6075b4ad2205c10064c78cde552e3210cca91",
      "tree": "a8f8e79d5bddb76dd0578a02c17646a05021bbd9",
      "parents": [
        "5b2b4d9c0a56c4b5e869c828a6c36a1b9e27d61b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 17 01:34:19 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon May 23 17:20:42 2011 -0700"
      },
      "message": "Refactor how timeouts are calculated. (DO NOT MERGE)\n\nAdded a timeout mechanism to EventHub and InputReader so that\nInputMappers can request timeouts to perform delayed processing of\ninput when needed.\n\nChange-Id: I89c1171c9326c6e413042e3ee13aa9f7f1fc0454\n"
    },
    {
      "commit": "96ad3979f328a1aa098917ca1c35575e85345526",
      "tree": "a703eeeda8430c955738efd047616bc6a47a32e1",
      "parents": [
        "40277df7c33c0fc381eec589c768fe86de4b4404"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 09 17:39:48 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon May 23 17:19:38 2011 -0700"
      },
      "message": "Use touch pad gestures to manipulate the pointer. (DO NOT MERGE)\n\n1. Single finger tap performs a click.\n2. Single finger movement moves the pointer (hovers).\n3. Button press plus movement performs click or drag.\n   While dragging, the pointer follows the finger that is moving\n   fastest.  This is important if there are additional fingers\n   down on the touch pad for the purpose of applying force\n   to an integrated button underneath.\n4. Two fingers near each other moving in the same direction\n   are coalesced as a swipe gesture under the pointer.\n5. Two or more fingers moving in arbitrary directions are\n   transformed into touches in the vicinity of the pointer.\n   This makes scale/zoom and rotate gestures possible.\n\nAdded a native VelocityTracker implementation to enable intelligent\nswitching of the active pointer during drags.\n\nChange-Id: I7b7ddacc724fb1306e1590dbaebb740d3130d7cd\n"
    },
    {
      "commit": "4fb76253f255f0adb8a64835af37bb9176ee4016",
      "tree": "2585ba2501180f9b02a0ab6bc45a4df668ae4bbc",
      "parents": [
        "0ed2e845db3f6bc7bc12a08ada18363942c2fb3d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Fri May 13 12:51:12 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Fri May 13 12:51:12 2011 -0700"
      },
      "message": "Fix bounds check.\nBug: 4413945\n\nAlso remove dead code from header file.\n\nChange-Id: I4e9fc9d7f8612fedb436e62649d308bd737ed138\n"
    },
    {
      "commit": "e7d25b74b0f5c8ad32225c7a3e98a0d1717eb7c7",
      "tree": "652330584e9291210cd781f118afeb8625ef92f3",
      "parents": [
        "0c6cbf410a642f6e9cea7cca0a6e53a4a3cdd324"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 21:19:26 2011 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 21:19:26 2011 -0700"
      },
      "message": "Fix scaling of batched motion events.\n\nChange-Id: I1e070c936f7b2e8f1bb7ebae62b1df0aa6998b82\n"
    },
    {
      "commit": "e2515eebf42c763c0a2d9f873a153711778cfc17",
      "tree": "ee159940f05c439d0524771bfbfe6b551c82c2d4",
      "parents": [
        "158e3582c03ab9e0221718da20fc8854bb9216d0"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Apr 27 18:52:56 2011 -0400"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Mon May 09 17:03:24 2011 -0700"
      },
      "message": "Better compat mode part one: start scaling windows.\n\nFirst step of improving app screen size compatibility mode.  When\nrunning in compat mode, an application\u0027s windows are scaled up on\nthe screen rather than being small with 1:1 pixels.\n\nCurrently we scale the application to fill the entire screen, so\ndon\u0027t use an even pixel scaling.  Though this may have some\nnegative impact on the appearance (it looks okay to me), it has a\nbig benefit of allowing us to now treat these apps as normal\nfull-screens apps and do the normal transition animations as you\nmove in and out and around in them.\n\nThis introduces fun stuff in the input system to take care of\nmodifying pointer coordinates to account for the app window\nsurface scaling.  The input dispatcher is told about the scale\nthat is being applied to each window and, when there is one,\nadjusts pointer events appropriately as they are being sent\nto the transport.\n\nAlso modified is CompatibilityInfo, which has been greatly\nsimplified to not be so insane and incomprehendible.  It is\nnow simple -- when constructed it determines if the given app\nis compatible with the current screen size and density, and\nthat is that.\n\nThere are new APIs on ActivityManagerService to put applications\nthat we would traditionally consider compatible with larger screens\nin compatibility mode.  This is the start of a facility to have\na UI affordance for a user to switch apps in and out of\ncompatibility.\n\nTo test switching of modes, there is a new variation of the \"am\"\ncommand to do this: am screen-compat [on|off] [package]\n\nThis mode switching has the fundamentals of restarting activities\nwhen it is changed, though the state still needs to be persisted\nand the overall mode switch cleaned up.\n\nFor the few small apps I have tested, things mostly seem to be\nworking well.  I know of one problem with the text selection\nhandles being drawn at the wrong position because at some point\nthe window offset is being scaled incorrectly.  There are\nprobably other similar issues around the interaction between\ntwo windows because the different window coordinate spaces are\ndone in a hacky way instead of being formally integrated into\nthe window manager layout process.\n\nChange-Id: Ie038e3746b448135117bd860859d74e360938557\n"
    },
    {
      "commit": "199d1c131d29b5356f71fbd7826a592c1dd8575f",
      "tree": "b02c7ab5a0662020447a3324c7a09c1d4294c5e0",
      "parents": [
        "2f1f2248c8439adbd686810e306c55f9e6a5abc3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:48:13 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 14:43:12 2011 -0700"
      },
      "message": "Fix missing AOSP copyright headers for more files\n\no Update the copyright date on InputDispatcher_test.cpp and InputReader_test.cpp\n  because these two files were moved from other places to the current location,\n  and were actually created in 2010.\n\nbug - 4119349\n\nChange-Id: Ic93b81ddafb58e9e72a2e9e02ca3d9f173d6dca7\n"
    },
    {
      "commit": "8e9d4431d6a97a08d7dc9612c68ffd0812dfdc68",
      "tree": "37fbaf7f7503d8269dc8bedf7d3d153b8e475314",
      "parents": [
        "0837fde9fd9e29f8ef66a3fe00764e15a6f3d515"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Mar 12 19:46:59 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 17 00:36:35 2011 -0700"
      },
      "message": "Fix dangling pointer when device closed just after opening.\n\nBug: 4088239\nChange-Id: I210b918370357560a5ace8ea8dd7601255487e88\n"
    },
    {
      "commit": "efd3266b719eed5f1b217021c0a9e76e4b274b06",
      "tree": "f76032f2a0bdfdc9910860063455116a9c792687",
      "parents": [
        "9e8e40cb5f8aeb0702002eee60d1ce394bf699ee"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 08 15:13:06 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 09 18:30:28 2011 -0800"
      },
      "message": "Input improvements and bug fixes.\n\nAssociate each motion axis with the source from which it comes.\nIt is possible for multiple sources of the same device to define\nthe same axis.  This fixes new API that was introduced in MR1.\n(Bug: 4066146)\n\nFixed a bug that might cause a segfault when using a trackball.\n\nOnly fade out the mouse pointer when touching the touch screen,\nignore other touch pads.\n\nChanged the plural \"sources\" to \"source\" in several places in\nthe InputReader where we intend to refer to a particular source\nrather than to a combination of sources.\n\nImproved the batching code to support batching events from different\nsources of the same device in parallel.  (Bug: 3391564)\n\nChange-Id: I0189e18e464338f126f7bf94370b928e1b1695f2\n"
    },
    {
      "commit": "9e8e40cb5f8aeb0702002eee60d1ce394bf699ee",
      "tree": "7fe006882f5f36333fd9f9dcbae69801d6d41d5b",
      "parents": [
        "18955491ee52aad9bfe6f06e46da77aed6ee092a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 03 03:39:29 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 09 18:30:28 2011 -0800"
      },
      "message": "Recognize 3D joysticks.  (DO NOT MERGE)\n\nChange-Id: Idf7799ea90fa07677850d40ee1aec39220ded372\n"
    },
    {
      "commit": "9626b14a283ef82d16636cf5fb5ba8bb4d30381e",
      "tree": "ad6e1a8c87412308cff13d5a727b179ab301dfee",
      "parents": [
        "924c4d47774fa7d8a5ce659d12291ef7df82ee05"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Mar 03 02:09:54 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 09 02:46:45 2011 -0800"
      },
      "message": "Fix off by one errors in touch motion ranges.  (DO NOT MERGE)\n\nReport inclusive minimum and maximum ranges for all\naxes including X and Y.\n\nSet mouse pointer bounds to 0..width-1, 0..height-1.\n\nRotate touch and mouse positions more carefully, paying attention\nto the maximum bounds when calculating the complement of an axis.\n\nSimplified the InputReader somewhat and removed support for a\ncouple of poorly defined input device configuration parameters.\nWe now assume that the touch device provides useful absolute axis\nranges for the X and Y axes since the alternative does not actually\nmake sense.\n\nBug: 3413541\nChange-Id: I121d28a125c4f9618cb283dc460d33ff1a907023\n"
    },
    {
      "commit": "924c4d47774fa7d8a5ce659d12291ef7df82ee05",
      "tree": "0e28a65ce51d22439116d8c56b091d1ae232998a",
      "parents": [
        "696e66e44b89ca812137a31a1eab09bb8e84aa95"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Mar 07 16:40:47 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 09 02:46:45 2011 -0800"
      },
      "message": "Support POLICY_FLAG_ALT et. al.  (DO NOT MERGE)\n\nChange-Id: Ida3b8300764623662052f80095973186cb9d4616\n"
    },
    {
      "commit": "8529745b27877d98a0c76692295a3fcac238b1e6",
      "tree": "0327e434025461d9ed376ef6982855fd7f1e5a35",
      "parents": [
        "54bb98698a3550250b332b2f4d756b1a5c7473f5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 04 13:07:49 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 04 19:12:41 2011 -0800"
      },
      "message": "Joystick tweaks. (DO NOT MERGE)\n\nEnsure that the joystick can always reach -1.0, 0.0 and 1.0 positions\neven when noise filtering is applied.  (Bug: 3514510)\n\nAdd support for a few more standard axes.\n\nAdd additional mapping modes for axes.\nSome axes are inverted from standard interpretation\nor are actually intended to be split into two distict axes\nsuch as left/right trigger controls or accelerator/brake.\n\nAdd key layout file for a G25 racing wheel and XBox 360 controller\nto tweak behavior.  They work fine without them but the axis mappings\nare not ideal.\n\nChange-Id: I0fddd90309af4dc14d35f34fe99ed6e521c0b7c7\n"
    },
    {
      "commit": "f634ded277f246bd9568e9b7dcad40790767c6ab",
      "tree": "dbcebd2019a56b2d301e4264bdf02032d94408f1",
      "parents": [
        "6e71c954faff34b78a2952436b4f48d84a8c20cd"
      ],
      "author": {
        "name": "makarand.karvekar",
        "email": "makarand.karvekar@motorola.com",
        "time": "Wed Mar 02 15:41:03 2011 -0600"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Thu Mar 03 17:01:43 2011 -0800"
      },
      "message": "Set last event time to previous event batch delivery time to apps\n\nDetermination of the last event time. Currently, uses\nthe time that the first event in the previous batch that\nwas sent from hardware. This produces inconsistent timing\nintervals for event delivery to apps. Now, use the time that the\nprevious batch was delivered to the application.\n\nOriginal Author: Stephen Moore \u003csteve.moore@motorola.com\u003e\nSigned-off-by: makarand.karvekar \u003cmakarand.karvekar@motorola.com\u003e\n\nChange-Id: I2a3701915702d622dc04fbf4bbd4918a9ebe8856\n"
    },
    {
      "commit": "e2e012683d6f35f5eedfd0c39167ea78e32e2650",
      "tree": "9dc51c3b108de52fd7bc374ae79fa88e930282eb",
      "parents": [
        "55acdf7dcd0cf5b9aacfe48808e98056c7d60e5b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 20:34:30 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 20:34:30 2011 -0800"
      },
      "message": "Only set KeyEvent long press flag when repeat count equals 1.\n\nThis fixes a Gingerbread regression.\n\nBug: 3507021\nChange-Id: I8c2acb35be718fea7e996175c1407e84315d17ef\n"
    },
    {
      "commit": "56194ebec6212e229f4ccdaa4b187166d20013ef",
      "tree": "51276000061ba703b6ddda32ecce3ce10a06f4f5",
      "parents": [
        "05dc66ada6b61a6bdf806ffaa62617ac5394695d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 19:23:13 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 19:57:07 2011 -0800"
      },
      "message": "Wake screen from external HID peripherals.\n\nAdded some plumbing to enable the policy to intercept motion\nevents when the screen is off to handle wakeup if needed.\n\nAdded a basic concept of an external device to limit the scope\nof the wakeup policy to external devices only.  The wakeup policy\nfor internal devices should be based on explicit rules such as\npolicy flags in key layout files.\n\nMoved isTouchEvent to native.\n\nEnsure the dispatcher sends the right event type to userActivity\nfor non-touch pointer events like HOVER_MOVE and SCROLL.\n\nBug: 3193114\nChange-Id: I15dbd48a16810dfaf226ff7ad117d46908ca4f86\n"
    },
    {
      "commit": "05dc66ada6b61a6bdf806ffaa62617ac5394695d",
      "tree": "a7e395476241706de31498185a5c2ccb979bcb54",
      "parents": [
        "e43111fad31ad8e36a66df52a8c6002799996413"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 14:41:58 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Mar 02 15:37:57 2011 -0800"
      },
      "message": "Fade out the mouse pointer after inactivity or other events.\n\nFades out the mouse pointer:\n- after 15 seconds of inactivity normally\n- after 3 seconds of inactivity in lights out mode\n- after a non-modifier key down\n- after a touch down\n\nExtended the native Looper to support enqueuing time delayed\nmessages.  This is used by the PointerController to control\npointer fade timing.\n\nChange-Id: I87792fea7dbe2d9376c78cf354fe3189a484d9da\n"
    },
    {
      "commit": "33bbfd2232ea9eaae9a9d87a05a95a430f09bd83",
      "tree": "88e8e2513676dccf07b9764522a681aae370f020",
      "parents": [
        "d752c3b3e6c576ed1f18e86a7b18c33dc7c65791"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 24 20:55:35 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 25 17:06:07 2011 -0800"
      },
      "message": "Add support for mouse hover and scroll wheel.\n\nDispatch ACTION_HOVER_MOVE and ACTION_SCROLL through the View\nhierarchy as onGenericTouchEvent.  Pointer events dispatched\nthis way are delivered to the view under the pointer.  Non-pointer\nevents continue to be delivered to the focused view.\n\nAdded scroll wheel support to AbsListView, ScrollView,\nHorizontalScrollView and WebView.  Shift+VSCROLL is translated\nto HSCROLL as appropriate.\n\nAdded logging of new pointer events in PointerLocationView.\n\nFixed a problem in EventHub when a USB device is removed that\nresulted in a long stream of ENODEV errors being logged until INotify\nnoticed the device was gone.\n\nNote that the new events are not supported by wallpapers at this time\nbecause the wallpaper engine only delivers touch events.\n\nMake all mouse buttons behave identically.  (Effectively we only\nsupport one button.)\n\nChange-Id: I9ab445ffb63c813fcb07db6693987b02475f3756\n"
    },
    {
      "commit": "bfaf3b91709ef35e0d5901b186edd7c2a9729161",
      "tree": "9ecdcc0702b8314ba836508d39a5c754b9537a28",
      "parents": [
        "cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 22 15:00:50 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 22 15:00:50 2011 -0800"
      },
      "message": "Be more precise about tracking fallback keys.\n\nOnly initiate fallback key handling if the first key down was\nnot handled and there is no other fallback key already in progress.\nThis prevents spurious fallbacks from being generated when\napplications handle the initial down but not repeated downs or the up.\n\nChange-Id: I8a513896cf96b16dc502cd72291926d5532aa2ab\n"
    },
    {
      "commit": "cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413",
      "tree": "7a4e3c578e3e0f2c01fef4d64e721d81c851748e",
      "parents": [
        "6f2fba428ca5e77a26d991ad728e346cc47609ee"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 05:07:28 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 06:14:21 2011 -0800"
      },
      "message": "Add new hover move action and scroll wheel plumbing.\n\nAdded support for tracking the mouse position even when the mouse button\nis not pressed.  To avoid confusing existing applications, mouse movements\nare reported using the new ACTION_HOVER_MOVE action when the mouse button\nis not pressed.\n\nAdded some more plumbing for the scroll wheel axes.  The values are\nreported to Views but they are not yet handled by the framework.\n\nChange-Id: I1706be850d25cf34e5adf880bbed5cc3265cf4b1\n"
    },
    {
      "commit": "6f2fba428ca5e77a26d991ad728e346cc47609ee",
      "tree": "5dd07c24bd9b474ccfbcba4f63e078598fbd2b50",
      "parents": [
        "b1bdb64d641ac63097619e5ef08d5a25bfdc61bb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 01:08:02 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Feb 19 05:23:10 2011 -0800"
      },
      "message": "Add new axes for joysticks and mouse wheels.\n\nAdded API on InputDevice to query the set of axes available.\nAdded API on KeyEvent and MotionEvent to convert keycodes and axes\nto symbolic name strings for diagnostic purposes.\nAdded API on KeyEvent to query if a given key code is a gamepad button.\nAdded a new \"axis\" element to key layout files to specify the\nmapping between raw absolute axis values and motion axis ids.\nExpanded the axis bitfield to 64bits to allow for future growth.\nModified the Makefile for keyboard prebuilts to run the keymap\nvalidation tool during the build.\nAdded layouts for two game controllers.\nAdded default actions for game pad button keys.\nAdded more tests.\nFixed a bunch of bugs.\n\nChange-Id: I73f9166c3b3c5bcf4970845b58088ad467525525\n"
    },
    {
      "commit": "ebbd5d14ad3b1e762d9fcfa026e19413cc857e05",
      "tree": "7f449489b302fddd176f6ab9f85c8e38024fed90",
      "parents": [
        "3b93d3fc1e56eada95246f9ee102c563d22df6d0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 17 13:01:34 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Feb 17 13:01:34 2011 -0800"
      },
      "message": "Fix a regression with MotionEvent parceling.\n\nAlso added some more unit tests.\n\nChange-Id: I413654294d1a998eec056884e6df5eaa50f3daf4\n"
    },
    {
      "commit": "91c69ab01539f7ba28708f41ec1835cc2920d0a0",
      "tree": "04f5dc37a0fa3f18a18ba08916efe0c33a1de300",
      "parents": [
        "c3451d4a4479b6244bd6d1dadf289a8d44bdcca2"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 14 17:03:18 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 15 19:14:37 2011 -0800"
      },
      "message": "Add support for arbitrary axes in MotionEvents.\n\nThis change makes it possible to extend the set of axes that\nare reported in MotionEvents by defining new axis constants.\n\nThe MotionEvent object is now backed by its C++ counterpart\nto avoid having to maintain multiple representations of the\nsame data.\n\nChange-Id: Ibe93c90d4b390d43c176cce48d558d20869ee608\n"
    },
    {
      "commit": "c3451d4a4479b6244bd6d1dadf289a8d44bdcca2",
      "tree": "3dd498f926ebd98eb205d31e028b6f991c5c6451",
      "parents": [
        "cfe8903441fa3fc13c774587fe96df8206d4ba7d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 15 19:13:20 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 15 19:14:35 2011 -0800"
      },
      "message": "Scale major axis when finger is oriented.\n\nChange-Id: I281ec25478b4ceffa6ed5a41cb44a7e81d18d8dc\n"
    },
    {
      "commit": "71c86ada9f00334b2967d24d4182dc324cd97605",
      "tree": "0532a91cba28a92038307fc51637b9bf141f1d87",
      "parents": [
        "5e2b123e483a6da1b7cff36024b12e85a0a7c382"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 07 20:29:08 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 07 20:29:08 2011 -0800"
      },
      "message": "Fix read from uninitialized memory.\n\nChange-Id: I75ce29d5971b386ff9dd52824a8953ce69a3ec15\n"
    },
    {
      "commit": "0a9f335e7088ade74d9e3fbc852d052de45603ca",
      "tree": "a0fc804602209b7274d98c4e3ef710bad52fa081",
      "parents": [
        "8722fba3a37b97fde06a5dc42058bde14ba6dd45"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:52:34 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:52:34 2011 -0800"
      },
      "message": "Fix build.\n\nChange-Id: Id08f3ccced1281f1c6840cc67713bcedcf9a53c0\n"
    },
    {
      "commit": "ab2f09603079534b53499864a403d0ba16aad13b",
      "tree": "bda82420b709f75417061242d20227ec89732ff7",
      "parents": [
        "e1ec077497b4d88abf9d3aab68449325d7e2b87b",
        "12b2dc90883ef4f930a17907acdef3677b0598a5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 18:22:50 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 18:22:50 2011 -0800"
      },
      "message": "am 12b2dc90: am b1e0a870: Merge \"Fix crashes caused by some input devices.\" into honeycomb\n\n* commit \u002712b2dc90883ef4f930a17907acdef3677b0598a5\u0027:\n  Fix crashes caused by some input devices.\n"
    },
    {
      "commit": "58a2da843f2f22f406df8df1f011738eb8b7fcb1",
      "tree": "716c12630d5d9fe98e29e197287dc950eaa4a01c",
      "parents": [
        "30bc34f191ca8a009af313fc751e5b4bff6e39a1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 16:02:22 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 25 16:02:22 2011 -0800"
      },
      "message": "Fix crashes caused by some input devices.\n\nThe touch screen sometimes reports more than 10 pointers even though that\u0027s\nall we asked for.  When this happens, we start dropping events with more\nthan 10 pointers.  This confuses applications and causes them to crash.\nRaised the limit to 16 pointers.\nBug: 3331247\n\nThe default behavior was to identify all touch devices as touch screens.\nExternal devices that are plugged in are more likely to be touch pads\nnot attached to a screen.  Changed the default to be a touch pad\nand renamed some internal constants to avoid confusion.\n\nA certain mouse happens to also behave like a touch pad.  That caused\nproblems because we would see multiple concurrent traces of motion events\ncoming from the same input device so we would batch them up.\nAdded code to ensure that we don\u0027t batch events unless they come from\nthe same *source* in addition to coming from the same *device*.\n\nDue to batching or misbehaving drivers, it\u0027s possible for the set of\npointer ids to be different from what we expect when it comes time to\nsplit motion events across windows.  As a result, we can generate motion\nevents with 0 pointers.  When we try to deliver those events, we cause\nan error in the InputTransport so we tear down the InputChannel and kill\nthe application.\nAdded code to check out assumption about pointer ids and drop the\nevent gracefully instead.\n\nPatched up the tests to take into account the change in default behavior\nfor identifying touch screens and touch pads.\n\nChange-Id: Ic364bd4cb4cc6335d4a1213a26d6bdadc7e33505\n"
    },
    {
      "commit": "e155bd0fcb57fa96c4a7b5cc70205d53acf41291",
      "tree": "81521106d865081b80000e7135174087a0f56e68",
      "parents": [
        "cd5256594b75e81bcc0708d7599fe5fa0157d0ae",
        "5f668c6e6bb2515325632691a804a7c8f24ebb09"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:58:28 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jan 19 18:58:28 2011 -0800"
      },
      "message": "am 5f668c6e: am 8b9df978: Merge \"Fix getSwitchState.\" into honeycomb\n\n* commit \u00275f668c6e6bb2515325632691a804a7c8f24ebb09\u0027:\n  Fix getSwitchState.\n"
    },
    {
      "commit": "89de57a8d252a25ef2412a11a66089a9ff6ffe29",
      "tree": "26c27db9de6f06bfd9ea0e3bb6ddae805fcccbcb",
      "parents": [
        "2cb866b948c38923b31331a9b2f031eb9d791e6e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:41:38 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jan 19 18:41:38 2011 -0800"
      },
      "message": "Fix getSwitchState.\n\nInputReader::getSwitchState always returns AKEY_STATE_UNKNOWN\nbecause SwitchInputMapper::getSources() returns 0 which cannot\nmatch any source mask including AINPUT_SOURCE_ANY.  As a result\ninitial lid switch detection is broken.\n\nThis change adds a new source constant AINPUT_SOURCE_SWITCH\nthat indicates that the source has switches.\n\nChange-Id: I5321ecf0ce84f1c2b4535f6c163d3f4dcf9b7a9b\n"
    },
    {
      "commit": "7cca7e0b28679cf09ce6b56687c3a9679a6c7296",
      "tree": "37c7b40b07a26c79cfc380637045209bac0465ac",
      "parents": [
        "7927859e10b5e32276bbba20892d0bd3117f191e",
        "761a6b7fdbe2bcc6db4306af9705dcb22b036068"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 18 21:56:31 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 18 21:56:31 2011 -0800"
      },
      "message": "am 761a6b7f: am f4368c95: Merge \"Filter virtual keys after touches.\" into honeycomb\n\n* commit \u0027761a6b7fdbe2bcc6db4306af9705dcb22b036068\u0027:\n  Filter virtual keys after touches.\n"
    },
    {
      "commit": "f4368c959fa9436d75feb2543cb65da0d46521e5",
      "tree": "1fbaaa0a23abf7752f1626f974af5464ea73e66d",
      "parents": [
        "2c0d22e72c0e3fa1705e39eeaedfdbad89a785ce",
        "fe50892af3b365806a767298dfd8e86447682581"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 18 15:26:15 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 18 15:26:15 2011 -0800"
      },
      "message": "Merge \"Filter virtual keys after touches.\" into honeycomb"
    },
    {
      "commit": "fe50892af3b365806a767298dfd8e86447682581",
      "tree": "87df90a1ee452db7b6c096570e51181bcd919e74",
      "parents": [
        "c10803924e45e9a607b3c5bb74316c0a84d78cd8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 18 15:10:10 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 18 15:10:45 2011 -0800"
      },
      "message": "Filter virtual keys after touches.\n\nAdds a new virtualKeyQuietTimeMillis configuration resource that sets\nthe duration for which virtual keys will be dropped after recent touches\non screen.  The default value is 0; it is intended to be overridden\nper device using a resource overlay.\n\nThis change is designed to help in two cases:\n\n1. Swipes from touchscreen into virtual key area.\n2. Accidental taps in virtual key area while using on-screen keyboard.\n\nBug: 3089163\nChange-Id: Ib912d4f8a4df9966a39cd537d3ec7c24afab7225\n"
    },
    {
      "commit": "df52f4677d6af36c8cd2dc17921a714cf153de39",
      "tree": "415ae0ee3db9a4beb9ff2bb35140bd3c9251bd22",
      "parents": [
        "9f7344477f044437b6921237f347a022fc2cf520",
        "6a88cea122077c6b472d52136ac928c9ad690a0a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 23:31:55 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 17 23:31:55 2011 -0800"
      },
      "message": "am 6a88cea1: am f2bc4ee9: Merge \"Mouse pointer tweaks.\" into honeycomb\n\n* commit \u00276a88cea122077c6b472d52136ac928c9ad690a0a\u0027:\n  Mouse pointer tweaks.\n"
    },
    {
      "commit": "f5a2ff6f2e5c5ba9dc7ab16f3b7f8f05daf3c159",
      "tree": "befb8dba3a0617a4d18d935f6fdfda13a863b2cd",
      "parents": [
        "c10803924e45e9a607b3c5bb74316c0a84d78cd8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 16:01:34 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 16:15:15 2011 -0800"
      },
      "message": "Mouse pointer tweaks.\n\nMake pointer arrow brighter.\nDeep copy the pointer icon bitmap since it turns out that the\noriginal shared pixels can be deleted by other code.\n\nChange-Id: I77fbf61d1dace723f3c8c9808941e9e31d8db352\n"
    },
    {
      "commit": "0f6226b9f417182bbf791598000f0a153fbf191c",
      "tree": "6b10732d2ec4126ddfaea5b7948fd031d6cbc63c",
      "parents": [
        "2e3720f1e0bec9752dc920853a35a778358b1155",
        "cb1404e45639d20439d7700b06d57ca1a1aad1fa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 15:57:44 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jan 17 15:57:44 2011 -0800"
      },
      "message": "Merge \"Add joystick support to framework.\""
    },
    {
      "commit": "cb1404e45639d20439d7700b06d57ca1a1aad1fa",
      "tree": "1d9bb7c58ea0a9ae36c242602fca59d343e8a0cd",
      "parents": [
        "e0dfee2b7075c1eac0db08d79d47381693d2f125"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Jan 15 18:14:15 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 17 13:51:00 2011 -0800"
      },
      "message": "Add joystick support to framework.\n\nChange-Id: I95374436708752e1a9cff3f85c5b9bc3e0987961\n"
    },
    {
      "commit": "fbf097732137a32930d151f7ba6816a5b870c32a",
      "tree": "1f05823ea1cb06aaa3ab0954cdde614b370f30e6",
      "parents": [
        "115ad16551c9cf9551f44cbea59f3edf83e4a340"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 16 14:06:57 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 16 18:58:49 2011 -0800"
      },
      "message": "Support non-rectangular input regions.\n\nThis enables the system bar to carve out a region through which\nevents will be sent to the IME behind it.\n\nBug: 3238092\nChange-Id: I69b855a8d9b5b3ee525266c0861826e53e5b5028\n"
    },
    {
      "commit": "517bb4c859a2bb8d30316204f39bf5b6c89c3e4d",
      "tree": "bd21e2dfa465a4ab311e714f8e8f301372143831",
      "parents": [
        "fca66d3b71abcf1e78a25988850857ea8188c0d0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 14 19:09:23 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 14 19:12:48 2011 -0800"
      },
      "message": "Add support for detecting finger orientation.\n\nChange-Id: I901fc61f7705fcd7950190dc8782bad616032ee2\n"
    },
    {
      "commit": "1c9d06e0470c41e2720c65be076b6080bf8595c0",
      "tree": "d349bd0e1257f7118b75bd5a07e8213585de7b2b",
      "parents": [
        "e76820bf413364898493f86ca6027b28d3caed2b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 14 17:24:16 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 14 17:24:16 2011 -0800"
      },
      "message": "Fix bug with mice that send multiple BTN_MOUSE values.\n\nSome mice send different values for BTN_MOUSE key events\nwhen the button is held down (2 for repeat, instead of 1 for down).\n\nChange-Id: I803db1f1584f50f8f5e1d37b6a715e2e1b3943a6\n"
    },
    {
      "commit": "928e054931d357326613c78e62f4d850b7c442ff",
      "tree": "28367a3b3d9b11f31a97c9016ab64e22f05c4c47",
      "parents": [
        "b3fbd7e0fd44a72fb7ccba0959481b8a806608b7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 10 11:17:36 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 10 17:23:05 2011 -0800"
      },
      "message": "Prevent events from getting backlogged.\n\nThis change implements two heuristics.\n\n1. When events are older than 10 seconds, they are dropped.\n\n2. If the application is currently busy processing an event and\n   the user touches a window belonging to a different application\n   then we drop the currently queued events so the other application\n   can start processing the gesture immediately.\n\nNote that the system takes care of synthesizing cancelation events\nautomatically for any events that it drops.\n\nAdded some new handle types to allow the native dispatcher to\nindirectly refer to the WindowManager\u0027s window state and app window\ntoken.  This was done to enable the dispatcher to identify the\napplication to which each window belongs but it also eliminates\nsome lookup tables and linear searches through the window list\non each key press.\n\nBug: 3224911\nChange-Id: I9dae8dfe23d195d76865f97011fe2f1d351e2940\n"
    },
    {
      "commit": "95712850665492af670824abdba77f0944d984d1",
      "tree": "0a25154afa5a90fc0798f256e548fa2fde781d5d",
      "parents": [
        "c91d8c3ea5d2a3a065f7d5074817689713ea6dda"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 04 19:41:59 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 04 19:41:59 2011 -0800"
      },
      "message": "Only allow touch events from one device at a time.\n\nReject movements from other devices when one device is already down.\nThis fixes jittery behavior when the user moves the mouse and touches\nthe screen at the same time.\n\nChange-Id: I99151c8f2596a3139720f776bcbc559d4b314878\n"
    },
    {
      "commit": "b4ff35df5c04aec71fce7e90a6d6f9ef7180c2ad",
      "tree": "e4473f1b22e3051a8f82239256148820d4e097d5",
      "parents": [
        "a5af5d6b122b5d7337e6640deabf7886689679eb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 02 16:37:43 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 04 17:31:24 2011 -0800"
      },
      "message": "Mouse pointer integration.\n\nAdded support for loading the pointer icon from a resource.\n\nMoved the system server related bits of the input manager out\nof libui and into libinput since they do not need to be linked into\napplications.\n\nChange-Id: Iec11e0725b3add2b905c51f8ea2c3b4b0d1a2d67\n"
    }
  ]
}
