)]}'
{
  "log": [
    {
      "commit": "d728bf514f257670fcb9aa22c6eaf97626072c93",
      "tree": "dedf4c8771ab1e1b618ea0d75e5f8328b0bfe83a",
      "parents": [
        "631938f26dbc89e7e9530bb85d9f37706dba59f3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Sep 08 18:05:28 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Sep 08 18:12:57 2012 -0700"
      },
      "message": "Make display manager tell input system about viewports.\n\nThe window manager is no longer responsible for telling the\ninput system about the display viewport.\n\nChange-Id: I932882bae55decef55f25093bb2a7ebac1620bb1\n"
    },
    {
      "commit": "5baa3a62a97544669fba6d65a11c07f252e654dd",
      "tree": "109755e1595b438873d34b981e31f84ea64bd2a5",
      "parents": [
        "173ab4d61077c49f115b82eff34f97fda5a7273a"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Jan 03 22:38:27 2012 +0000"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156016\n\nBug: 5449033\nChange-Id: I4c4e33bb9df3e39e11cd985e193e6fbab4635298\n"
    },
    {
      "commit": "be1aa8250cee7819c49741e819e81659d1d03823",
      "tree": "3041a44459110da304f930b1a3ebcbd042291999",
      "parents": [
        "ad65b46d5f6c569b588556dcf85b64d59600b175"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 27 16:04:54 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jul 31 15:38:09 2011 -0700"
      },
      "message": "Refactor input reader to add stylus support.\nBug: 5064702\n\nIntroduced the concept of an InputListener to further decouple\nthe InputReader from the InputDispatcher.  The InputListener\nexposes just the minimum interface that the InputReader needs\nto communicate with the outside world.  The InputReader\npasses arguments to the InputListener by reference, which makes\nit easy to queue them up.\n\nConsolidated all of the InputReader locks into one simple global\nMutex.  The reason this wasn\u0027t done before was due to potential\nre-entrance in outbound calls to the InputDispatcher.  To fix this,\nthe InputReader now queues up all of the events it wants to send\nusing a QueuedInputListener, then flushes them outside of the\ncritical section after all of the event processing is finished.\nRemoving all of the InputMapper locks greatly simplifies the\nimplementation.\n\nAdded tests for new stylus features such as buttons, tool types,\nand hovering.\n\nAdded some helpers to BitSet32 to handle common code patterns\nlike finding the first marked bit and clearing it.\n\nFixed a bug in VelocityTracker where the wrong pointer trace\ncould get cleared when handling ACTION_POINTER_DOWN.  Oops.\n\nChanged PointerCoords so it no longer stores useless zero\naxis values.  Removed editAxisValue because it is not very\nuseful when all zero value axes are absent and therefore\ncannot be edited in place.\n\nAdded dispatch of stylus hover events.\n\nAdded support for distance and tool types.\n\nChange-Id: I4cf14d134fcb1db7d10be5f2af7b37deef8f8468\n"
    },
    {
      "commit": "051e8f2bfa3ada8ee64d8a4f4d69ad9286209516",
      "tree": "5bf5b2e3d168fa9a8e490edc1c64f667920b3b30",
      "parents": [
        "774ed9d9537c15482e8baca2f2890c5d2f4ffe75",
        "55cc25c12c45e8ffb65d2275cc0b6941b68db9df"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue Jun 07 17:52:22 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 07 17:52:22 2011 -0700"
      },
      "message": "am 55cc25c1: am 797dc698: am b92dcf9c: Merge \"Simplify spot tracking logic. Bug: 4124987\" into honeycomb-mr2\n\n* commit \u002755cc25c12c45e8ffb65d2275cc0b6941b68db9df\u0027:\n  Simplify spot tracking logic. Bug: 4124987\n"
    },
    {
      "commit": "cb5ffcf0e41d2597401208221c61589547a00f3d",
      "tree": "b418a886481f1c5fb0b392c016c1a38cd0f6ce7b",
      "parents": [
        "bb3fcba0caf697f1d238a2cbefdf1efe06eded99"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon Jun 06 20:03:18 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Mon Jun 06 20:06:19 2011 -0700"
      },
      "message": "Simplify spot tracking logic.\nBug: 4124987\n\nSince spots are now one-to-one with the touch gesture points,\nwe can eliminate a lot of redundant logic that assumed they weren\u0027t.\n\nChange-Id: Ic60d8d0898c285317f480bc8fb17fb9797770e69\n"
    },
    {
      "commit": "b530abcff5ae8e5ebb75ec6aa42b7c7c190e98a5",
      "tree": "f5386df4f29aea3a8ef67ee92283590aa3cc6829",
      "parents": [
        "e129509422a17733bf286c8b0c5af28f9cd1643b",
        "3f5b95b05efcf7ab2e8f193649b841dc1786f2ef"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@android.com",
        "time": "Tue May 31 16:03:07 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 31 16:03:07 2011 -0700"
      },
      "message": "am 3f5b95b0: am a4e74744: am fa574c0e: Merge \"Touch pad UX improvements.\" into honeycomb-mr2\n\n* commit \u00273f5b95b05efcf7ab2e8f193649b841dc1786f2ef\u0027:\n  Touch pad UX improvements.\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": "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": "fe9f8ab03a63b1037f07dd85799fbea80ec6adaa",
      "tree": "c0cfa91d0537321eeee0ede693fb414d8778a1a2",
      "parents": [
        "1abf1c59f8b15d5b4b198063b884e268bd79fb32"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 06 18:20:01 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 13 12:11:17 2011 -0700"
      },
      "message": "Add initial API for stylus and mouse buttons.\n\nAdded the concept of pointer properties in a MotionEvent.\nThis is currently used to track the pointer tool type to enable\napplications to distinguish finger touches from a stylus.\n\nButton states are also reported to application as part of touch events.\n\nThere are no new actions for detecting changes in button states.\nThe application should instead query the button state from the\nMotionEvent and take appropriate action as needed.\n\nA good time to check the button state is on ACTION_DOWN.\n\nAs a side-effect, applications that do not support multiple buttons\nwill treat primary, secondary and tertiary buttons identically\nfor all touch events.\n\nThe back button on the mouse is mapped to KEYCODE_BACK\nand the forward button is mapped to KEYCODE_FORWARD.\n\nAdded basic plumbing for the secondary mouse button to invoke\nthe context menu, particularly in lists.\n\nAdded clamp and split methods on MotionEvent to take care of\ncommon filtering operations so we don\u0027t have them scattered\nin multiple places across the framework.\n\nBug: 4260011\nChange-Id: Ie992b4d4e00c8f2e76b961da0a902145b27f6d83\n"
    },
    {
      "commit": "2352b978a3c94cd88f41d0d908f961333fdac1e9",
      "tree": "24f8f19e9b2895cc2c3489bf2dd7a09aaf5834db",
      "parents": [
        "f76dc56c33ba66138af70d72803cf55f881c3717"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 12 22:39:53 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 19 15:35:51 2011 -0700"
      },
      "message": "Initial checkin of spot presentation for touchpad gestures.\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: I5126b1e69d95252fda7f2a684c9287e239a57163\n"
    },
    {
      "commit": "5541de9ea3513a12d1ac2ad07e7e04a3aa7741a0",
      "tree": "3ac3cd85bf588df25aed0a0df29e70629a096547",
      "parents": [
        "5008e92d1fd573d926cd55c39ca723a6fbdf7c4b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 11 11:54:25 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 11 14:08:29 2011 -0700"
      },
      "message": "Add a sprite controller.\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: Ib25d162d577c9b354cb74d5d761c3c9f9f438d42\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": "d41cff2d3a95963a7aa348e502c6d42bae367235",
      "tree": "cd4a20f95dd1dfe6a2b9daeea128de658f39a987",
      "parents": [
        "9225b00a3dc45bdbcfb6adafa4dbbc0cbe9be864"
      ],
      "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": "Thu Mar 03 02:28:51 2011 -0800"
      },
      "message": "Fix off by one errors in touch motion ranges.\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: I682ce3729e4473de7f1bcf8addb49a3f4484126f\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": "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": "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"
    }
  ]
}
