)]}'
{
  "commit": "5873ce46adc9e98efd6e5acbe21639a0a4d25c69",
  "tree": "c916b09a0cc921fbab58eec7c88824466102b100",
  "parents": [
    "4eb0fea354c3f0c354b5057ef7bfb7564cf59b5a"
  ],
  "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",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c9f694a8f0e967a6f3c7b130973defac64bc3ee6",
      "old_mode": 33188,
      "old_path": "include/ui/Input.h",
      "new_id": "f1385a039492bcb70f96700af172839f239c65c0",
      "new_mode": 33188,
      "new_path": "include/ui/Input.h"
    },
    {
      "type": "modify",
      "old_id": "600017e89c34c256a55bc73e13af7d1f720ec704",
      "old_mode": 33188,
      "old_path": "include/utils/BitSet.h",
      "new_id": "9452e86d6175f59fd0ac77c9ec677a1105eda1c8",
      "new_mode": 33188,
      "new_path": "include/utils/BitSet.h"
    },
    {
      "type": "modify",
      "old_id": "0af7f8043c35d9721b45e1be5a1b1982d6782497",
      "old_mode": 33188,
      "old_path": "libs/ui/Input.cpp",
      "new_id": "688b99892bf9a6ba9857a53b81b4f15d8a9485d2",
      "new_mode": 33188,
      "new_path": "libs/ui/Input.cpp"
    },
    {
      "type": "modify",
      "old_id": "e48d5b7dc53c96eefca1e650bcf3e0113d46b3a0",
      "old_mode": 33188,
      "old_path": "libs/ui/tests/InputEvent_test.cpp",
      "new_id": "e21c464a197483746ec50ed97897c1c8032b1e95",
      "new_mode": 33188,
      "new_path": "libs/ui/tests/InputEvent_test.cpp"
    }
  ]
}
