)]}'
{
  "log": [
    {
      "commit": "470ce098f82047304f78162646d65ed3a908e95e",
      "tree": "7c11c85aa19e50b746ae790bc99b946d8290d770",
      "parents": [
        "39df5331c7423455f1fb6c01b075b618f8bc00fd",
        "d7cd560af506f75d07034c136bea09b409b4d408"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 21 17:21:56 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 21 17:21:56 2010 -0700"
      },
      "message": "am d7cd560a: am 1d79a9d9: Use correct size of GAMEPAD_KEYCODES\n\nMerge commit \u0027d7cd560af506f75d07034c136bea09b409b4d408\u0027\n\n* commit \u0027d7cd560af506f75d07034c136bea09b409b4d408\u0027:\n  Use correct size of GAMEPAD_KEYCODES\n"
    },
    {
      "commit": "1d79a9d9f85f932a1fd6dcddba335450b65ba4e6",
      "tree": "4c25f01396a8fed470404bbd92aa2af90df205b0",
      "parents": [
        "703aae06c0925b19657877bb1872bb2f28874969"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 21 15:46:03 2010 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Oct 21 15:46:03 2010 -0700"
      },
      "message": "Use correct size of GAMEPAD_KEYCODES\n\nCompute the actual number of indices in the GAMEPAD_KEYCODES instead of\nthe pure size in bytes.\n\nBug: 3121536\nChange-Id: I71edbd8bf6eff2c8cc0ea5c6845362b3d1e06466\n"
    },
    {
      "commit": "b8b200d10847dd91bcff7a576e401d7d21fff696",
      "tree": "806a3243d1b13066c76910927fd5674104957812",
      "parents": [
        "9cb1898052c42a82dfd86b54f6328d8fcd29dd57",
        "f2c406030874b355ca9e4e67cc0e3aff6103c23e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Oct 19 09:55:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 19 09:55:39 2010 -0700"
      },
      "message": "am f2c40603: am 7689dd49: Merge \"Fix bug where home presses were not poking user activity.\" into gingerbread\n\nMerge commit \u0027f2c406030874b355ca9e4e67cc0e3aff6103c23e\u0027\n\n* commit \u0027f2c406030874b355ca9e4e67cc0e3aff6103c23e\u0027:\n  Fix bug where home presses were not poking user activity.\n"
    },
    {
      "commit": "511ee5f89fad45bd0456b1335b745f2b8d87641b",
      "tree": "047740e6909b164a3efbd34578c658dcec846afd",
      "parents": [
        "1b04ed793a64ff1bf3cd2b71bee1fdfb228b44fe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 18 13:32:20 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 18 17:24:49 2010 -0700"
      },
      "message": "Add support for calibrating touch position.\n\nUseful for tweaking touch screen alignment without having to modify the\nkernel device driver x/y axis bounds.\n\nChange-Id: I6ca43d3c138548f9dfb76aa33150a0c853698fb6\n"
    },
    {
      "commit": "e2fe69edc009a0e0348e5351cf83062224e011ac",
      "tree": "beb5873a0c09f8b6f5569ff158cadec5d5c69895",
      "parents": [
        "45bd8303fe20f20843f5a76ddf42a5ace54add58"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 18 13:21:23 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 18 14:50:13 2010 -0700"
      },
      "message": "Fix bug where home presses were not poking user activity.\n\nWe now poke user activity twice: once upon dequeueing an event\nfor dispatch and then again just before we dispatch it.  The second\npoke is to compensate for the fact that it can take a few seconds to\nidentify the dispatch target (if the application is responding slowly)\nbut we want to keep the display from going to sleep for X amount of time\nafter the app gets a chance to actually receive the event.  This mirrors\npre-Gingerbread behavior.\n\nRemoved some unnecessary code that filters user activity pokes when sending\nevents to KeyGuard.  We don\u0027t need this because KeyGuard already tells the\npower manager to disable user activity.\n\nBug: 3101397\nChange-Id: I8c3a77601fdef8f584e84cfdd11aa79da0ff51db\n"
    },
    {
      "commit": "195226a3c83be8f3b2cfaeab3e5db0b9165ef414",
      "tree": "1d3a8583b2d27976bc88dec4d888fddf642c5f17",
      "parents": [
        "d21de4b921a8969b0558cffade0a39fe14ba8a54",
        "9e0e054388689fd618c84a283c28ee484477b44d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 18 10:31:43 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 18 10:31:43 2010 -0700"
      },
      "message": "am 9e0e0543: am 36e65ffd: Merge \"Fix a native crash in input dispatcher when windows are removed.\" into gingerbread\n\nMerge commit \u00279e0e054388689fd618c84a283c28ee484477b44d\u0027\n\n* commit \u00279e0e054388689fd618c84a283c28ee484477b44d\u0027:\n  Fix a native crash in input dispatcher when windows are removed.\n"
    },
    {
      "commit": "c52862edcfbf4ead5f63929111e84993c2ab8c4a",
      "tree": "863d3a0dfed122ea69b56cafaececa52e65e63a9",
      "parents": [
        "3ee1e7b5ab852a246b45ed903a72409a19645a1b",
        "5f0cbfcecc4db20f897507c826296b3aac70c592"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Oct 16 09:13:13 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 16 09:13:13 2010 -0700"
      },
      "message": "am 5f0cbfce: am c1e7b218: Merge \"Improve input device calibration format.\" into gingerbread\n\nMerge commit \u00275f0cbfcecc4db20f897507c826296b3aac70c592\u0027\n\n* commit \u00275f0cbfcecc4db20f897507c826296b3aac70c592\u0027:\n  Improve input device calibration format.\n"
    },
    {
      "commit": "3b2b354ec1ba070eae13391d004d97a3e1403050",
      "tree": "e2647c9a8797a4b3542deab7d1cb766967b35879",
      "parents": [
        "1edb2bda37726ba6bc6feeafad25ea51b1cacaee"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 00:54:27 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 17:10:55 2010 -0700"
      },
      "message": "Add support for secure system overlays.\n\nManual merge from Gingerbread.\n\nThis change adds a new window type for secure system overlays\ncreated by the system itself from non-secure system overlays that\nmight be created by applications that have the system alert permission.\nSecure views ignore the presence of secure system overlays.\n\nBug: 3098519\nChange-Id: Id876736fd8bf332ff9a5428bde59f5268aa49c3a\n"
    },
    {
      "commit": "af48cae6e59f579c20c3ecd08623214896e7923e",
      "tree": "c9835705bcef57639a6b6d3838b8bbce0606f202",
      "parents": [
        "2d3f159aa9622e05a18e7f93cecd57ad673955ae"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 16:20:51 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 16:20:51 2010 -0700"
      },
      "message": "Fix a native crash in input dispatcher when windows are removed.\n\nBug: 3101826\nChange-Id: I040838600a6105c8d9f3235025dc0a7b5b27da2e\n"
    },
    {
      "commit": "2d3f159aa9622e05a18e7f93cecd57ad673955ae",
      "tree": "8df18f80f44133f19ce9e669a36bdd785b31460a",
      "parents": [
        "c9f7890a203a013646650a695157277df81b6a17"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 00:54:27 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 16:03:35 2010 -0700"
      },
      "message": "Add support for secure system overlays.  (DO NOT MERGE)\n\nThis change adds a new window type for secure system overlays\ncreated by the system itself from non-secure system overlays that\nmight be created by applications that have the system alert permission.\nSecure views ignore the presence of secure system overlays.\n\nBug: 3098519\nChange-Id: I8f8398f4fdeb0469e5d71124c21bedf121bd8c07\n"
    },
    {
      "commit": "497a92cc5ba2176b8a8484b0a7da040eac0e887b",
      "tree": "2d9bd7a2ef24754fa83a36f440ee45fd8a32b9fb",
      "parents": [
        "cd9afc3722a1edebf0e6f7172627930052c81ce4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 12 17:55:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 16:00:07 2010 -0700"
      },
      "message": "Add keycodes and meta-key modifiers to support external keyboards.\n\nAdded new key maps for external keyboards.  These maps are intended to\nbe shared across devices by inheriting the \"keyboards.mk\" product\nmakefile as part of the device\u0027s product definition.\n\nOne of the trickier changes here was to unwind some code in\nMetaKeyKeyListener that assumed that only the low 8 bits of the meta key\nstate were actually used.  The new code abandons bitshifts in favor\nof simple conditionals that are probably easier to read anyways.\nThe special meta key state constants used by MetaKeyKeyListener\nare now (@hide) defined in KeyEvent now so as to make it clearer that they\nshare the same code space even if those codes are not valid for KeyEvents.\n\nThe EventHub now takes care of detecting the appropriate key layout\nmap and key character map when the device is added and sets system\nproperties accordingly.  This avoids having duplicate code in\nKeyCharacterMap to probe for the appropriate key character map\nalthough the current probing mechanism has been preserved for legacy\nreasons just in case.\n\nAdded support for tracking caps lock, num lock and scroll lock and\nturning their corresponding LEDs on and off as needed.\n\nThe key character map format will need to be updated to correctly support\nPC style external keyboard semantics related to modifier keys.\nThat will come in a later change so caps lock doesn\u0027t actually do\nanything right now except turn the shiny LEDs on and off...\n\nAdded a list of symbolic key names to KeyEvent and improved the toString()\noutput for debug diagnosis.  Having this list in a central place in the\nframework also allows us to remove it from Monkey so there is one less\nthing to maintain when we add new keycodes.\n\nBug: 2912307\nChange-Id: If8c25e8d50a7c29bbf5d663c94284f5f86de5da4\n"
    },
    {
      "commit": "a617fdc65be94d0ff875090d45168eec354c919e",
      "tree": "198aefa59e3e8ba7c77f74ce768795792f2f3ba1",
      "parents": [
        "ecc105668c4f87c3a21425e29c68026cefb92b4a",
        "567db07702f851f2e7fb1fb0021ce2871469183e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 15 14:26:18 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 14:26:18 2010 -0700"
      },
      "message": "am 567db077: am 2d441e14: Merge \"Make sure EventHub reports added/removed devices immediately.\" into gingerbread\n\nMerge commit \u0027567db07702f851f2e7fb1fb0021ce2871469183e\u0027\n\n* commit \u0027567db07702f851f2e7fb1fb0021ce2871469183e\u0027:\n  Make sure EventHub reports added/removed devices immediately.\n"
    },
    {
      "commit": "c6d282bb8223ed21666878f71c5a55013ee37805",
      "tree": "0638ca8d0a5801ee0a5f5fb80ad1d654d4825a55",
      "parents": [
        "75d3591b2dd60e50182542045147b9b6033c2b85"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 14 21:42:15 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 14 21:44:16 2010 -0700"
      },
      "message": "Improve input device calibration format.\n\nAdded support for calibrating touch size for devices that report\nsize as an area measurement rather than as a width.\nFixed some bugs.\n\nBug: 3096045\nChange-Id: I30a12e73752883516ed054f8af407204bca45814\n"
    },
    {
      "commit": "a9b84229a3e9e0ae15e3e964985fac2314247be2",
      "tree": "e3d7d7e6a54abc6e6f44ccc9a3d79e02812c2816",
      "parents": [
        "844a6b3ccaff1ad1443ad985e4527b733ce97c0e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 14 02:23:43 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 14 02:23:43 2010 -0700"
      },
      "message": "Make sure EventHub reports added/removed devices immediately.\n\nFixed a bug where EventHub would not report changes in devices\nuntil the next event.\n\nBug: 3096147\nChange-Id: Ie4c3e1d14d0ad806cfaa212611ce06034d1b94d4\n"
    },
    {
      "commit": "cd4af421ca6b102cabd2cf1ff63488e086c32c44",
      "tree": "65c60516db0a95bb1eb6ae4d0b751c36cbc676e4",
      "parents": [
        "bad553ba34dbf9b6764c9c6b72f0082f011b577c",
        "4b255a23041225103a6870e77a236f78c2816eda"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 13 17:02:48 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 13 17:02:48 2010 -0700"
      },
      "message": "am 4b255a23: am 03aa28fb: Merge \"Improve the input policy handling a bit.\" into gingerbread\n\nMerge commit \u00274b255a23041225103a6870e77a236f78c2816eda\u0027\n\n* commit \u00274b255a23041225103a6870e77a236f78c2816eda\u0027:\n  Improve the input policy handling a bit.\n"
    },
    {
      "commit": "9f164aa9b39ddd42963f52ca47d1739ee4bb1e7d",
      "tree": "445b6f4970325f6a663f262547497a36f3dbcb26",
      "parents": [
        "8635bb5405a50b86badcb3e674032d6f444d4944",
        "b05632aae37ea3a3573aabf10e6868733546de96"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 13 17:01:53 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 13 17:01:53 2010 -0700"
      },
      "message": "am b05632aa: am a28d5aff: Merge \"Fix a bug synthesizing cancelation events for motions.\" into gingerbread\n\nMerge commit \u0027b05632aae37ea3a3573aabf10e6868733546de96\u0027\n\n* commit \u0027b05632aae37ea3a3573aabf10e6868733546de96\u0027:\n  Fix a bug synthesizing cancelation events for motions.\n"
    },
    {
      "commit": "3122e4488aa0749cbec9890ace22c366e35350c3",
      "tree": "fed38c07c499413707f543ef9d0bbe45ccdf23c7",
      "parents": [
        "a28d5aff5466a55149b9e6f9cd908fcc225c25ff"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 23:32:49 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Oct 12 00:16:14 2010 -0700"
      },
      "message": "Improve the input policy handling a bit.\n\nFixed some issues with Monkeys turning off their own screens.  Ook ook!\nAdded some more comments to explain what\u0027s going on.\n\nChange-Id: Id2bc0466161a642a73ef7ef97725d1c81e984b12\n"
    },
    {
      "commit": "9c9f1a3ba1bc19754e4d38cb27a537d4dfedc0fe",
      "tree": "fc519d8f2f97dc3fa6007f16e07cc05b09849109",
      "parents": [
        "e20c9e0264190f94324197a8271cf03811a4ca58"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 18:32:20 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 18:32:20 2010 -0700"
      },
      "message": "Track input state when transferring touch focus.\n\nCopies the input state to the destination window and sends synthesic\ncancelation events to the source window.\n\nChange-Id: Ia75820b0d756ed5d6cd22dce7830251ac85141ed\n"
    },
    {
      "commit": "a1160a798b688370bed3642a105dfeb7fba2f5f3",
      "tree": "51d68dce59ef9b99f12fcfe46bdc0220ecbb07e5",
      "parents": [
        "de846ac659e8c14d898a3fa14bd0504b24096057"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 18:22:53 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 18:22:53 2010 -0700"
      },
      "message": "Fix a bug synthesizing cancelation events for motions.\n\nChange-Id: I881c0fa16c1d22c4b1b6cca24deb0105405ff5b0\n"
    },
    {
      "commit": "e20c9e0264190f94324197a8271cf03811a4ca58",
      "tree": "e482829d555d313e57ead50bc24102897dde9b36",
      "parents": [
        "182e5cf105aa71effbdee15628f020214b54774c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 14:20:19 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 17:54:12 2010 -0700"
      },
      "message": "Fix an event injection bug when the policy is bypassed.\n\nAdded the concept of a \"trusted\" event to distinguish between events from\nattached input devices or trusted injectors vs. other applications.\nThis change enables us to move certain policy decisions out of the\ndispatcher and into the policy itself where they can be handled more\nsystematically.\n\nCherry pick of b931a1b4 from gingerbread into master.\n\nChange-Id: I700a5f07b8b227878cea9437a289a45a245c0424\n"
    },
    {
      "commit": "dd8b0c90400a1c59d4d71d768c02eed961596bc8",
      "tree": "824f5086cdab46a9484c41dc87e921e2ff4212a6",
      "parents": [
        "5d3f6073bfc62811f552a16be7d58483104a29a3",
        "41aabeb51305d19747687f246080f44fc2a74435"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 17:42:30 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 11 17:42:30 2010 -0700"
      },
      "message": "am 41aabeb5: am 1e6a3a53: Merge \"Added more robust tracking and cancelation of events.\" into gingerbread\n\nMerge commit \u002741aabeb51305d19747687f246080f44fc2a74435\u0027\n\n* commit \u002741aabeb51305d19747687f246080f44fc2a74435\u0027:\n  Added more robust tracking and cancelation of events.\n"
    },
    {
      "commit": "b931a1b4183386ba840edc1bcc507eccf11b5cbe",
      "tree": "f9e1ba1030d392ab288ad13e5eaba32c65a96c76",
      "parents": [
        "b699726018a0049665d8ad6b90dbc5af0e18f135"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 14:20:19 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 11 16:26:13 2010 -0700"
      },
      "message": "Fix an event injection bug when the policy is bypassed.\n\nAdded the concept of a \"trusted\" event to distinguish between events from\nattached input devices or trusted injectors vs. other applications.\nThis change enables us to move certain policy decisions out of the\ndispatcher and into the policy itself where they can be handled more\nsystematically.\n\nChange-Id: I4d56fdcdd31aaa675d452088af39a70c4e039970\n"
    },
    {
      "commit": "b699726018a0049665d8ad6b90dbc5af0e18f135",
      "tree": "e711b4de7efbb4473306a208befe0e834d90c39b",
      "parents": [
        "db56b9bd39e739474684987b83f386f50596aa5d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 08 22:31:17 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 10 14:45:51 2010 -0700"
      },
      "message": "Added more robust tracking and cancelation of events.\n\nThis change fixes several issues where events would be dropped in the\ninput dispatch pipeline in such a way that the dispatcher could not\naccurately track the state of the input device.\n\nGiven more robust tracking, we can now also provide robust cancelation\nof input events in cases where an application might otherwise become\nout of sync with the event stream due to ANR, app switch, policy decisions,\nor forced focus transitions.\n\nPruned some of the input dispatcher log output.\n\nMoved the responsibility for calling intercept*BeforeQueueing into\nthe input dispatcher instead of the input reader and added support for\nearly interception of injected events for events coming from trusted\nsources.  This enables behaviors like injection of media keys while\nthe screen is off, haptic feedback of injected virtual keys, so injected\nevents become more \"first class\" in a way.\n\nChange-Id: Iec6ff1dd21e5f3c7feb80ea4feb5382bd090dbd9\n"
    },
    {
      "commit": "584ad9af405e891aebaf3f29b150a91c7d5bc4f1",
      "tree": "0c1566b73960ace1bea2e192aa2e57ca3faed39c",
      "parents": [
        "ee04af3ed40103bc1e3ed5f6ab9e0094d893bceb",
        "1ef773ff9caf9c1b9ee32b634f1c80e9a065aa6a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Oct 10 13:36:13 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Oct 10 13:36:13 2010 -0700"
      },
      "message": "Merge \"Move binder magic from the Surface class to GraphicBuffer.\""
    },
    {
      "commit": "1ef773ff9caf9c1b9ee32b634f1c80e9a065aa6a",
      "tree": "9f00c524f8d91b21fe99ce89c3a1d703fb236b1d",
      "parents": [
        "d6e9d7695b55414420c366528ba431eacdea5dfc"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Oct 07 13:46:55 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Oct 10 13:09:46 2010 -0700"
      },
      "message": "Move binder magic from the Surface class to GraphicBuffer.\n\n- Register buffers with Gralloc when unflattening a GraphicBuffer (rather than\ndoing it in the Surface class).\n- Add support for a GraphicBuffer that wraps an android_native_window_t*.\n\nChange-Id: I029ac086111bbac800e5ca37eb505f558b718cd8\n"
    },
    {
      "commit": "4475c0edcc35b283a16c9b27033c8e83d8cf1496",
      "tree": "7fdd8129eacd267cb7d02636744b7fedea917310",
      "parents": [
        "02611a728036b283c1d46612a124498eebe8a840",
        "f10929fb350395c21edd2cba7641479afe75e750"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Oct 10 12:53:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Oct 10 12:53:39 2010 -0700"
      },
      "message": "am f10929fb: am a1bf0a06: Merge \"Minor fix for InputReader support for non-touchscreen devices.\" into gingerbread\n\nMerge commit \u0027f10929fb350395c21edd2cba7641479afe75e750\u0027\n\n* commit \u0027f10929fb350395c21edd2cba7641479afe75e750\u0027:\n  Minor fix for InputReader support for non-touchscreen devices.\n"
    },
    {
      "commit": "8da727a1aa28205b9fb8acf63808ce1543bbf00e",
      "tree": "50200abec1b1b2fae614c95c1ce3e94d2c493e42",
      "parents": [
        "d577cfd73a223279f9a5af698f55edd38a3fe4db"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 07 13:44:51 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 07 13:44:51 2010 -0700"
      },
      "message": "Minor fix for InputReader support for non-touchscreen devices.\n\nChange-Id: I2256e37dd1c6f3836f82786aae14ee5d0c98f4c6\n"
    },
    {
      "commit": "928b5bfa7db23cddc93624a6ff31ff208e8b24bf",
      "tree": "4d6dd5b5b085c4cf6000b4c0d51b6d53f11b5e06",
      "parents": [
        "13297fddcbac3247d78f4c7e6408fa6dd8011d9f",
        "56364bcd0d1a1b064db3e83fdb64f948ce5c2ad7"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Oct 07 12:20:45 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 07 12:20:45 2010 -0700"
      },
      "message": "am 56364bcd: am 78d15acf: Merge \"Make secure views tolerate IME overlays.\" into gingerbread\n\nMerge commit \u002756364bcd0d1a1b064db3e83fdb64f948ce5c2ad7\u0027\n\n* commit \u002756364bcd0d1a1b064db3e83fdb64f948ce5c2ad7\u0027:\n  Make secure views tolerate IME overlays.\n"
    },
    {
      "commit": "19dfc83c376d8f5ff3b128ee4c675790cffbc02d",
      "tree": "06b41715a604ca7dc09cc852c28a8cd2354a0fee",
      "parents": [
        "95037fb1a633f5bdeb4e0ece2d18a4974259c368"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Oct 05 12:26:23 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Oct 05 12:26:23 2010 -0700"
      },
      "message": "Make secure views tolerate IME overlays.\n\nChange-Id: I3cf09b9d91045f4d9c558b4aace482a7b0bbd3d8\n"
    },
    {
      "commit": "a4d45cda697dbd8fa164766b87163d1b0469bd81",
      "tree": "4d24c7155ac21ba0eb164798391cfb099dd58f14",
      "parents": [
        "0f5f2e4c27612e2cda231473aec0c06838ff3750",
        "ea58d1bac2960c1794f048bfa5d1a60b1a3d23a1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 21:49:39 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 01 21:49:39 2010 -0700"
      },
      "message": "am ea58d1ba: am e951ef07: Merge \"Wait for initial device scan to finish before updating config.\" into gingerbread\n\nMerge commit \u0027ea58d1bac2960c1794f048bfa5d1a60b1a3d23a1\u0027\n\n* commit \u0027ea58d1bac2960c1794f048bfa5d1a60b1a3d23a1\u0027:\n  Wait for initial device scan to finish before updating config.\n"
    },
    {
      "commit": "0f5f2e4c27612e2cda231473aec0c06838ff3750",
      "tree": "e55ea53a7a492f40c19be493b6f063c8603e9b22",
      "parents": [
        "2874c3dec4f9ffd59b2be3de62c1148534396828",
        "e11b76d3efb056edea301d53a354d0730adf3520"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 21:49:29 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 01 21:49:29 2010 -0700"
      },
      "message": "am e11b76d3: am f6295b35: Merge \"Minor logging changes to input dispatcher to help with debugging.\" into gingerbread\n\nMerge commit \u0027e11b76d3efb056edea301d53a354d0730adf3520\u0027\n\n* commit \u0027e11b76d3efb056edea301d53a354d0730adf3520\u0027:\n  Minor logging changes to input dispatcher to help with debugging.\n"
    },
    {
      "commit": "7342bb9693f480f6c713b4a4f82a9ad9131cd667",
      "tree": "bd68c8bf4604123404347880da67c3f9c34935e7",
      "parents": [
        "f2f487183052865d50c004a835360be1728b5a52"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 18:55:43 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 18:55:43 2010 -0700"
      },
      "message": "Wait for initial device scan to finish before updating config.\n\nThis change narrows the opportunity for a race condition setting the\nresource Configuration while devices are being updated.\n\nChange-Id: I58efa563f4129ab0fce7108511d16a99dff7e451\n"
    },
    {
      "commit": "f2f487183052865d50c004a835360be1728b5a52",
      "tree": "98965f96bbec354c7b93de0b83a882b43bf86d2a",
      "parents": [
        "0eaf3931a31c29f3a3883aab426b595c231c2a58"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 17:46:21 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 18:05:13 2010 -0700"
      },
      "message": "Minor logging changes to input dispatcher to help with debugging.\n\nAdded dumpsys reporting to EventHub.\nMade the formatting a bit clearer.\nAdded \u0027Locked\u0027 suffix to some internal methods of EventHub.\n\nChange-Id: Ic449560bcce378f6361895d27c66854e9724abb0\n"
    },
    {
      "commit": "efb8a3d6e058c8bc90bb9da6c58dde453f359851",
      "tree": "4c356bd35a137e560b1a563a9ceff6366d90ca9d",
      "parents": [
        "82a1372070e75df1a0201b22e33514bbb0d7b5e5",
        "57fa3e8b4c94125ddb5be015dd7fbde4a458894f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 17:08:34 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 01 17:08:34 2010 -0700"
      },
      "message": "am 57fa3e8b: am 9e32a438: Merge \"Support haptic feedback for virtual keys defined in key layout.\" into gingerbread\n\nMerge commit \u002757fa3e8b4c94125ddb5be015dd7fbde4a458894f\u0027\n\n* commit \u002757fa3e8b4c94125ddb5be015dd7fbde4a458894f\u0027:\n  Support haptic feedback for virtual keys defined in key layout.\n"
    },
    {
      "commit": "0eaf3931a31c29f3a3883aab426b595c231c2a58",
      "tree": "e79493c39fd735a3ff237fa43a1633abd5ef9910",
      "parents": [
        "10e2120bdd2d99e100db187d49ac6a8495c7f956"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 14:55:30 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 01 15:08:56 2010 -0700"
      },
      "message": "Support haptic feedback for virtual keys defined in key layout.\n\nChange-Id: I83e4108a87332692e03791dc066206becbc7941f\n"
    },
    {
      "commit": "52a4ac3f5ede7e781c97d787297d9e644dfef958",
      "tree": "c1a323ce007a52335d62fe87d60be8ffd8308ef2",
      "parents": [
        "dcad41988f660a74ce762f23a5d76c948974605a",
        "5d3cef8a6d1baec29512764b9e0ba240ccd7fcfe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 30 18:12:28 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 30 18:12:28 2010 -0700"
      },
      "message": "am 5d3cef8a: am e0c12c88: Merge \"Move verbose logging of device capabilities to dumpsys.\" into gingerbread\n\nMerge commit \u00275d3cef8a6d1baec29512764b9e0ba240ccd7fcfe\u0027\n\n* commit \u00275d3cef8a6d1baec29512764b9e0ba240ccd7fcfe\u0027:\n  Move verbose logging of device capabilities to dumpsys.\n"
    },
    {
      "commit": "ef3d7e861154c1ce1b8f86292138fc36c30232a3",
      "tree": "fd94e6c198b41d9fb36d4b15d3c7cad188a2c620",
      "parents": [
        "99f8c5ee621d78a24583a10e459ba40aab511a17"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 30 14:33:04 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 30 15:34:48 2010 -0700"
      },
      "message": "Move verbose logging of device capabilities to dumpsys.\n\nChange-Id: I5d55eaebfdf049bd1ac1e7bab2758886cfefc9d7\n"
    },
    {
      "commit": "0c1f756812442aa61fcd9c19c009657729a05d80",
      "tree": "2af73f224846e02e97118f4fccaabb59764759fd",
      "parents": [
        "b974d0c8f21000354bec04dea9cc6c938cdccccd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 28 13:24:41 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 28 13:41:00 2010 -0700"
      },
      "message": "Fix bug in split touches.\n\nCherry-picked down to master.\n\nChange-Id: I786761bd6aecc021ae22d8c9a022324f3a9980d1\n"
    },
    {
      "commit": "aeec2bf66a6119261ca47d98ef1aef954fb56462",
      "tree": "07b4a3c9a1e2079b978830bc6a0f7a1d869fc704",
      "parents": [
        "6d028dd2f102a6eafaa2edebeb55f55b4c32fc42"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 28 13:24:41 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 28 13:26:42 2010 -0700"
      },
      "message": "Fix bug in split touches.\n\nChange-Id: I808c2201a06938f82817058059f4ddcc9b1a9ae2\n"
    },
    {
      "commit": "c188062eb6c44c05d24aeb207df4d7e5dbdf089e",
      "tree": "9a848df35cf0f4c984cd2cb29245157c5dbefa26",
      "parents": [
        "40f45eeeb4914511c0d4d749d1f4c768e82b79a3",
        "26d5786fb1a43d82b40fa908e1220a018b748c93"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 28 12:47:13 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Sep 28 12:47:13 2010 -0700"
      },
      "message": "am 26d5786f: am 9c37447e: Merge \"Fix pointer index when splitting secondary pointers.\" into gingerbread\n\nMerge commit \u002726d5786fb1a43d82b40fa908e1220a018b748c93\u0027\n\n* commit \u002726d5786fb1a43d82b40fa908e1220a018b748c93\u0027:\n  Fix pointer index when splitting secondary pointers.\n"
    },
    {
      "commit": "9a01d0519fa56fa75864cb96045c6ee832a39ff4",
      "tree": "96f85df7b4a0afc930d4ef348494c53a9c1b07f1",
      "parents": [
        "68ef7f3c3a8deb0e14b0b6325876b23cecc191b3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 27 16:35:11 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 27 20:54:28 2010 -0700"
      },
      "message": "Fix pointer index when splitting secondary pointers.\n\nChange-Id: Ib01e810ea5b64501b1303000bbef0f0a1db2114e\n"
    },
    {
      "commit": "e65041225ec0bbc3d67a3b70cdc6d598a5760043",
      "tree": "8eb92db22f21de0a2843aa39b9988d15e00233d9",
      "parents": [
        "464fb74e28b6d76d5e741abcdbb714eea2d9b4d1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 27 14:52:15 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 27 16:10:17 2010 -0700"
      },
      "message": "Add support for transferring touch focus.\n\nPrerequisite for drag and drop.\n\nChange-Id: Iedbe93ed0f3e1c4083130fe66b4ba06d416afce0\n"
    },
    {
      "commit": "01ce2e9eee41cc0c24b0d16465710a28ea337d5d",
      "tree": "08e45a8ec47e63760655a1770dac367258511538",
      "parents": [
        "37cedce14bc0e68e8bf27c2cecb181728226e6ed"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 26 22:20:12 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 26 22:20:12 2010 -0700"
      },
      "message": "Add suuport for splitting touch events across windows.\n\nThis feature is currently used to enable dragging the start and end\nselection handles of a TextView at the same time.  Could be used for\nother things later.\n\nDeleted some dead code in ArrowKeyMovementMethod and CursorControllers.\n\nChange-Id: I930accd97ca1ca1917aab8a807db2c950fc7b409\n"
    },
    {
      "commit": "987ba54127caaaa87056965b3d98b7e1a5b110b7",
      "tree": "50357749895231425e3ff7a3193e15a5b74e30dc",
      "parents": [
        "9404e633a55cd325b57732cdd776053b3886b611",
        "dbb7b6da080782d032251c1ab181145eaa3fc2b2"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 16 23:48:53 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 16 23:48:53 2010 -0700"
      },
      "message": "Merge \"Fix sim-eng build on Hardy\" into gingerbread"
    },
    {
      "commit": "1ac48eabd39e0cfd087ddf2c3b6ba8e56803bdd4",
      "tree": "0308ce43dfd43cc64679911169f99f269ac7d0a0",
      "parents": [
        "9c2587104ae259b9fa6a3525063197cc08e8820b",
        "7dae0e47abb5c1fb852c10b3ba0bc6464dd76e96"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 17:12:31 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 16 17:12:31 2010 -0700"
      },
      "message": "Merge \"Ensure input dispatcher and native looper handles EINTR.\" into gingerbread"
    },
    {
      "commit": "7dae0e47abb5c1fb852c10b3ba0bc6464dd76e96",
      "tree": "fb36ff43a393b81bc1bdbbf6cde025853561b8ac",
      "parents": [
        "6abea1ebc29c7bc8397f0470d57a4e485b5d4ee3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 17:04:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 17:04:52 2010 -0700"
      },
      "message": "Ensure input dispatcher and native looper handles EINTR.\n\nChange-Id: I0a42db5f273b9bfe4ab174e4ee65d5d852f9f6bc\n"
    },
    {
      "commit": "54a1825121d006d4a4dcbbadf4eac9910f44ef8c",
      "tree": "70410aee79ef0d318b89aefb5737f0e8c097558b",
      "parents": [
        "24326f7223275ba9c85014b86d42040e3a7d2815"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 14:07:33 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 16:41:46 2010 -0700"
      },
      "message": "Fix app switch latency optimization.\n\nThis optimization was broken due to recent changes in how ANRs are handled.\n\nChange-Id: Ic99248a12755fadac8d4893e7d305b773e038d3d\n"
    },
    {
      "commit": "dbb7b6da080782d032251c1ab181145eaa3fc2b2",
      "tree": "246aec8711aa8e1ac7f9a28d838622e17904f2c6",
      "parents": [
        "a7516e90d01a22d17a470695eefa905e0ff066cc"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 16 16:28:13 2010 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 16 16:28:13 2010 -0700"
      },
      "message": "Fix sim-eng build on Hardy\n\nOlder glibc version do not include BSD htole32 and htole64 which are\npresent in bionic. This worksaround a sim-eng build issue by only\nusing htole32/htole64 if the host is not little endian.\n\nChange-Id: Ia8d0d36285f3c34c51a331790458e52a21c2925f\n"
    },
    {
      "commit": "24326f7223275ba9c85014b86d42040e3a7d2815",
      "tree": "6695aa7ef061a827c88956806d892ea09c70fc7c",
      "parents": [
        "b9eb949bcae977a3f86e8307f3854f157227c34c",
        "dc1ab4b5cc274b7d744c11a939bb5910becec5e0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 12:57:56 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 16 12:57:56 2010 -0700"
      },
      "message": "Merge \"Input API review.\" into gingerbread"
    },
    {
      "commit": "2a95c2a9ec703b9d19b750cb854fb4ec4899e205",
      "tree": "ce7e86def75520562f38adfe65f3228dfdc6ad76",
      "parents": [
        "567c00a86f748ad4d798ae50a09505cc051fc095"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 12:31:46 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 12:31:46 2010 -0700"
      },
      "message": "Fix input dispatcher regression on launcher drag\u0026drop.\n\nChange-Id: I40e937bd712cd2ed6cceac95dfd1b8c8e070724f\n"
    },
    {
      "commit": "dc3e00563ee6400936e3cb82405bb94df0b35078",
      "tree": "45a8f8fa13d5d8164a25a64f1137e279f1d9e59c",
      "parents": [
        "c7510581b81d63536db7d46ca8533106c8cf57c6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 11:02:16 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 16 11:02:16 2010 -0700"
      },
      "message": "Fix NPE when handling certain kinds of ANRs.\n\nChange-Id: Iccef1852e52c84f6f49d30c491431460a10b33d3\n"
    },
    {
      "commit": "519e024d1e682ca458cc2dab743589a12992c0e1",
      "tree": "1dfdac05031e352b7404a07f347b0444c70bc95b",
      "parents": [
        "3fd5fa4ca9dbdd5be46ec2952c7038cdd59e35d5"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 15 15:18:56 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 15 18:52:08 2010 -0700"
      },
      "message": "Make input dispatcher only ANR for foreground windows.\n\nRedesigned the input dispatcher\u0027s ANR timeout mechanism so it is much\ncloser to Froyo\u0027s policy.  ANR is only ever signalled if the dispatcher\nis waiting on a window to finish processing its previous event(s) and\nthere is new pending input.\n\nIn the old code, we tracked the dispatch timeout separately for each\ninput channel.  This was somewhat complicated and also resulted in the\nsituation where applications could ANR long after the user had pushed\nthem into the background.\n\nChange-Id: I666ecada0952d4b95f1d67b9f733842b745c7f4b\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": "09340a4bb99507d9b6bfbfc68a450d4d4f354d73",
      "tree": "603df9bc5628adab2095e8d90014e71d84690d51",
      "parents": [
        "b3ffc78f3432344702e6f5232067ab624083cad2",
        "4fe6c3e51be77e35f40872cdbca6c80f8f8b7ecb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 14 15:27:33 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 14 15:27:33 2010 -0700"
      },
      "message": "Merge \"Replace epoll() with poll() and rename PollLoop to Looper.\" into gingerbread"
    },
    {
      "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": "04262e9f842edf20168399b6a70f0d67e518fe69",
      "tree": "dd2c01550c43c4658f78d87a60d8d8407af9afe9",
      "parents": [
        "cc5494c9996f809e36539b24e8b6b67683383d29"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 13 22:57:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 13 23:16:58 2010 -0700"
      },
      "message": "Add logging of various important graphics events\n\nThere are 16 events logged in the event log:\nSF_APP_DEQUEUE_BEFORE\nSF_APP_DEQUEUE_AFTER\nSF_APP_LOCK_BEFORE\nSF_APP_LOCK_AFTER\nSF_APP_QUEUE\n\nSF_REPAINT\nSF_COMPOSITION_COMPLETE\nSF_UNLOCK_CLIENTS\nSF_SWAP_BUFFERS\nSF_REPAINT_DONE\n\nSF_FB_POST_BEFORE\nSF_FB_POST_AFTER\nSF_FB_DEQUEUE_BEFORE\nSF_FB_DEQUEUE_AFTER\nSF_FB_LOCK_BEFORE\nSF_FB_LOCK_AFTER\n\nall events log the buffer conserned and a timestamp in microseconds.\n\nby default the logging is not enabled, to turn it on:\nadb shell service call SurfaceFlinger 1006 i31 1\nadb shell setprop debug.graphic_log 1\n\nThe effect is immediate in SurfaceFlinger, but applications need to be\nrestarted.\n\nChange-Id: Ifc2e31f7aed072d9a7dede20ff2ce59231edbec1\n"
    },
    {
      "commit": "b88102f5b7e51552a3576cf197b4c8cf96f193d1",
      "tree": "c714dce33893a048f42a36e78b25dc0bc971b1c3",
      "parents": [
        "11fe181e16501103d7c0f70344661ea2ef5d3df9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 11:49:43 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 12 16:52:03 2010 -0700"
      },
      "message": "Input dispatcher ANR handling enhancements.\n\nThis change is essentially a rewrite of the main input dispatcher loop\nwith the target identification folded in.  Since the input dispatcher now\nhas all of the window state, it can make better decisions about\nwhen to ANR.\n\nAdded a .5 second deadline for processing app switch keys.  This behavior\npredates Gingerbread but had not previously been ported.\n\nFixed some timing inaccuracies in the ANR accounting that could cause\napplications to ANR sooner than they should have.\n\nAdded a mechanism for tracking key and motion events that have been\ndispatched to a window so that appropriate cancelation events can be\nsynthesized when recovering from ANR.  This change helps to keep\napplications in sync so they don\u0027t end up with stuck buttons upon\nrecovery from ANRs.\n\nAdded more comments to describe the tricky parts of PollLoop.\n\nChange-Id: I13dffca27acb436fc383980db536abc4d8b9e6f1\n"
    },
    {
      "commit": "b21fb104cc95fe7e5daf3b3626241e525c39a3f1",
      "tree": "5223ab6cdc459955d35add9af46210c8c6249a48",
      "parents": [
        "de2f3340d64e20e51029ff438f0d635d97b8a3e0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 07 10:44:57 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 08 12:28:43 2010 -0700"
      },
      "message": "Fix key repeat delay.\n\nChange-Id: I6216e082324ee29bf50e37acc673350ca5417c4d\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": "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": "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": "545eab8ae80b070177cc442931eadc8cd980de26",
      "tree": "50a767dd9641eca11fe85290993654495247fb6e",
      "parents": [
        "0014474569b8bb237f00fa692ab173678bff619e",
        "e509328efcbb05856e5e9c0310394911ee3243dc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 19 13:37:35 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 19 13:37:35 2010 -0700"
      },
      "message": "Merge \"remove unused pixel format\" into gingerbread"
    },
    {
      "commit": "0f4d7bc1844af4934a0288e715a4f1350fd5dac2",
      "tree": "b97592a41cd0db3c6758a02dec829dac69ebf51d",
      "parents": [
        "3d8c9bdbed0c31143227697bd0d94fd234fe08ad"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 19 11:55:13 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Aug 19 13:26:58 2010 -0700"
      },
      "message": "Make the throttling more sensitive to end-to-end latency.\n\nThe code now takes into account the time when the event was generated.\nSo with a 60Hz throttling rate, it ensures that a motion event will not\nbe delayed due to throttling by any more than 1/60th of second past\nthe time it was generated.\n\nChange-Id: Iaea1d4f76e79036b4a18873485230731c3cd63c3\n"
    },
    {
      "commit": "e509328efcbb05856e5e9c0310394911ee3243dc",
      "tree": "1a5111fe0ccdc2a108ed7fc0bc7c6d0abbfc59d2",
      "parents": [
        "3d8c9bdbed0c31143227697bd0d94fd234fe08ad"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 19 13:11:42 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 19 13:11:42 2010 -0700"
      },
      "message": "remove unused pixel format\n\nChange-Id: I55bc3cc41385743c07f7e4de06335c922f746f73\n"
    },
    {
      "commit": "ae9fc03bdccda709101291bbcd3beaa5b6daebfc",
      "tree": "69367f760a943f9eda3edabcb1130302ea6cb0d8",
      "parents": [
        "6b2c56a299eb05deef2b887549e29e9e9f0f2cf6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 18 15:51:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 18 16:58:27 2010 -0700"
      },
      "message": "Add support for throttling motion events.\n\nChange-Id: I24b3a17753e91ecda60a60fe5cd2e6b3260e033d\n"
    },
    {
      "commit": "aeb00c409d1ead2a3cb0f3d98b78de80adeec52b",
      "tree": "3c58fb70f4cb6e85b787fdf5e594a5322355adf0",
      "parents": [
        "72e0b2ab08dc49857955a4560de296fdddada8dc"
      ],
      "author": {
        "name": "Sean McNeil",
        "email": "sean.mcneil@windriver.com",
        "time": "Wed Jun 23 16:00:37 2010 +0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 18 13:53:36 2010 -0700"
      },
      "message": "Only monitor recognized uevent devices.\n\nsystem_server can potentially monitor uevent devices that are\nof no use to it. For instance, an accelerometer implementation\nas uevents. This would cause the process to be busy when\nunnecessary. If a device cannot be classified, don\u0027t monitor it.\n\nChange-Id: Ib2c93105e7d746d9c1a7414bea8bab3fb8c0b70a\n"
    },
    {
      "commit": "72e0b2ab08dc49857955a4560de296fdddada8dc",
      "tree": "c8e77150d327edf1249f89faf998a6eacdd27508",
      "parents": [
        "f2af87b39b294a197b9a7aaa611a14cfcd669a16",
        "2dfd7a7cbfa565e3aca584a9e5b6f681692b5781"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 18 13:38:32 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 18 13:38:32 2010 -0700"
      },
      "message": "Merge \"Fix some input device mapping bugs with certain drivers.\" into gingerbread"
    },
    {
      "commit": "2dfd7a7cbfa565e3aca584a9e5b6f681692b5781",
      "tree": "13d01c0fda0f5a5e3b6c298b5b3607f8c0e0147a",
      "parents": [
        "3922484d7458a4ab72fc1ca8952a0776dd1c7d20"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 17 20:38:35 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 18 13:37:45 2010 -0700"
      },
      "message": "Fix some input device mapping bugs with certain drivers.\n\nOn single-touch devices, pointer up/down is signalled by a BTN_TOUCH\nkey event.  Previously we handled BTN_TOUCH immediately but some drivers\nmay produce the sequence BTN_TOUCH, ABS_X, ABS_Y, SYN_REPORT on pointer down\nwhich caused us to emit a bad initial pointer down location.\nNow we wait for SYN_REPORT before reporting the up or down.\n\nOn multi-touch devices, pointer up can be signalled by as little as\nthe sequence SYN_MT_REPORT, SYN_REPORT.  This change ensures that we\nhandle this case.\n\nAdded support for reading ABS_MT_PRESSURE when available.\nCorrected mapping of touchMajor/touchMinor on single touch devices.\nMinor code cleanup.\n\nChange-Id: Ic7ec4811241ed85a06e59b8a839ca05180d491d4\n"
    },
    {
      "commit": "c4554b9a0885ac3713575e91d8d33c5670b52322",
      "tree": "2d2b2a6dbc6ea600ac269e753773e9a8a42967ee",
      "parents": [
        "d313cab46e07c40f4cd1a94304a553e7eb809190"
      ],
      "author": {
        "name": "Jens Gulin",
        "email": "jens.gulin@sonyericsson.com",
        "time": "Tue Jun 22 22:21:57 2010 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 18 10:54:03 2010 -0700"
      },
      "message": "Keep track of remaining fd when devices are removed\n\nSometimes the wrong fd was accessed when the device was addressed\nby device id.\n\nThe earlier implementation assumed that two arrays were in sync\nbut one of them was compacted when devices were removed. Instead\nof that dependency the device now keeps track of it\u0027s file descriptor.\n\nChange-Id: Ib0f320603aafb07ded354bc3687de9759c9068f2\n"
    },
    {
      "commit": "cc2e717f1d43a836d1abdee06bcb946416d06fd6",
      "tree": "d55b14467e2c1f0d1b0ec9f5a212513af4bc17b6",
      "parents": [
        "72ce42352c1c229e05d910b4176f3cddb608e814"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 17 16:48:25 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 17 19:40:26 2010 -0700"
      },
      "message": "Optimize EventHub reads.\n\nChange-Id: Id7d09c0a6e5c741c1e29becd2b6560772c5ff372\n"
    },
    {
      "commit": "2cbecea4c9627d95377fc3e3b8a319116cee7feb",
      "tree": "da379443f3e609953e9e1aa1f8d8325ad42d2a68",
      "parents": [
        "90291577a08f582e0978651f55dd950f40eb111d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 17 15:59:26 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 17 17:03:42 2010 -0700"
      },
      "message": "Fix possible race conditions during channel unregistration.\n\nPreviously, the input dispatcher assumed that the input channel\u0027s\nreceive pipe file descriptor was a sufficiently unique identifier for\nlooking up input channels in its various tables.  However, it can happen\nthat an input channel is disposed and then a new input channel is\nimmediately created that reuses the same file descriptor.  Ordinarily\nthis is not a problem, however there is a small opportunity for a race\nto arise in InputQueue.\n\nWhen InputQueue receives an input event from the dispatcher, it\ngenerates a finishedToken that encodes the channel\u0027s receive pipe fd,\nand a sequence number.  The finishedToken is used by the ViewRoot\nas a handle for the event so that it can tell the InputQueue when\nthe event has finished being processed.\n\nHere is the race:\n\n1. InputQueue receives an input event, assigns a new finishedToken.\n2. ViewRoot begins processing the input event.\n3. During processing, ViewRoot unregisters the InputChannel.\n4. A new InputChannel is created and is registered with the Input Queue.\n   This InputChannel happens to have the same receive pipe fd as\n   the one previously registered.\n5. ViewRoot tells the InputQueue that it has finished processing the\n   input event, passing along the original finishedToken.\n6. InputQueue throws an exception because the finishedToken\u0027s receive\n   pipe fd is registered but the sequence number is incorrect so it\n   assumes that the client has called finish spuriously.\n\nThe fix is to include a unique connection id within the finishedToken so\nthat the InputQueue can accurately confirm that the token belongs to\nthe currently registered InputChannel rather than to an old one that\nhappened to have the same receive pipe fd.  When it notices this, it\nignores the spurious finish.\n\nI\u0027ve also made a couple of other small changes to avoid similar races\nelsewhere.\n\nThis patch set also includes a fix to synthesize a finished signal\nwhen the input channel is unregistered on the client side to\nhelp keep the server and client in sync.\n\nBug: 2834068\nChange-Id: I1de34a36249ab74c359c2c67a57e333543400f7b\n"
    },
    {
      "commit": "c3fc2d03d58a258c53c9265a70143d4af076b764",
      "tree": "762de411088b9854a766fbe382235bd6fa913df1",
      "parents": [
        "d98d0fc6e9172d3f130794e499462c911920adf6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 10 15:47:53 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 10 16:28:03 2010 -0700"
      },
      "message": "Fix safe mode and KeyEvent.getMaxKeyCode().\n\nBug: 2901731\nChange-Id: I78617c1b9dee3790fc590e5af4b5083368873184\n"
    },
    {
      "commit": "6328cdc89e099806a1893b89e4c724d596272d9e",
      "tree": "691dfe8a5296cdc6c6773351b21114e7a34aec86",
      "parents": [
        "04d7e83e65e246e154b5b346e3eb0081b741ae88"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 29 18:18:33 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 30 14:43:58 2010 -0700"
      },
      "message": "Improve thread safety of input mappers.\n\nAlso fixed bug where old touch screen size could be reported by\ngetMotionRange if an orientation change occurred but the user has not\nyet touched the screen.\n\nBug: 2877345\nChange-Id: I7878f47458f310ed6ebe6a5d1b2c9bec2c598ab9\n"
    },
    {
      "commit": "aab985b951c4cf5ec2753ffbec516164b3c03c3a",
      "tree": "2072dd6ce828bcfae5fd9f88c852367099912f5f",
      "parents": [
        "6ec402b5ae33c8927694d8522b4cc6a5c8ba974e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 29 13:05:52 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 29 13:05:52 2010 -0700"
      },
      "message": "Fix touch input in landscape mode.\n\nChange-Id: I7d47e9b02e6443ed604a6bf842028a5db934d90d\n"
    },
    {
      "commit": "6ec402b5ae33c8927694d8522b4cc6a5c8ba974e",
      "tree": "5d4b19eda9ade71d7e34635479426f1dd484e8c2",
      "parents": [
        "6dea6f4e71b53e421564d783c227cbe0a2469183"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 28 15:48:59 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jul 29 12:54:27 2010 -0700"
      },
      "message": "DO NOT MERGE: Fix input event injection ANRs on UI thread.\n\nAdded a new asynchronous injection mode and made the existing\nsynchronization mechanism more robust.\n\nChange-Id: Ia4aa04fd9b75ea2461a844c5b7933c831c1027e6\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": "d3616592fe1b315b589766c4b74ce728fc4968f5",
      "tree": "ef2bc2b0bed3aa307d444d8cab413bec5722ea7c",
      "parents": [
        "ace999b096739d376d4845c0ba94599197ff8477"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 17:21:06 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 17:46:03 2010 -0700"
      },
      "message": "Fix trackball down and movement bugs.\n\nBug: 2823788\nChange-Id: Icb0c392b58f7e735614460b5eb87439cb73ac4f2\n"
    },
    {
      "commit": "00ba884436dc8b222ad850c73c936d87bf4e84de",
      "tree": "ca4d18c6f004cf59a54508fa4e99f01f81e8753e",
      "parents": [
        "e068b46408f3ff390b47dc78ccf10fab76883051"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 15:01:56 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 16 15:11:24 2010 -0700"
      },
      "message": "Fix individual pointer id up/down reporting.\n\nFix a minor threading bug in InputManager dump.\n\nChange-Id: Ic2eecf7df5a8dc9f40561fcb03ebe58a2c073778\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": "eb6e0df18a6567d38caa039ba0b0e49e2e9b46c3",
      "tree": "b2250fd3fcb9f7171b0066b03f47aa08415bb550",
      "parents": [
        "c98e431119867dbc4ae3da52d5c374607c0f67b9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:40:08 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jul 14 22:55:02 2010 -0700"
      },
      "message": "Don\u0027t build framework tests for simulator target.\n\nChange-Id: I70f29c7eb307e4f3ec5702f4eb9d97b4342e2f36\n"
    },
    {
      "commit": "058d0390a44f68b67788021bae9ca1775812997b",
      "tree": "23b97aa83da730d4057a68647f8fd09a37fe636f",
      "parents": [
        "36ff93aa1f489e6af6c2acce38beb0bffd6b8f8a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 07 14:53:13 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 15:12:05 2010 -0700"
      },
      "message": "Remove the YV16 format for simplicity\u0027s sake.\n\nChange-Id: Iee03d100933ba0c67b13d51e0435be3b4cd953cf\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": "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": "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": "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": "00fa7bdd69f0868fd17ea7c881c771d785b2fbbd",
      "tree": "6fff8ad404e57af316c6ce5a20020dc209eb3cc6",
      "parents": [
        "8ecfb60a8e74dfcd51bbf3f236d5f414a4d5ac7d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 02 15:37:36 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sat Jul 03 19:23:01 2010 -0700"
      },
      "message": "More native input dispatch work.\n\nRemoved old input dispatch code.\nRefactored the policy callbacks.\nPushed a tiny bit of the power manager state down to native.\nFixed long press on MENU.\nMade the virtual key detection and cancelation a bit more precise.\n\nChange-Id: I5d8c1062f7ea0ab3b54c6fadb058c4d5f5a9e02e\n"
    },
    {
      "commit": "61c55c49073d4b10ca4dfdbb4e86684d11ac9c1c",
      "tree": "db54ecb0cc3ba4558e591818f9c74e9fe05bba4d",
      "parents": [
        "c6e1d88022db800773401c16803e1ab27fd01a7e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 01 21:17:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 01 21:17:56 2010 -0700"
      },
      "message": "remove unused YUV formats\n\nChange-Id: Ie84616f842c7e0329d68e67e65a65d510558004b\n"
    },
    {
      "commit": "c6e1d88022db800773401c16803e1ab27fd01a7e",
      "tree": "cca803afe826f86faab92bdbb70e35f6d672a052",
      "parents": [
        "30fe6fa07a9b9c6e7498198608125add8eb40744",
        "8b49bd1a2f8117e1c22884f0150e72cbcf838f32"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jun 30 16:05:30 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 30 16:05:30 2010 -0700"
      },
      "message": "Merge \"Introduce official public NativeWindow type.\" into gingerbread"
    },
    {
      "commit": "30fe6fa07a9b9c6e7498198608125add8eb40744",
      "tree": "ea9863284f7fdb5aa3c88292ca22d8aff3210a59",
      "parents": [
        "d8ae28854e1ed9bd90d7407f94c2e5ed9028b712",
        "4cfb3a69d2906fc2539dd30508aa6ba8d39065a9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 30 15:59:02 2010 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 30 15:59:02 2010 -0700"
      },
      "message": "Merge \"fix live wallpapers on Droid\" into gingerbread"
    },
    {
      "commit": "4cfb3a69d2906fc2539dd30508aa6ba8d39065a9",
      "tree": "e54fd25fcd98e57a44a51c7b1b18cad05b2c2270",
      "parents": [
        "c19ffcba19f0d94552945105a7e29530b4806dd4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 30 15:43:47 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 30 15:43:47 2010 -0700"
      },
      "message": "fix live wallpapers on Droid\n\nOn omap3 h/w we force opaque formats to RGB_565 instead of RGBX_8888\nbecause the GL driver doesn\u0027t support it. RGBX_8888 is always remapped\nto RGBA_8888.\n\nChange-Id: I0bfabeb98c8d3a399079e6797cf2a0ee95915324\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": "d0097871828bb7d5d6eec06cadd92c2e3358849b",
      "tree": "c570862df0f2c38da96d8b88bb6ba10315810fc7",
      "parents": [
        "294c9fb8990ded73be52a3c1bfddbe1cebcd8b8e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 14:41:59 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Jun 30 14:41:59 2010 -0700"
      },
      "message": "Fix injection of specially intercepted keys like HOME.\n\nThis change mainly unwinds a premature optimization in the\ndispatch pipeline.\nTo test HOME injection, run \u0027adb shell input keyevent 3\u0027.\n\nChange-Id: I1c4b7377c205da7c898014b8b07fc6dc1d46e4dd\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": "0b72e82c5f5d4ab709539c3490d6c7023f680dff",
      "tree": "c0b9adc3370bd600a9dc5bb8f4ffa4e6151d1977",
      "parents": [
        "5d7f6e614e7ead1fbe40a6886f78c31809bcbd40"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 29 16:52:21 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 29 16:52:21 2010 -0700"
      },
      "message": "Fix native input dispatch in the emulator.\n\nSet a default orientation of ROTATION_0.\nAdded some more careful checks based on whether we have valid\nabsolute axis information from the driver.\nReset key repeating during configuration changes since the keyboard\ndevice may have been removed.\n\nChange-Id: I685960828acffcb17595fc5683309e8064a76714\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": "349703effce5acc53ed96f7ed8556131f0c65e18",
      "tree": "359217d5076e3005c724b2117a59ffec81e7a83b",
      "parents": [
        "f2b544f5ae7676f7ab4cdf3379b2ed3c60a65def"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 22 01:27:15 2010 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 28 19:10:54 2010 -0700"
      },
      "message": "Native input event dispatching.\n\nTarget identification is now fully native.\nFixed a couple of minor issues related to input injection.\nNative input enabled by default, can be disabled by setting\nWindowManagerPolicy.ENABLE_NATIVE_INPUT_DISPATCH to false.\n\nChange-Id: I7edf66ed3e987cc9306ad4743ac57a116af452ff\n"
    },
    {
      "commit": "e91a5db35b0faecb9387ba09341713568b1ae86c",
      "tree": "c066471d9aa6ba58ea3f3d4b3f5da2e8c3e160d5",
      "parents": [
        "69a4817e3e1e368e758ff8c238deb5ee26963c04"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 23 16:50:30 2010 -0700"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Wed Jun 23 16:51:07 2010 -0700"
      },
      "message": "Remember to initialize timestamps in the dispatch allocator\n\nChange-Id: I83a2d353c34ff84a7d130e602c6dedc6a5541944\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": "07ccf5ad7edfeeebb79208ad3e8a52917fe038a8",
      "tree": "9c1f269584648a4c4591ec0b885eb3811952538a",
      "parents": [
        "875500b47ac74a164f7792ce89a16d600ea72695"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 21 17:45:29 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 21 18:22:09 2010 -0700"
      },
      "message": "remove unused YUV formats\n\nChange-Id: Id0ae28b1700cf771cdbe0ca27b139d32cab90b2a\n"
    }
  ],
  "next": "28333315c6f62b303de2ec0ac9e48158ed419f06"
}
