)]}'
{
  "log": [
    {
      "commit": "074b8b7cf19d128f16e0de12bc2fc58e7438ec37",
      "tree": "f772ea5caeadb85c46980cba75d4ef1cc8bac816",
      "parents": [
        "c8dc8eb3275a6d05e27824f322796e97e5e50e2f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 31 19:01:31 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 31 19:01:31 2012 -0700"
      },
      "message": "Eliminate potential reentrance from unregisterInputChannel.\n\nEnsure that all callbacks into the window manager policy occur\non the input dispatcher thread in the right place.  This fixes\na potential deadlock that may occur if the window manager\nunregisters an input channel while holding its own lock.\n\nThe change is simply to defer running asynchronous commands\n(usually callbacks into the policy) until the next iteration\nof the dispatch looper thread.\n\nBug: 7382388\nChange-Id: I90095580d717fcddb2209ef332df56400f837a34\n"
    },
    {
      "commit": "f33b2b2b2483fa824c650b281159ca62e1d0123a",
      "tree": "fbad3fecf3697d311bbbe16746d046a7696ca343",
      "parents": [
        "f948500239803b2b7247ff5058e39e4d645c5b70"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 05 17:59:56 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Oct 05 19:33:28 2012 -0700"
      },
      "message": "Recover from bad input event timestamps from the kernel.\n\nThis can happen due to a race when the input device is\nopened or if the kernel happens to be missing the required\nAndroid patches to set the timestamp correctly.\n\nBug: 7291243\nChange-Id: If4319440eaff2889147c86296abd39efc5664346\n"
    },
    {
      "commit": "1e3b98d47df596d0c4eadbdf60143709f8465b28",
      "tree": "ed63fa39f6d2db3b3a3fd9caf61174129198c6cc",
      "parents": [
        "1f7a09b5df9f859781d9cfa0053fad44c72c2168"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 30 18:58:59 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Oct 01 14:27:34 2012 -0700"
      },
      "message": "New internal API to eliminate poke locks.\n\nAdded a new WindowManager.LayoutParams inputFeatures flag\nto disable automatic user activity behavior when an input\nevent is sent to a window.\n\nAdded a new WindowManager.LayoutParams field userActivityTimeout.\n\nBug: 7165399\nChange-Id: I204eafa37ef26aacc2c52a1ba1ecce1eebb0e0d9\n"
    },
    {
      "commit": "bcc046af4ef171aa3aa3c6b64efb5cafc1e46cd3",
      "tree": "497724ac54d4a380b5f466ea48a3a96265446754",
      "parents": [
        "580ee8b0c6e1aea1e2e1d60499b603b9168b44f0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 27 20:46:43 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 27 21:42:57 2012 -0700"
      },
      "message": "Bundle correlated switch changes atomically.\n\nThis is a prerequisite for headset jack detection on Manta.\n\nBug: 6548391\nChange-Id: I549a194344511c0cee578b00f6a9ab5fdbdfb99c\n"
    },
    {
      "commit": "83d616a9c7b9505153d258511eb5c16b552e268d",
      "tree": "4df9620550008dc0e3e0daf21f442b9fe6cc8051",
      "parents": [
        "7a8cce3d8a6fb781d840ddf60324a301f5a3f2d9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Sep 09 20:33:43 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Sep 10 15:48:47 2012 -0700"
      },
      "message": "Make input system aware of multiple displays.\n\nThe input system needs to know about the window that has\nfocus, even if it is on a secondary display.  So now we\nsend it the list of all windows and indicate which display\nthey are on.  We filter the list of windows as necessary\nwhen delivering touch events.\n\nTo keep things simple, monitor input channels and input\nfilters are not supported except on the main display.\nWe also do not pass the display id to applications; it is\nonly used inside the input system for now.\n\nProperly scale touch coordinates based on the viewport.\nThis will be needed to ensure that touch works on external\ndisplay as well as when the internal display is being used\nto simulate a different resolution.\n\nChange-Id: I1815579a52fcc852c519b5391fc7ab8767c2dc59\n"
    },
    {
      "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": "4fd42e5a90e88e34d2e870852a4d26457a712d16",
      "tree": "9728b8d9ae9344298129d3c1d0db2852a64f01b5",
      "parents": [
        "64a55af0ac700baecb0877235eb42caac59a3560"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 22:49:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:55 2012 -0700"
      },
      "message": "Remove unused \"layer\" argument from show().\n\nChange-Id: I795edb8889bbacdf20fc54d755034040295f281a\n"
    },
    {
      "commit": "64a55af0ac700baecb0877235eb42caac59a3560",
      "tree": "0f3c36ce8204e6cf8eedf04ce9ae24373239ddd8",
      "parents": [
        "0b722fe9ce98d97dbcb6fefd170b85ab7037e528"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 02:47:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:54 2012 -0700"
      },
      "message": "Add plumbing for new surface flinger display API.\n\nCleaned up the implementation of Surface and SurfaceSession\nto use more consistent naming and structure.\n\nAdded JNI for all of the new surface flinger display API calls.\n\nEnforced the requirement that all Surfaces created by\nthe window manager be named.\n\nUpdated the display manager service to use the new methods.\n\nChange-Id: I2a658f1bfd0437e1c6f9d22df8d4ffcce7284ca2\n"
    },
    {
      "commit": "0b722fe9ce98d97dbcb6fefd170b85ab7037e528",
      "tree": "67b40b76ec957ba919dd9e7d9b450fa7d2b2bfd9",
      "parents": [
        "d59db50ab0c3c7a232b2a564e763ca46c6f6ebfa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 24 22:40:14 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:34:53 2012 -0700"
      },
      "message": "Use new surface flinger API.\n\nChange-Id: Ic888577408a59a36481a48010e19c5e77c24e211\n"
    },
    {
      "commit": "b696de5c10ebcc7bf42d8487fc0e56e0e937754d",
      "tree": "3339fd190bad6be36c5e2ba8f57ebc11a5bb972b",
      "parents": [
        "155fc70252fd9ccee1f05da4e6966a99ec86d499"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 15:38:50 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jul 27 18:14:56 2012 -0700"
      },
      "message": "Move and rename user activity event type constants.\n\nChange-Id: Ie565808796773b6896e71ddfac6aaaf8031de846\n"
    },
    {
      "commit": "037f727f49ddf4f5575f6440799261bd1289eb6e",
      "tree": "441322056e00250bb770b07b1a3ffd7812180aa6",
      "parents": [
        "88c997a5abb3b2b2df1fb17fa3af40b34fbdd590"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 25 17:31:23 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 25 17:35:13 2012 -0700"
      },
      "message": "Improve handling of size and orientation.\n\nSome touch device drivers report the range of\nABS_MT_ORIENTATION as [0,1].  The Linux multitouch protocol\nspec says that the 0 value should always be considered vertical.\n\nAdd a new \u0027box\u0027 calibration mode for size to handle the case\nwhere width and height are being provided.  The \u0027diameter\u0027\ncalibration mode is inadequate because it drops one of these\ncomponents.\n\nChange-Id: I7bd744fdff95acd4044d295efe8bd7186dbe8061\n"
    },
    {
      "commit": "22aa51202652efbd55094217a046b8e5ecb7afe2",
      "tree": "19e5d1d7b7349c7255d46499bfa7d2593dd3f6b7",
      "parents": [
        "c4637d3efbbeb3e204691da96c357b5fea4ae2f1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 17 12:01:06 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jun 17 15:51:30 2012 -0700"
      },
      "message": "Capture input dispatcher\u0027s last ANR state in bug report.\n\nSome ANR bugs are very difficult to localize because by the time\nthe bug report has been captured, the relevant information is\ngone.  Work around this by capturing a log of the input dispatcher\u0027s\nstate at the exact time of the ANR before anything has changed\nand include this information in the bug report.\n\nAlso fixed a nit related to some format strings that had\nimproper field widths specified.\n\nBug: 6680398\nChange-Id: I5323bf18ec5e47a767cd053209753cc46852bf4c\n"
    },
    {
      "commit": "265f1ccc5128319d81eee70ee2d2ae81573efb11",
      "tree": "eb9ccd9eca60ccf645c22651e40850fecc1b5ed7",
      "parents": [
        "68cefd201809372a547257a273b805cabbd0da68"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 11 18:01:06 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 11 18:05:31 2012 -0700"
      },
      "message": "Improve ANR diagnostics.\n\nWhen an ANR occurs, log the associated reason.\n\nWhen an event takes too long to process (currently more than 2 seconds)\nlog basic information about the event including how long it actually\ntook.\n\nDump the contents of the inbound, outbound and wait queues as part\nof dumpsys input.\n\nBug: 6574842\nChange-Id: I9ab754c320f609cb86fe266c469a61e7032dfed6\n"
    },
    {
      "commit": "8249fc61837db488191213ac85355287cf8b4fdd",
      "tree": "e9b5f09ae2fac930313bb1878c818f7d6a4343ab",
      "parents": [
        "53d003f0e77291e7382c4871e0828014b470ab9f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 24 18:57:32 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 24 19:34:39 2012 -0700"
      },
      "message": "Don\u0027t ANR on hover, scroll or if a window goes away.\n\nPrevents ANR on hover or scroll events.\n\nPrevents ANR in the case where one finger touches a window which\nis subsequently removed then a second finger comes along and tries\nto touch something.\n\nChange-Id: I985ccb70cd86659992328f14f8a705f3f05ea2e5\n"
    },
    {
      "commit": "286298896bd33e7c44bfca881b64262fcab08c9c",
      "tree": "61ec332ce83ca0ca6f25046e35659aec029d8b66",
      "parents": [
        "44f41f28eaeee4097644ab9bfce5f969977b0428",
        "25a465bb44497682fde84935100e0acf4a0eb5db"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed May 16 13:24:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 16 13:24:10 2012 -0700"
      },
      "message": "Merge \"Revert \"services: input events: enable debugging in EventHub (touch screen issues)\"\" into jb-dev"
    },
    {
      "commit": "25a465bb44497682fde84935100e0acf4a0eb5db",
      "tree": "8226d74cc09125dd32c5f4110f38460c111e19c0",
      "parents": [
        "df0a89daa8018f9dec53d8d766e5a045347ffc93"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed May 16 10:33:49 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 16 10:33:49 2012 -0700"
      },
      "message": "Revert \"services: input events: enable debugging in EventHub (touch screen issues)\"\n\nThis reverts commit df0a89daa8018f9dec53d8d766e5a045347ffc93\n\nGet rid of the debugging for the release."
    },
    {
      "commit": "8a90e6e3174083f274538567d851f98478fc83e9",
      "tree": "2ac01015731bac0d759c8e7b6526ffa4874a369b",
      "parents": [
        "2f0957607411b99810226ad38d59cf18718b86d0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 12:24:35 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri May 11 12:32:56 2012 -0700"
      },
      "message": "Minor refactoring before starting on velocity tracker changes.\n\nBug: 6413587\nChange-Id: I5eba2bb57193bff78cb3740de5f87aca0b31d154\n"
    },
    {
      "commit": "571d4cbeec4adad050b8e188770e7e7dedc558f1",
      "tree": "1e51786b265cfef9db6ee5024a543ffd2bf81a50",
      "parents": [
        "9e1b58a1234256aada06521cb445673ca4236a0c",
        "fd23e3ed976b22b9a92ddb2cb3a46f9d2a0ce23f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 17:35:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 17:35:07 2012 -0700"
      },
      "message": "Merge \"Fix bugs in fallback key handling.\" into jb-dev"
    },
    {
      "commit": "fd23e3ed976b22b9a92ddb2cb3a46f9d2a0ce23f",
      "tree": "b3d9f4d12fe2d93ba9979e6d66b1d9f4de016178",
      "parents": [
        "af67fc65bf113b028ff33e71cd6a45810018c273"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 13:34:28 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed May 09 13:34:28 2012 -0700"
      },
      "message": "Fix bugs in fallback key handling.\n\nIf a fallback key is generated using a key plus a modifier,\nthen it\u0027s possible we might get a different fallback key\ngenerated if the modifier has changed.  PhoneWindowManager\nneeds to remember which fallback is last generated for a\ngiven key code so that it can apply the same fallback action.\n\nWhen generating cancellation events, it\u0027s important to have\npreserved the policyFlags of the original event.  Otherwise\nwe may not dispatch the cancellation properly.  For example,\nsome actions are not performed if the POLICY_FLAG_TRUSTED\nis not specified.\n\nRemember the metaState associated with a key event so we can\ninclude it when canceled.\n\nTell the policy when a fallback is being cancelled so that it\ncan clean up its state.\n\nAfter a SEARCH shortcut is invoked, clear the flag indicating\nthat a shortcut is pending.  This is to prevent SEARCH from\ngetting stuck down in the case where we might forget to send\nthe up.  (Shouldn\u0027t happen anymore after the prior fixes.)\n\nBug: 5616255\nChange-Id: I68f0a9679c7af464eaf31c099f2aa50b53fecf1f\n"
    },
    {
      "commit": "956f9bd0049b86b45868dfbd9b539d3ac35cdec2",
      "tree": "5a0df41cb01efecca571531c72851efaa0b406d5",
      "parents": [
        "794db6cbac6b9cd46ca300b2dc5cf9f8450a34fe",
        "df0a89daa8018f9dec53d8d766e5a045347ffc93"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Wed May 09 10:41:28 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 09 10:41:28 2012 -0700"
      },
      "message": "Merge \"services: input events: enable debugging in EventHub (touch screen issues)\" into jb-dev"
    },
    {
      "commit": "df0a89daa8018f9dec53d8d766e5a045347ffc93",
      "tree": "3e67728f90e7790314fae581581c0db89a6fd4bd",
      "parents": [
        "29bb27ef90564a294d506c2ffd546ba21788aeac"
      ],
      "author": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue May 08 16:38:33 2012 -0700"
      },
      "committer": {
        "name": "JP Abgrall",
        "email": "jpa@google.com",
        "time": "Tue May 08 16:38:33 2012 -0700"
      },
      "message": "services: input events: enable debugging in EventHub (touch screen issues)\n\nEnable verbose logging, but limit the output of events to only those that\nare stale by more than 1ms.\nThis does not overly pollute the logcat output.\n\n\nBug: 6258051\nChange-Id: I32012a379ca0e97c0834975482cd91f9eeb08907\n"
    },
    {
      "commit": "c042ee2acd8529b95c5dc99240d626e61d2500cd",
      "tree": "4af0331cce7c05242025c6c02506a5addd2c3ee9",
      "parents": [
        "a7771df3696954f0e279407e8894a916a7cb26cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 08 13:03:42 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 08 13:58:32 2012 -0700"
      },
      "message": "Disable input dispatch until boot finished.\n\nBug: 6263070\nChange-Id: I25e15e3d8af8eb3343c7b684fec345337d9f6aab\n"
    },
    {
      "commit": "a75fe05b6e0728ada82cd18dc3ac1ae3a61a10fb",
      "tree": "348ba26557db84e165c32abeee6027153b56edd2",
      "parents": [
        "daa3753a04699724d2cfe824ac1f5a266d643a05"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 18:41:26 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 18:41:26 2012 -0700"
      },
      "message": "Use EVIOCSCLOCKID correctly.\n\nBug: 6382031\nChange-Id: I87b0887ce867a79758bcd24e2202280270faaf8c\n"
    },
    {
      "commit": "daa3753a04699724d2cfe824ac1f5a266d643a05",
      "tree": "ddc33d395dd0f3d01a95775397356983fb28a076",
      "parents": [
        "32c8113510b2774f865e8ac763976b90d9db2706"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 15:54:03 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue May 01 16:34:20 2012 -0700"
      },
      "message": "Improve handling of built-in keyboard.\n\nThe window manager policy made some incorrect assumptions about the\nmeaning of the Configuration.keyboard field.  We need to be more\ncareful about distinguishing between built-in and external keyboards.\n\nMost of this change is to move the determination of the parts of\nthe Configuration related to input devices into the WindowManagerService\nleveraging new features of the InputManagerService to good effect.\n\nThen we plumb through the flag that indicates whether a device\nis internal or external so that we can be more particular about\nhow the lid switch effects changes to the Configuration.\n\nBug: 6424373\nChange-Id: I36a1c22ade35e578955465a25940a33f227b9763\n"
    },
    {
      "commit": "c3742a18a6106f9c61eba16b00d15efa88f6f51a",
      "tree": "48f5d283e0dd7fb6e793746427954b201fcc47fa",
      "parents": [
        "0430ce908510f501276e7f588ba5c34d33a9d27a",
        "7086cd5c75073b75cd4a7d61aaa9f0529450e4e5"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@android.com",
        "time": "Tue Apr 24 16:08:22 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Apr 24 16:08:22 2012 -0700"
      },
      "message": "am 7086cd5c: am 5600deb7: am d26a8b73: am cda8329e: Merge \"Distance max set incorrectly\"\n\n* commit \u00277086cd5c75073b75cd4a7d61aaa9f0529450e4e5\u0027:\n  Distance max set incorrectly\n"
    },
    {
      "commit": "8239940d0efb7e536d932473c535c1d9bb0ab658",
      "tree": "6c9d5d4ed0dc3e5381db90691c479b28fa24b05a",
      "parents": [
        "fee88fdb64cd6c0a51b11426e28a1484390d473b"
      ],
      "author": {
        "name": "Andreas Sandblad",
        "email": "andreas.sandblad@sonymobile.com",
        "time": "Wed Mar 21 14:39:57 2012 +0100"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Mon Apr 23 09:53:30 2012 +0200"
      },
      "message": "Distance max set incorrectly\n\nThe distance max used in the MotionRange is calculated\nincorrectly.\n\nLooks like a copy-and-paste error.\n\nChange-Id: I2b6daab088df0fb69e05682b67ca33524ff35987\n"
    },
    {
      "commit": "5bbd4b4f5fc19302fa017ad6afee6eb2d489d91a",
      "tree": "2bc118a5ef332003cc7f6791968076c48b3cf84b",
      "parents": [
        "9e6d4b035d4f012d23264d3d2bc946b1ca02dba1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 19:28:00 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 20:11:12 2012 -0700"
      },
      "message": "Get alias for Bluetooth devices.\n\nBluetooth devices can be renamed by the user.  Make the\ninput system aware of the user-specified name and transparently\npass it down to applications.  This enables the keyboard\nlayout picker Settings UI to use device names that are\nconsistent with what the user set in the Bluetooth UI.\n\nBug: 6363157\nChange-Id: I8eea26ce2c69c2a3f09c8de02e9e847610e0419c\n"
    },
    {
      "commit": "f44e39493c471b5e6a0807778c7a6439ea1b8adc",
      "tree": "d07153558b48cf8ec07d752a0e527bf5679056e2",
      "parents": [
        "80a76276dc9440ffad30dc4c820eb7d65f4df368"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 11:33:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 20 11:33:27 2012 -0700"
      },
      "message": "When ANR happens, only remove ANR\u0027d window.\n\nThe system bar uses input event injection to inject BACK keys\ninto the application.  If the receiving application ANRs, we\nused to clear the touch state unconditionally.  Doing so would\nprevent the system bar from receiving the ACTION_UP event so\nthe back button would continue to appear pressed until pressed\nagain.\n\nNow we are more careful to only remove the specific ANR\u0027d\nwindow from the touch state.  Other windows should continue\nto receive touch events as usual.\n\nChange-Id: If86bfc323e2c7aed82ca1334bc67da649953168f\n"
    },
    {
      "commit": "00710e906bdafd58386ee7f81fa84addd218122f",
      "tree": "f682c32f4975b41cb75c2b721f68443fe90cb0ca",
      "parents": [
        "6ec0c6afafd9bad5e4c33578e9355997a280649c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 19 15:18:26 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 19 15:21:08 2012 -0700"
      },
      "message": "Make InputDevice.SOURCE_STYLUS meaningful.\n\nBug: 5424551\nChange-Id: I415cb1842422e050cc41b17f5a1f13b4fab17a44\n"
    },
    {
      "commit": "61c08240585a6186b4bd879d87f238b3efc368f8",
      "tree": "eea1c0be7804cc8e672f9db04a0887be9eb3c54f",
      "parents": [
        "c3643b901308289132269aa3af9a738cd2b60f08"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 19 11:14:33 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 19 11:25:09 2012 -0700"
      },
      "message": "Don\u0027t load keyboard layout overlay for virtual keyboard.\n\nBug: 6110399\nChange-Id: I07c85cf991790ed8766b097acc39295a8065a5ea\n"
    },
    {
      "commit": "426f905b840a710314cc4e91ea4f03bd0c4bcbfb",
      "tree": "0e5c6e0c53ebf1a73c3597441b4bab04e9c237a3",
      "parents": [
        "4a3862f6b0a8971b6ab5b1c46735b28e7604d0db"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 19:52:56 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 19:52:56 2012 -0700"
      },
      "message": "Fix build.\n\nChange-Id: I277042c91b34af59e70941fd5b458581310b1c22\n"
    },
    {
      "commit": "4a3862f6b0a8971b6ab5b1c46735b28e7604d0db",
      "tree": "4091176054868659d2fa6bec36540f56c08bd116",
      "parents": [
        "6ec6f79e1ac1714e3b837796e99f07ff88f66601"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 18:50:05 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 18:50:05 2012 -0700"
      },
      "message": "Add Dvorak keyboard layout.\n\nAdded support for mapping both scan codes and HID usages to\nKeyLayoutMap and KeyCharacterMap.  Keyboard overlays can\nnow influence how key events are mapped to key codes.\n\nBug: 6110399\nChange-Id: I6619fd2d3e1337c55928f89869dbc45b535c7ccf\n"
    },
    {
      "commit": "6ec6f79e1ac1714e3b837796e99f07ff88f66601",
      "tree": "02aa55617bfa6dd2eb0bec29156e279c8afaaa0d",
      "parents": [
        "a3bc565882dd3984e995363642b1295fe3d24d10"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 16:52:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 17 17:56:32 2012 -0700"
      },
      "message": "Support loading keyboard layout overlays from resources.\n\nAdded the concept of a keyboard layout overlay, which is\na key character map file that has \"type OVERLAY\".\n\nAdded support for loading keyboard layout overlays from\nresources dynamically.  The layouts are reloaded whenever they\nare changed in the Settings application or an application\nis installed.  This is somewhat more aggressive than necessary\nso we might want to optimize it later.\n\nBefore system-ready, the input system uses just the generic\nkeyboard layouts that are included on the device system image.\nAfter system-ready, it considers the user\u0027s selected keyboard\nlayout overlay and attempts to load it as necessary.  We need to\nwait until system-ready before doing this because we need to\nbe in a state where it is safe to start applications or access\ntheir resources.\n\nBug: 6110399\nChange-Id: Iae0886d3356649b0d2440aa00910a888cedd8323\n"
    },
    {
      "commit": "a47425a13c19f95057df78b8bb65bb25657e8753",
      "tree": "675c0d6bf611f2427bb3d11315d410bf9087b20a",
      "parents": [
        "c2346134bb519a54d50655cbef940fc3fdec60a9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 04:09:27 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 13 17:01:15 2012 -0700"
      },
      "message": "Add support for input devices that have vibrators.\n\nAdded a getVibrator() method to InputDevice which returns a Vibrator\nassociated with that input device.  Its uses the same API as the\nsystem vibrator which makes it easy for applications to be modified\nto use one or the other.\n\nBug: 6334179\nChange-Id: Ifc7f13dbcb778670f3f1c07ccc562334e6109d2e\n"
    },
    {
      "commit": "af9e8d38184c6ba4d2d3eb5bde7014a66dd8a78b",
      "tree": "50cf9dd27d673bc5b3f75e6e18e9577873eecd6c",
      "parents": [
        "cc1169831921d9295b2fc01c1eaf7e9b00836f53"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 17:32:48 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 18:54:54 2012 -0700"
      },
      "message": "Notify applications when input devices change.\n\nThis change allows the InputManager to keep track of what input\ndevices are registered with the system and when they change.\nIt needs to do this so that it can properly clear its cache of\ninput device properties (especially the key map!) when changes\noccur.\n\nAdded new API so that applications can register listeners for\ninput device changes.\n\nFixed a minor bug in EventHub where it didn\u0027t handle EPOLLHUP\nproperly so it would spam the log about unsupposed epoll events\nuntil inotify noticed that the device was gone and removed it.\n\nChange-Id: I937d8c601f7185d4299038bce6a2934fe4fdd2b3\n"
    },
    {
      "commit": "cc1169831921d9295b2fc01c1eaf7e9b00836f53",
      "tree": "0817567e4363330957337e0b3bb6387c4911e25f",
      "parents": [
        "49ccac530b5a798e3c4a79b66b51b8546a0deed1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 10:05:41 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Apr 12 10:05:41 2012 -0700"
      },
      "message": "HID usage should take precedence over scan code.\n\nChange-Id: Ibd8988e3dcc0d64f4019ffe491d9789733f9d243\n"
    },
    {
      "commit": "49ccac530b5a798e3c4a79b66b51b8546a0deed1",
      "tree": "0b25fa1110effb7e8aa46905928b0b159daa96ab",
      "parents": [
        "db13a6bf788cc48af86c8acf6f74b416dfd84199"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 11 18:27:33 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Apr 11 20:28:09 2012 -0700"
      },
      "message": "Refactor key code mapping.\n\nAdded handling for EV_MSC / MSC_SCAN which typically reports\nthe HID usage associated with a key.  This will enable key maps\nto map keys with HID usages that Linux does not natively recognize.\n\nRemoved keyCode and flags fields from EventHub RawEvent since\nthey don\u0027t necessarily make sense in isolation now that we\npay attention to HID usage codes too.\n\nRemoved the fallback code for mapping keys and axes.  In practice,\nan input device should be self-sufficient.  We should not ever\nneed to look at the built-in keyboard\u0027s key map.  In fact, there\nusually isn\u0027t a built-in keyboard anyhow.  This code was originally\nworking around a problem where we weren\u0027t loading the key map\nfor touch screens with virtual keys, which has long since been fixed.\n\nChange-Id: I0a319bdec44be9514f795526347397e94d53a127\n"
    },
    {
      "commit": "9f25b7fdf216c9ef0bd2322cd223eeaf0d60f77f",
      "tree": "b0b509a261874435cab3f5f1a727c02b399bd91c",
      "parents": [
        "54ae14749bc7f9e73cfda35a8b49f9efa80a77fb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 14:30:49 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Apr 10 18:23:58 2012 -0700"
      },
      "message": "Request key maps from input manager service.\n\nInstead of each application loading the KeyCharacterMap from\nthe file system, get them from the input manager service as\npart of the InputDevice object.\n\nRefactored InputManager to be a proper singleton instead of\nhaving a bunch of static methods.\n\nInputManager now maintains a cache of all InputDevice objects\nthat it has loaded.  Currently we never invalidate the cache\nwhich can cause InputDevice to return stale motion ranges if\nthe device is reconfigured.  This will be fixed in a future change.\n\nAdded a fake InputDevice with ID -1 to represent the virtual keyboard.\n\nChange-Id: If7a695839ad0972317a5aab89e9d1e42ace28eb7\n"
    },
    {
      "commit": "eca3cf58c096d5a4ba4ae80318f72266c21a9a6d",
      "tree": "e2752cf46002373db2eca01ebbbedf1368aeae18",
      "parents": [
        "12578bde993ff907ce285a68db34ad6c5756c5b0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 19:31:36 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Apr 09 11:00:37 2012 -0700"
      },
      "message": "Use new EVIOCSCLOCKID ioctl if supported.\n\nBug: 6292993\nChange-Id: I718f167c2cd41298ed54847dbc5de872cd4c7e4a\n"
    },
    {
      "commit": "e38fdfae9196afd1bdc14c5ec6c12793af1e2550",
      "tree": "54523ccf3fc36a1b50410e2cb6e6d1f7230c40cf",
      "parents": [
        "dc0dbbd4a005f16624978b95817b33156acac526"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 14:51:01 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Apr 06 14:57:19 2012 -0700"
      },
      "message": "Add a unique input device descriptor.\n\nThe purpose of the input device descriptor is to make it possible\nto associate persistent settings for each input device, such as the\nkeyboard layout.\n\nThe descriptor is a hash of the information we have about the\ndevice, such as its vendor id, product id, unique id, name,\nor location.\n\nBug: 6110399\nChange-Id: Idb80f946819b3f0dbf4e661bb0a753dbc2b60981\n"
    },
    {
      "commit": "481c1570dc5cdf58265b53f657801709dd05d1df",
      "tree": "7e70a03aeab58afe04a0ce0365255f735bf184bf",
      "parents": [
        "43ea54bdc343a913f62885304796e4ab1bca4ef1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 09 14:41:15 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Mar 09 15:43:50 2012 -0800"
      },
      "message": "Add Java wrappers for new atrace functionality.\n\nInstrument a few parts of the input dispatcher and the\nview hierarchy.\n\nChange-Id: I49285c9fb3502253baa1ffed60f521b8c24fccaf\n"
    },
    {
      "commit": "8335f1ccccedb6655d96d9d5b697a7f0938235dd",
      "tree": "30a7f8b3e646157365dd51222665a68753fa25e3",
      "parents": [
        "57235fc65b5920f4867e66c8263efab49e92a21b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Feb 25 18:48:35 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 27 13:03:08 2012 -0800"
      },
      "message": "fix libgui header location\n\nChange-Id: Iec71706cdd4f29c6904993648ce873e83ef9cafe\n"
    },
    {
      "commit": "83c64e6b624a876436d2ef5d2f173b10407e27b4",
      "tree": "c4effc3260ab399e8fdae23baf06b076cd87a604",
      "parents": [
        "94d0024557f415b8463f085c9784a3e1d02b58c6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 20 16:58:20 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 20 22:38:43 2012 -0800"
      },
      "message": "frameworks/base refactoring\n\ncreate the new libandroidfw from parts of libui and libutils\n\nChange-Id: I1584995616fff5d527a2aba63921b682a6194d58\n"
    },
    {
      "commit": "b93a03f841d93498bfea6cc92a22faa34bce1337",
      "tree": "b5c2e1c097ad9dc4a3580ee661223794e0560f60",
      "parents": [
        "e97df97b6cb5e4bff8f9da9ecff7cddb7d04ff41"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 15:34:57 2012 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 17 15:36:10 2012 -0800"
      },
      "message": "frameworks/base refactoring.\n\nFirst step. Move libui includes to their new home: androidfw.\n\nChange-Id: Ic042b52fdba72f30edc3cc6339bf30b4c1b99662\n"
    },
    {
      "commit": "91e328984c0d1e0f95b3d37f779d9d4fa9bfe8f8",
      "tree": "d34bec78b0c35e3d35110564f39c3a05050d41f5",
      "parents": [
        "58aedbc9bea13415e2d42cf7c9fe8a7efd243e66"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 14 15:56:29 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 14 15:57:59 2012 -0800"
      },
      "message": "Clean up InputChannel file descriptor data type.\n\nFile descriptors are ints.\n\nChange-Id: Ie36733bf36ddfeaa9a09ef6ebd7bd2f1788f5d27\n"
    },
    {
      "commit": "0952c30ac279d5f4cdc032fcbafa372213aa6d86",
      "tree": "f180a4e1d2c3cf301817c3db75008a201fd4b4e5",
      "parents": [
        "2d34e0cfe7e2586b75a6f2c6646dd2e1e52c973f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 13:48:59 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 14:04:24 2012 -0800"
      },
      "message": "Don\u0027t serialize motion events.\n\nOn reflection, only key events need to be serialized.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: I028b4eac97497d012036cb60ffbac4cb22d3966c\n"
    },
    {
      "commit": "072ec96a4900d4616574733646ee46311cb5d2cb",
      "tree": "9172f3e3295f9d4ff3517a47dec360c2f0a99948",
      "parents": [
        "1adee11b5e644c74a2ed40344f4836de3bd3ac56"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 07 14:46:57 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Implement batching of input events on the consumer side.\n\nTo support this feature, the input dispatcher now allows input\nevents to be acknowledged out-of-order.  As a result, the\nconsumer can choose to defer handling an input event from one\ndevice (because it is building a big batch) while continuing\nto handle input events from other devices.\n\nThe InputEventReceiver now sends a notification when a batch\nis pending.  The ViewRoot handles this notification by scheduling\na draw on the next sync.  When the draw happens, the InputEventReceiver\nis instructed to consume all pending batched input events, the\ninput event queue is fully processed (as much as possible),\nand then the ViewRoot performs traversals as usual.\n\nWith these changes in place, the input dispatch latency is\nconsistently less than one frame as long as the application itself\nisn\u0027t stalled.  Input events are delivered to the application\nas soon as possible and are handled as soon as possible.  In practice,\nit is no longer possible for an application to build up a huge\nbacklog of touch events.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I42c01117eca78f12d66d49a736c1c122346ccd1d\n"
    },
    {
      "commit": "1adee11b5e644c74a2ed40344f4836de3bd3ac56",
      "tree": "634e5fd7ce6f3e7508cfdf5ba9d752bd4e83d90e",
      "parents": [
        "d1c48a0525d05021036d4b14e937e221c0ae1318"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 07 10:25:41 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Optimize dispatcher for back-to-back finished signals.\n\nMinor tweak to the dispatcher to handle as many finished signals\nin a receive callback as possible instead of going back to\nthe Looper and waiting for the next poll() to hit the callback\nagain.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I8471107371693e21ce8ce7cca1e8d79ba4ca2351\n"
    },
    {
      "commit": "d1c48a0525d05021036d4b14e937e221c0ae1318",
      "tree": "8026832e22d65f633657216488cc89cd54629025",
      "parents": [
        "8b4be56030c3b8c93dfa45bccac7365f90f377ce"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 19:12:47 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Dispatch multiple touch events in parallel.\n\nThis change enables the input dispatcher to send multiple touch\nevents to an application without waiting for them to be acknowledged.\nEssentially this is a variation on the old streaming optimization\nbut it is much more comprehensive.  Event dispatch will stall as\nsoon as 0.5sec of unacknowledged events are accumulated or a\nfocused event (such as a key event) needs to be delivered.\n\nStreaming input events makes a tremendous difference in application\nperformance.  The next step will be to enable batching of input\nevents on the client side once again.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: I025df90c06165d719fcca7f63eed322a5cce4a78\n"
    },
    {
      "commit": "8b4be56030c3b8c93dfa45bccac7365f90f377ce",
      "tree": "18388eb8a60024a2b566e27fb62d39f3f3e69037",
      "parents": [
        "28b5cf1c33df847d667b8974ba07c4157a49b48a"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 16:31:05 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:41 2012 -0800"
      },
      "message": "Delete premature optimization.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I5c182f6e17d468bf3033125b2094b2baa5b94e81\n"
    },
    {
      "commit": "28b5cf1c33df847d667b8974ba07c4157a49b48a",
      "tree": "ca82ec2d78a7a5ebb5b80eeebcc6929db0dd761a",
      "parents": [
        "59f1ff99786e9d4a94270d6752aa3ca61e10f0a6"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 16:26:21 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Delete dead code.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I9f8b93f6a25ddd872f993366b57bab404c93bede\n"
    },
    {
      "commit": "59f1ff99786e9d4a94270d6752aa3ca61e10f0a6",
      "tree": "03a2d9385256ec3f7a392b984131092f282bca48",
      "parents": [
        "9831d90db8fba7e967d22b1f86eea1d6ac831541"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 16:23:50 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Delete latency tracking information in the Connection.\n\nThe information gathered here will no longer be valid once we\nstart dispatching multiple events at a time to the same connection.\nMoreover, we are more concerned with end-to-end latency, which we\ncan measure with sufficiently high accuracy in other ways.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I49a0c9876b64af56b40e96e0d98c45f325da2a73\n"
    },
    {
      "commit": "9831d90db8fba7e967d22b1f86eea1d6ac831541",
      "tree": "16b990120c420482eb60fcacae153cf009ae2cec",
      "parents": [
        "e9bb9be9e46523ed901e38cfa83f4630f6496418"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 15:55:26 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Remove active connection tracking.\n\nThe dispatcher no longer needs to track which connections are\nactive except perhaps for diagnostic purposes, so we might as well\nremove this code.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: Ibadc830b7b792a59b9244d0a6e85f320c4947109\n"
    },
    {
      "commit": "e9bb9be9e46523ed901e38cfa83f4630f6496418",
      "tree": "697a4870df9e540ecb13575f54d8f3e478c26761",
      "parents": [
        "cbee6d6ede0499fb4a2c00bfc00d5db8d9ed5139"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 06 15:47:55 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Simplify input target handling in the dispatcher.\n\nSince we no longer stream events to the application, we don\u0027t need to\nkeep the current list of input targets around longer than it takes\nto begin the dispatch cycle.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I5824b04e564c8a4dec991598292441e46c331905\n"
    },
    {
      "commit": "cbee6d6ede0499fb4a2c00bfc00d5db8d9ed5139",
      "tree": "2ccbec05bbcd99c514673407ca21fb58fc7dd687",
      "parents": [
        "3241b6b7bd7eff64f0118ba2d636030e505a98f9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 03 20:11:27 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:40 2012 -0800"
      },
      "message": "Rewrite input transport using sockets.\n\nSince we will not longer be modifying events in place, we don\u0027t need\nto use an ashmem region for input.  Simplified the code to instead\nuse a socket of type SOCK_SEQPACKET.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: I05909075ed8b61b93900913e44c6db84857340d8\n"
    },
    {
      "commit": "3241b6b7bd7eff64f0118ba2d636030e505a98f9",
      "tree": "9116e5f5ee32645312d8cfc16c12491ec0a28876",
      "parents": [
        "d4762334f103055b3aa59d97d027ace7c5950b6e"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 03 15:08:02 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Feb 13 10:28:39 2012 -0800"
      },
      "message": "Remove batching and streaming from the input dispatcher.\n\nDon\u0027t worry, these features will be moving to a different part of\nthe pipeline.  We\u0027re just getting them out of the way for now so\nwe can make deeper changes to how the input dispatcher works.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\n\nChange-Id: If97de923c8165776882eef23f5204cc448dad0fc\n"
    },
    {
      "commit": "308028049a75b36d5ed525c0bcef441da850c2a5",
      "tree": "fd5f6c8563d10381ad192934d26818f9494e7325",
      "parents": [
        "28587f445a2af6d94d1b215e019e8bcc377c17a1"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Feb 03 13:35:13 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Feb 07 18:38:11 2012 -0800"
      },
      "message": "Remove the input dispatcher throttle.\n\nThis is part of a series of changes to improve input system pipelining.\n\nBug: 5963420\nChange-Id: Iab33594bc5df8aa05232ef64c64e98fc61c5bf52\n"
    },
    {
      "commit": "ed73440416eac56f20054239d6e8480caae1b6d3",
      "tree": "f99cb5b4ae0f6f0a8922db076eb1e8e51fe6e34b",
      "parents": [
        "dd3ba4384325ca0bb7417073b6a11a991829f2ea",
        "874c1e9aa598b45e7114a69ecb4194c167a8b39d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 31 10:05:51 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 31 10:05:51 2012 -0800"
      },
      "message": "Merge \"Use O_CLOEXEC when opening input device.\""
    },
    {
      "commit": "dd3ba4384325ca0bb7417073b6a11a991829f2ea",
      "tree": "6eaf8be2838f2d5216d2631a053fe8695b3a173b",
      "parents": [
        "9d36bd02751e2737520524fca03c6f3770bbb731",
        "e22afbedc1a71905d112d8cf78ca8c2a27e371fe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 31 10:05:09 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jan 31 10:05:09 2012 -0800"
      },
      "message": "Merge \"Add basic support for new suspend-block ioctls.\""
    },
    {
      "commit": "112b5f52c5a4b6743eeb7b26a8896c7636c74455",
      "tree": "b9e6ce9e78630475cea99044392dbb3c183626c4",
      "parents": [
        "75ea64fc54f328d37b115cfb1ded1e45c30380ed"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 27 17:32:06 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 27 17:33:42 2012 -0800"
      },
      "message": "Improve watchdog monitor for InputReader and InputDispatcher.\n\nTry harder to test for liveness.  There are situations where\nthe lock might not be held but the input system is stuck in\na callback into the window manager policy that has hung.\n\nBug: 5094994\nChange-Id: Iff88655512a5dc8bbb4615be65f4115e975c020b\n"
    },
    {
      "commit": "06a0fb953ff1c544bdbef2618d20ec1ba551eb6e",
      "tree": "8b34013b112220c0df8686547cfe0ead7c2a63c1",
      "parents": [
        "288cde7f0a17f47f7071168f442d19f703947cc9",
        "5d58eb06bcc8671bae72fb2389a9929e106131cc"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 20 11:26:43 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 20 11:26:43 2012 -0800"
      },
      "message": "am 5d58eb06: Merge \"Fix a few memory leaks in the input dispatcher.  (DO NOT MERGE)\" into ics-mr1\n\n* commit \u00275d58eb06bcc8671bae72fb2389a9929e106131cc\u0027:\n  Fix a few memory leaks in the input dispatcher.  (DO NOT MERGE)\n"
    },
    {
      "commit": "f68633da3ced654a9344b5c3b82f4d1c79b6bd09",
      "tree": "a3ce92223f977611f6a1ab6710901a68fad8a968",
      "parents": [
        "c6aacce37191e1cc79cfeba13b39899f59c68c3b"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:45:08 2012 -0800"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT\n\nChange-Id: Ie2c7ea6560656d65bad791a61996174c75677517\n"
    },
    {
      "commit": "c6aacce37191e1cc79cfeba13b39899f59c68c3b",
      "tree": "df4401aaa38914e03d5eadc82507e7c6fdcc573e",
      "parents": [
        "a51f0e707f1f3142358aa919ea60ad2842803139"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:45:03 2012 -0800"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)\n\nChange-Id: I1de629b4632a4b3187ca1a28d6416daccd35f924\n"
    },
    {
      "commit": "a51f0e707f1f3142358aa919ea60ad2842803139",
      "tree": "3a4bea403affd07f7611fe13da8cbf64a61ee3e3",
      "parents": [
        "933e85615059b85a87747da57288384541cc56da"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:59 2012 -0800"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)\n\nChange-Id: I8fbdfa7a7581f481968dbb65aa40f7042936d7cb\n"
    },
    {
      "commit": "933e85615059b85a87747da57288384541cc56da",
      "tree": "5475260306fb9ddb48b2c7fcfe939ed59752e900",
      "parents": [
        "1afd5bab4e0eaba8b5bc2ab5c7b556cd602cf2e7"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:56 2012 -0800"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)\n\nChange-Id: I26f76452ac49e2890b14d133c065493d8df0fb4a\n"
    },
    {
      "commit": "1afd5bab4e0eaba8b5bc2ab5c7b556cd602cf2e7",
      "tree": "7558b2b5d1cb5e2c9c60bd5d52cab21994caa263",
      "parents": [
        "06ade6ae1bd015e8b8ad0685847911213c93cc5b"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Tue Dec 20 16:23:08 2011 +0000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:50 2012 -0800"
      },
      "message": "Rename (IF_)LOGD(_IF) to (IF_)ALOGD(_IF)\n\nChange-Id: I44f267700356967dc51e8f85ebf457dc85cfb229\n"
    },
    {
      "commit": "06ade6ae1bd015e8b8ad0685847911213c93cc5b",
      "tree": "0fb687dcbdf125a30cdb645605b57bb847d0c7b5",
      "parents": [
        "c318bbb05e02a0080e129623ec8029d31be0d60e"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Jan 19 14:44:31 2012 -0800"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)\n\nChange-Id: I5321ebd12e9c6248a108529e82c4e1af2a4405e3\n"
    },
    {
      "commit": "874c1e9aa598b45e7114a69ecb4194c167a8b39d",
      "tree": "178ddf46df9306a8eccfd7c6ba66d278e460af81",
      "parents": [
        "e22afbedc1a71905d112d8cf78ca8c2a27e371fe"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:32:47 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:32:47 2012 -0800"
      },
      "message": "Use O_CLOEXEC when opening input device.\n\nChange-Id: I931614ef4fe2143c9e124c3239d74a4a2ce3816c\n"
    },
    {
      "commit": "e22afbedc1a71905d112d8cf78ca8c2a27e371fe",
      "tree": "6f04c67316d5249f212e4e80f30385c264dea337",
      "parents": [
        "214f459b2c35ac0d95ad8ae9e2a68b94807ceba0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Dec 16 13:45:40 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:27:05 2012 -0800"
      },
      "message": "Add basic support for new suspend-block ioctls.\n\nThe new ioctls will enable the system to be more selective about\nwhich evdev devices should hold wake-locks when their queue is\nnon-empty.\n\nFor now, we enable this behavior for all configured input devices,\nwhich is more or less the status quo.  This change is mainly about\nensuring that the system still works correctly when combined with\na newer kernel that supports the suspend-block ioctls.  We can\ntweak this behavior later.\n\nChange-Id: I8ff69aa5198903f7e2998772a339313df17c0f24\n"
    },
    {
      "commit": "214f459b2c35ac0d95ad8ae9e2a68b94807ceba0",
      "tree": "c9070f7a5d0e8acf07c7a8603cb253edf4d0aabe",
      "parents": [
        "4130554b452a8462a83f97051240f1aec8590650"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Mar 22 17:21:17 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:16:09 2012 -0800"
      },
      "message": "Remove no longer needed EventHub usleep() optimization.\n\nThis optimization is no longer needed now that the kernel evdev\ndriver\u0027s poll() implementation only wakes up the poll after\nthe final sync.\n\nChange-Id: If237776861df9cfac3086e744d3bbf3484d4c53b\n"
    },
    {
      "commit": "4130554b452a8462a83f97051240f1aec8590650",
      "tree": "d947199bac924e8068be8d81cd3b105a9ea6a129",
      "parents": [
        "6534c0e0548332801cffaa0977af165025030297"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 05 11:14:13 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 19 14:08:48 2012 -0800"
      },
      "message": "Fix line wrapping.\n\nChange-Id: I41199d1145d2435eee046a7e5006dcdce0986821\n"
    },
    {
      "commit": "9f63f121bdc0db64f9dd2be9db792a8698bb0d67",
      "tree": "7188351e2f399cb1ebdd73b9150c9d79cc7d246a",
      "parents": [
        "722c8c02f1e17c232b041440ea97a2fda336a6e8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 12 18:30:12 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 17 14:56:50 2012 -0800"
      },
      "message": "Fix a few memory leaks in the input dispatcher.  (DO NOT MERGE)\n\nBug: 5862398\nChange-Id: I799ee47b6e5d6c51f45aa4296c6ab8a610b74be5\n"
    },
    {
      "commit": "c0cb3dc2c16883f19bf1caf652b2fcdb55a1a856",
      "tree": "fb6e5d716f4c07e49463aba171d0201fcd777347",
      "parents": [
        "dc89357810976556d20483c7fe161b68ed4d2acf"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 12 18:30:12 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Jan 12 18:30:12 2012 -0800"
      },
      "message": "Fix a few memory leaks in the input dispatcher.\n\nBug: 5862398\nChange-Id: Iae3284a223b8307f541a7987f90f5b28e70b9244\n"
    },
    {
      "commit": "ec193dec4d9ca2cfc8295c4becfe950a906a15ed",
      "tree": "c93578b9568a1b9f5b7b4b3d20732857d4e3a6c4",
      "parents": [
        "5c17a820f9e46e0756c11795b3e6f89105f2f539"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 18:35:44 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Mon Jan 09 21:36:22 2012 +0000"
      },
      "message": "Rename LOG_ASSERT to ALOG_ASSERT  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157519\n\nBug: 5449033\nChange-Id: I8ceb2dba1b031a0fd68d15d146960d9ced62bbf3\n"
    },
    {
      "commit": "3762c311729fe9f3af085c14c5c1fb471d994c03",
      "tree": "7d4caccad80ac7327c7bff96dafc857d5f4631ad",
      "parents": [
        "7a939077bd14521c7d351af98df7ed75a8ec9c15"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 19:20:56 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Sun Jan 08 13:19:13 2012 +0000"
      },
      "message": "Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/157220\n\nBug: 5449033\nChange-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c\n"
    },
    {
      "commit": "8564c8da817a845353d213acd8636b76f567b234",
      "tree": "71acbd8ace822c769aef917629bf5a079f63274d",
      "parents": [
        "c42e6a0bed2c88fd03466c5104d62d7f98e68768"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Jan 05 23:22:43 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Fri Jan 06 10:07:54 2012 +0000"
      },
      "message": "Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/157065\n\nBug: 5449033\nChange-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69\n"
    },
    {
      "commit": "6215d3ff4b5dfa52a5d8b9a42e343051f31066a5",
      "tree": "fa31802ed64676368447b67d20567fc1e806c79d",
      "parents": [
        "c9c76a82c6d0bf2362044d899013832882f32c94"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Jan 04 20:05:49 2012 +0000"
      },
      "message": "Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/156801\n\nBug: 5449033\nChange-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea\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": "fa7fa9a5ba796eabb2dadb8e2ce1b97da38e939e",
      "tree": "69f1929304b224494121d8e592078f269028e1f3",
      "parents": [
        "ec3a88dee2c7d77c09eaad0c297f077744033d48",
        "944c985b4199e6e029568ea87004c9727e469cc0"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Dec 09 14:25:38 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Dec 09 14:25:38 2011 -0800"
      },
      "message": "am 944c985b: am e0e9fd98: Merge \"Fix system hotkey handling.\" into ics-mr1\n\n* commit \u0027944c985b4199e6e029568ea87004c9727e469cc0\u0027:\n  Fix system hotkey handling.\n"
    },
    {
      "commit": "68b909d8acd92343fa0b1dff2f77fcd9d9991f9f",
      "tree": "73df34f562dafe3807615c773530dedce3d83ae0",
      "parents": [
        "eb3e4b98a45722d5d1ea73e45d86c119d678bb05"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Dec 07 16:36:01 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Dec 07 21:37:16 2011 -0800"
      },
      "message": "Fix system hotkey handling.\n\nFixed a problem where the key up for the ALT or META key was not\ndelivered to the task switcher dialog because it was deemed\nto be inconsistent with the window\u0027s observed state.  Consequently\nthe dialog would not be dismissed when the key was released.\n\nMoved global hotkey handling for META+* shortcuts and ALT/META-TAB\ninto the window manager policy\u0027s interceptKeyBeforeDispatching\nmethod.  This change prevents applications from hijacking these\nkeys.\n\nThe original idea was that these shortcuts would be handled only\nif the application did not handle them itself.  That way certain\napplications, such as remote desktop tools, could deliberately\noverride some of these less important system shortcuts.\nUnfortunately, that does make the behavior inconsistent across\napplications.  What\u0027s more, bugs in the onKeyDown handler of\napplications can cause the shortcuts to not work at all, for\nno good reason.\n\nPerhaps we can add an opt-in feature later to enable specific\napplications to repurpose these keys when it makes sense.\n\nBug: 5720358\nChange-Id: I22bf17606d12dbea6549c60d20763e6608576cf7\n"
    },
    {
      "commit": "221096fdd6963a0f7090b928cfb92b9267f32d7a",
      "tree": "300e2781bf3720d2b7e57611d6691c9fe9ea521a",
      "parents": [
        "8e56e1f3459703a9b9f5a13676428eeda68bb73f",
        "4c0e0dd29dcce33e7521b11d01d21d9431f3b264"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 19:43:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 15 19:43:35 2011 -0800"
      },
      "message": "am 4c0e0dd2: am 3e7497b4: Merge \"Eliminate hw.keyboards system properties.\" into ics-mr1\n\n* commit \u00274c0e0dd29dcce33e7521b11d01d21d9431f3b264\u0027:\n  Eliminate hw.keyboards system properties.\n"
    },
    {
      "commit": "1e08fe90df18930691b0c2ec22e5db25d7fcb4cf",
      "tree": "772ffaafe6917d37ee65f5ed3d653230557bdc80",
      "parents": [
        "9058435dc1a741030c042c4d6f2512f5d1605e5d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 17:48:10 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 15 18:00:10 2011 -0800"
      },
      "message": "Eliminate hw.keyboards system properties.\n\nStop using system properties to publish information about\nthe key character map path.  Instead, we can retrieve it\non demand by asking the window manager.\n\nIt was possible to exhaust the supply of system properties\nwhen repeatedly adding and removing input devices.\n\nBug: 5532806\nChange-Id: Idd361a24ad7db2edc185c8546db7fb05f9c28669\n"
    },
    {
      "commit": "fbca596721ea19daa2972639095898ce62100490",
      "tree": "6dec24bb8d7b40c7d6c5a38b07b5872ff8d77c23",
      "parents": [
        "28a5ec9613a824d2ec15ce5e5cec77a6fcf444d5"
      ],
      "author": {
        "name": "David Deephanphongs",
        "email": "dpanpong@google.com",
        "time": "Mon Nov 14 14:50:45 2011 -0800"
      },
      "committer": {
        "name": "David Deephanphongs",
        "email": "dpanpong@google.com",
        "time": "Tue Nov 15 11:10:07 2011 -0800"
      },
      "message": "Modify getState to prefer AKEY_STATE_DOWN and AKEY_STATE_UP over AKEY_STATE_UNKNOWN.\n\nFor the getState() routines that operate on multiple devices / mappers:\nReturn AKEY_STATE_DOWN (or AKEY_STATE_VIRTUAL) if any of the devices/mappers\nhave the key down.\nOtherwise, return AKEY_STATE_UP if at least one device/mapper returns AKEY_STATE_UP.\nOtherwise, return AKEY_STATE_UNKNOWN.\n\nChange-Id: I1ef6251d73af916b51f408a41c5e4adf5bdc237a\n"
    },
    {
      "commit": "a965f083d09bf247cbfc880c0435e4a04c3e4e18",
      "tree": "990e4f0b59e84d950ff9e5bdfd0badafd3a125c7",
      "parents": [
        "ea427b0c87a52d5e770f50856401a81ff2658cc4"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 07 16:12:43 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Nov 08 20:24:21 2011 -0800"
      },
      "message": "Delete dead code.\n\nChange-Id: Ia78e338a363ab82f9c0b45ce324c2a7cfa8d8246\n"
    },
    {
      "commit": "71f2cf116aab893e224056c38ab146bd1538dd3e",
      "tree": "75a9162a0ea00830184b12a9ca51d3a1a040a5bb",
      "parents": [
        "1da79501066a74b630c8aa138db0f86ab6c690bb"
      ],
      "author": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Thu Oct 20 11:56:00 2011 +0100"
      },
      "committer": {
        "name": "Steve Block",
        "email": "steveblock@google.com",
        "time": "Wed Oct 26 09:57:54 2011 +0100"
      },
      "message": "Rename (IF_)LOGV(_IF) to (IF_)ALOGV(_IF)  DO NOT MERGE\n\nSee https://android-git.corp.google.com/g/#/c/143865\n\nBug: 5449033\nChange-Id: I0122812ed6ff6f5b59fe4a43ab8bff0577adde0a\n"
    },
    {
      "commit": "905805ad7ce18a386076fff99264f821bbad9f83",
      "tree": "82d377b8a88dc04db0b9b7c6c61228464a1f75b8",
      "parents": [
        "1eb08f0acb0220d5ad03579c566a00497b665816"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 12 13:57:59 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Oct 12 14:34:23 2011 -0700"
      },
      "message": "Improve screenshot chord debouncing.\nBug: 5011907\n\nIntroduce a 150ms delay in handling volume down keys\nwhile waiting to see if a power key will follow.\n\nDon\u0027t trigger the screenshot chord if both volume up and\nvolume down are pressed together.\n\nDon\u0027t trigger the long-press power menu if volume keys are\nalso pressed.\n\nRequire the user to press both keys in the chord within\nthe debounce time and continue long-pressing them in order\nto trigger the screenshot action.\n\nChange-Id: I248968d37b73c09d6d08e7f62667c443eba32da0\n"
    },
    {
      "commit": "e8b7f4a20c43d8f55d0cf85a94363b764ba598b8",
      "tree": "09800860eb177aeec4db251548ffb9ddc74fefec",
      "parents": [
        "9547d03ef1228406ad4eb6db31dbcf58be1e4655"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Sep 26 23:31:27 2011 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Sep 29 11:28:17 2011 -0700"
      },
      "message": "eventhub: print debugginf info when removing device\n\nChange-Id: I40bbbd3867e8c7ac7d6fb38e1c72432bb4963316\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "bfcb60ab0f696c8ef70830c365550e62fe2808bf",
      "tree": "62501853dd40e4194e94bb689c46e1da335f6e66",
      "parents": [
        "9fefa3c716e9c8d7dfb6c851c91e37e37732a955"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 08 18:51:14 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu Sep 08 18:53:42 2011 -0700"
      },
      "message": "Adjust layers for system overlays.\n\nPrevent system overlays from showing above the notification bar.\n\nAllow secure system overlays to be fullscreen, for the pointer\nlocation view.\n\nShow the drag layer above the notification bar.\n\nChange-Id: Ic8d663792a243cca2cd9952d241d001e0357d551\n"
    },
    {
      "commit": "3cdfc4d94f6af82953f0e722ade882197c72da58",
      "tree": "a01091f6e941a4c837eed171d6757b4e45203dc0",
      "parents": [
        "d318b73e8e7832f257797ce08b3eea02780b7909",
        "9ee285afe740ff13d176c9d8430979dfd9575a23"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 31 15:18:59 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 31 15:18:59 2011 -0700"
      },
      "message": "Merge \"Support composite touch / joystick devices better.\""
    },
    {
      "commit": "9d4bc852ea459c2a4347a87ce0357b3328a25db8",
      "tree": "30f7154a210380d638c54107cd670681cd557d72",
      "parents": [
        "16b241a58f1ec4b317647b6fd0ad9b5cc3f7ba3d",
        "cc4f7db698f88b633a286d8ab1105b28a474cd09"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 31 13:01:16 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 31 13:01:16 2011 -0700"
      },
      "message": "Merge \"Fix input channel leak. Bug: 5156144\""
    },
    {
      "commit": "9ee285afe740ff13d176c9d8430979dfd9575a23",
      "tree": "c63a5a7d49029e1b677ccd7dbe3f7527e5420221",
      "parents": [
        "cc4f7db698f88b633a286d8ab1105b28a474cd09"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 31 12:56:34 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Aug 31 12:56:34 2011 -0700"
      },
      "message": "Support composite touch / joystick devices better.\n\nThis change enables the joystick input mapper to handle any axes\nthat are not claimed by the touch input mapper, which makes\nauxiliary controls such as wheels / knobs accessible.\n\nChange-Id: I01ee7f342ac91acfcb4ccb6676fd52b3d5bf31a0\n"
    },
    {
      "commit": "cc4f7db698f88b633a286d8ab1105b28a474cd09",
      "tree": "02ec7d914ab182e912af5c147ebc7483a719c6de",
      "parents": [
        "ad4d2c99ed3a08a5090c38e9dd906df8fb894614"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 30 20:34:48 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 30 21:40:28 2011 -0700"
      },
      "message": "Fix input channel leak.\nBug: 5156144\n\nInput channels could leak or simply live longer than they should\nin some cases.\n\n1. Monitor channels (used by the pointer location overlay) are never\n   unregistered, so they would leak.\n\n   Added code to handle failures in the receive callback by closing\n   the input channel.\n\n2. The DragState held onto its input window and application handles\n   even after the input channel was disposed.\n\n   Added code to null these handles out when they are no longer needed.\n\n3. Input channels previously used as input event targets would stick\n   around until the targets were cleared (usually on the next\n   event).\n\n   Added code to detect when the input dispatcher is in\n   an idle state and to proactively clear the targets then\n   to ensure that resources are released promptly.\n\n4. Native input window handles held onto the input channel even\n   after the input window was removed from the input dispatcher.\n   Consequently, the input channel would not be disposed until\n   the input window handle itself was freed.  Since the input\n   window handle is held from managed code, this meant that the\n   window\u0027s input channel could stick around until the next GC.\n\n   Refactored the input window handle to separate the properties\n   (info) and identify (handle) state into different objects.\n   Then modified the dispatcher to release the properties (info)\n   when no longer needed, including the input channel.\n\n7. The pointer location overlay does not actually use its\n   standard input channel, only the monitor input channel.\n\n   Added INPUT_FEATURE_NO_INPUT_CHANNEL to allow windows to\n   request that they not be provided with an input channel\n   at all.\n\nImproved some of the error handling logic to emit the status\ncode as part of the exception message.\n\nChange-Id: I01988d4391a70c6678c8b0e936ca051af680b1a5\n"
    },
    {
      "commit": "e81056f35041de24adad9bc5384b9e8f72bf95f6",
      "tree": "5baaf4f7f3d90042eedcbe2a281699cc4fa3a008",
      "parents": [
        "be1a0493a8bf589137874bec4222297fbb712185"
      ],
      "author": {
        "name": "Max Braun",
        "email": "braun@google.com",
        "time": "Tue Aug 30 14:35:45 2011 -0700"
      },
      "committer": {
        "name": "Max Braun",
        "email": "braun@google.com",
        "time": "Tue Aug 30 14:40:43 2011 -0700"
      },
      "message": "Pick up device configuration \"device.internal \u003d 0\". Before, only \"device.internal \u003d 1\" had an effect.\n\nChange-Id: Ie88ed66e0841418c147bed2e23806405bdd17ad6\n"
    },
    {
      "commit": "8d3feb6292ba7e87adeb4982e8cf27114a8ee2e4",
      "tree": "5dd588235d15c57f2dd6aa4ea0dd550fb2b3e249",
      "parents": [
        "df7e2644992c5828be94980b4243ac9f1f48b177",
        "daf4a127ba2af82a3fb477044b872719a0ab1827"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 29 14:04:31 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 29 14:04:31 2011 -0700"
      },
      "message": "Merge \"Add a \"show touches\" option for demos and presentations. Bug: 4569045\""
    },
    {
      "commit": "deffe07c225c15ce780fad4a500d082f2dbdabea",
      "tree": "a7ff5ec9cf65f51258d2202b3e26902e247d9b7a",
      "parents": [
        "9b9783ad60d31f3df5d2524e13abc1437d5b6f7d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 26 18:38:46 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 26 18:38:46 2011 -0700"
      },
      "message": "Prioritize INPUT_PROP_DIRECT first.\n\nIf the device tells us it\u0027s really direct, then it\u0027s direct.\n\nChange-Id: I83875cf47e865ff6f0def149ad0c68db24d9dc4a\n"
    },
    {
      "commit": "daf4a127ba2af82a3fb477044b872719a0ab1827",
      "tree": "2147e705a6b912683abd7169910acb548413d946",
      "parents": [
        "9b9783ad60d31f3df5d2524e13abc1437d5b6f7d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 26 17:14:14 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 26 17:14:14 2011 -0700"
      },
      "message": "Add a \"show touches\" option for demos and presentations.\nBug: 4569045\n\nChange-Id: I8726ea292dd7def790a5e40d7d7e58968974f896\n"
    },
    {
      "commit": "c28306ad4ac9ce7a7d5f10c2e38d422ffc309a1f",
      "tree": "b44fd57c3691bc6c4319334752a89fe7966de087",
      "parents": [
        "aaee52cfa8bb1d0070b69cd4087be63dd2c0fee9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 23 21:32:42 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 23 21:32:42 2011 -0700"
      },
      "message": "Improve input device wake heuristics.\nBug: 5205674\n\nOnly wake the device on positive interactions from the user\nsuch as button presses, movement, initial touch down events.\nIn particular, do not wake the device on up events since the\ndriver might synthesize them on power off, causing the device\nto wake up again for no good reason.\n\nChange-Id: I767f553ea36d110e6f3a10611b324487ba7d880d\n"
    },
    {
      "commit": "9cc695c5796cf93b414fd7627eb049b7b57d15be",
      "tree": "f5333563eb7b189a8c78af7409d4a795936e3e13",
      "parents": [
        "ea6892e02e10a57673a42f0922ad28694595dcaa"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 23 18:35:04 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 23 18:42:06 2011 -0700"
      },
      "message": "Clean up InputDispatcher debugging.\n\nChange-Id: I020e834bfb541a1f274e26a72705f96f4307dddf\n"
    },
    {
      "commit": "ea6892e02e10a57673a42f0922ad28694595dcaa",
      "tree": "3f848783f217758c31e3491fef6fd84b7bf8cf52",
      "parents": [
        "2a4c5acc27e546f11e578e9982d8c33deb6b88fb"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 23 17:31:25 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Aug 23 17:49:49 2011 -0700"
      },
      "message": "Support BTN_TOOL_*TAP as synonyms for BTN_TOOL_FINGER.\nBug: 5205301\n\nSome drivers report one finger as BTN_TOOL_FINGER, two as\nBTN_TOOL_DOUBLETAP, three as BTN_TOOL_TRIPLETAP and four\nas BTN_TOOL_QUADTAP.  Since we care about the tool type,\nwe need to handle _DOUBLE/_TRIPLE/_QUAD tap in the same way\nwe handle _FINGER.\n\nChange-Id: I8eb83d2a2bada9ac32d07619c7eea84e924316b8\n"
    },
    {
      "commit": "a66cee134e2ad8a6d100e0e3eefa2c2a341ed7cc",
      "tree": "10d2b17244e51e87357bf32cea28596565da56b0",
      "parents": [
        "65fd251c3913fc921468a3dad190810db19eb9df"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 19 16:04:30 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 19 16:04:30 2011 -0700"
      },
      "message": "Fix tap gesture on touch pads.\n\nChange-Id: I92b23e5971d4b98b173aacd64fe03ce9f0755c88\n"
    }
  ],
  "next": "65fd251c3913fc921468a3dad190810db19eb9df"
}
