)]}'
{
  "log": [
    {
      "commit": "50517543d84446fc91fa65c60eda6d2e2724de10",
      "tree": "ea98f93e9f3f4c4cb7803787a14fdcfadc985dd7",
      "parents": [
        "139c1dee4412b17c7d05528b4afc0dd8586d25b8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:10:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:10:18 2009 -0700"
      },
      "message": "fix [2063336] Surface.lockSurface throws IllegalArgumentException when out of memory\n"
    },
    {
      "commit": "84a6d041e2c69d4d0b69269a0b59e725c9f119a3",
      "tree": "6841d5b1d696e27f66c30ede34c73d30cf5cc5c3",
      "parents": [
        "7f87b14a5b569b5526725fcf2d942156948d064c"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 13:33:27 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 17 15:31:25 2009 -0700"
      },
      "message": "Support for marshalling pointers / intptr_t in Parcel.\n\nSome refactoring to eliminate code duplication in Parcel implementation.\n"
    },
    {
      "commit": "ba5972ffdc7179dd9a387f22032eb18666d97917",
      "tree": "dd51ea840b82b9392ec1772b4c49f48f6c6190e1",
      "parents": [
        "d66a97950e8ef64051a4d497a91e5508254f77f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 14 18:52:17 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 14 18:52:17 2009 -0700"
      },
      "message": "make sure to update a surface\u0027s usage bits when it changes, instead of only the first time.\n\nalso fixed a few locking issues in Surface and commented how each member is protected.\n"
    },
    {
      "commit": "d66a97950e8ef64051a4d497a91e5508254f77f6",
      "tree": "b4e1606b9113b79aee9e81cc2b5d68d7ae2ccbd6",
      "parents": [
        "238a66e67b155d7e1fcdb19b672ffc0ae4a6fc94"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 19:08:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 19:08:00 2009 -0700"
      },
      "message": "fix a bug that could cause a window to be hidden in some cases.\n\nthis would happen is the window is made visible but the client didn\u0027t render yet into it. This happens often with SurfaceView.\nInstead of filling the window with solid black, SF would simply ignore it which could lead to more disturbing artifacts.\n\nin theory the window manager should not display a window before it has been drawn into, but it does happen occasionnaly.\n"
    },
    {
      "commit": "ccde199f7ce916e42a45b5a50e937d9c17904da2",
      "tree": "5c2898152809f167bf29fbb723c027c49730e463",
      "parents": [
        "400f18045af0fc39f95c7e5736808648d19b28b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 17:29:02 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 18:19:32 2009 -0700"
      },
      "message": "Surface::GPU and Surface::HARDWARE are now deprecated; they will be set automatically if needed.\n\nthis also ripples into the window manager API by making some constant there deprecated as well.\n"
    },
    {
      "commit": "5eb77d68b3db2d436f2809c9bb93dcc9c1d69e78",
      "tree": "3fc6b1b32b423189e48e86b91eda8d299b3fe6ec",
      "parents": [
        "153e4a4c2a42ed59a421e2984908a9cea5f3dff1",
        "8458a3140f51275d6b78b5879f942163c0d618e2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 12 21:25:15 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 12 21:25:15 2009 -0700"
      },
      "message": "Merge change 21059\n\n* changes:\n  make sure EGL_ANDROID_swap_rectangle is actually supported before using it\n"
    },
    {
      "commit": "8458a3140f51275d6b78b5879f942163c0d618e2",
      "tree": "f392a5f457572aef8b4626d722210aa016fc3a37",
      "parents": [
        "24e5f5290195e1c02c18730d0639efda65d64914"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:24:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:24:53 2009 -0700"
      },
      "message": "make sure EGL_ANDROID_swap_rectangle is actually supported before using it\n"
    },
    {
      "commit": "153e4a4c2a42ed59a421e2984908a9cea5f3dff1",
      "tree": "322fd867e11d9b8ebcc3cb386b2ea4efff143ee6",
      "parents": [
        "15fb629841271020773036548216da552e0488d2",
        "24e5f5290195e1c02c18730d0639efda65d64914"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 12 21:18:35 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 12 21:18:35 2009 -0700"
      },
      "message": "Merge change 21057\n\n* changes:\n  Better error handling in EGL extensions\n"
    },
    {
      "commit": "24e5f5290195e1c02c18730d0639efda65d64914",
      "tree": "ba706a2faa568c38f74c15c9583836472c98ab96",
      "parents": [
        "326f846e67c4f75709a11b215d4d2c59f4b73891"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:18:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:18:15 2009 -0700"
      },
      "message": "Better error handling in EGL extensions\n"
    },
    {
      "commit": "878d647b5b77f040cdae810e7e05be23a105e1eb",
      "tree": "d8f23c6bf57d7f57680df75a8eb38201c8f04483",
      "parents": [
        "fac300462060a69dc5aa83b493f8cbdd28ea7d27",
        "f2c6fe29bbfab1db743a3ccce327d3d920643629"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Aug 12 12:36:12 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Aug 12 12:36:12 2009 -0700"
      },
      "message": "am b8546001: Merge change 20878 into donut\n\nMerge commit \u0027b8546001701405a76dad7e6235046e592296fac2\u0027\n\n* commit \u0027b8546001701405a76dad7e6235046e592296fac2\u0027:\n  Fix issue #2048263: More debugging information\n"
    },
    {
      "commit": "11c04c984afa0b3eea351d7cd9a62daab0ec70ea",
      "tree": "ce61784ef50667d4fabfb233fe1bd5c669b09b54",
      "parents": [
        "cf70e3301bcbfbdeb6a4fd04196f3e4ea5420c39"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 12 05:49:58 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Wed Aug 12 05:49:58 2009 -0700"
      },
      "message": "Workaround for issue 2046783.\n\nApparently the problem is caused by the fact that A2dpAudioStreamOut::standby() calls a2dp_stop() after the headset has been powered down.\nThe workaround consists in indicating to A2DP audio hardware that a close request is pending and that stanby() must be bypassed.\n"
    },
    {
      "commit": "cf70e3301bcbfbdeb6a4fd04196f3e4ea5420c39",
      "tree": "699d3012ce271d628248a235541547a8cce76dfb",
      "parents": [
        "5221271375f361b84a6eeec3d7086f223997fbb3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 22:34:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 23:44:13 2009 -0700"
      },
      "message": "second take, hopefully this time it doesn\u0027t break one of the builds: \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n"
    },
    {
      "commit": "5221271375f361b84a6eeec3d7086f223997fbb3",
      "tree": "f65cab160cf38b9ed577f1cb5bc2f9882fc8631c",
      "parents": [
        "40ef81c7fce7cd1b028aec7b8b27b77ce6bf7b90"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 22:34:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 23:32:29 2009 -0700"
      },
      "message": "second take, hopefully this time it doesn\u0027t break one of the builds: \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n"
    },
    {
      "commit": "b2fd4665e66fe81969f1f07fd724c6f68dd8f7f1",
      "tree": "8564d48ba85748bdb281a3bcda22b41ed17c72e8",
      "parents": [
        "01b535185805d5b22c5fffc30833decdca308b5b"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "message": "Revert \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n\nThis reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.\n"
    },
    {
      "commit": "e868513287c50caec4bcc83be3c49e12dfbeac72",
      "tree": "6d718266a3587e3ce5f99cf717edb0e02eccd003",
      "parents": [
        "7e78445103b25c05b49d22ecfeb2704215f41010"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 11 18:56:41 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 11 18:56:41 2009 -0700"
      },
      "message": "Fix issue #2048263: More debugging information\n\nWe now hopefully do better about generating the anr reports, and include\ninformation about the malloc loaded assets in meminfo.\n"
    },
    {
      "commit": "df37b62c62f8efd3b5a433f9b4d40d30cec13a31",
      "tree": "43c783e665b9e1c47210d3c5a8f929b33acda72f",
      "parents": [
        "d779f052b4180f347ed0bd725fdfedda504773e5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:59:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 16:12:56 2009 -0700"
      },
      "message": "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\n\nThis change makes SurfaceHolder.setType(GPU) obsolete (it\u0027s now ignored).\nAdded an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.\n"
    },
    {
      "commit": "f5aba82cb7175547c0e2a697dc5d806a7203d2fa",
      "tree": "8564d48ba85748bdb281a3bcda22b41ed17c72e8",
      "parents": [
        "9e7b81943bb40b0d8d6d8b87cad40c10796864d9"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 10 23:22:32 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 11 09:43:09 2009 -0700"
      },
      "message": "Fix issue 2046140: master: media_server crash when powering down A2DP headset while a ringtone is playing.\n\nThis is because the AudioFlinger duplicating thread is closed while the output tracks are still active. This cause the output tracks objects to be destroyed at a time where they can be in use by the destination output mixer.\n\nThe fix consists in adding the OutputTrack to the track list (mTracks) of its destination thread so that a strong reference is help during the mixer processed and the track is detroyed only when safe by destination thread.\n\nAlso added detection of problems when creating the output track (e.g. no more tracks in mixer). In this case the output track is not added to output track list of duplicating thread.\n"
    },
    {
      "commit": "9e7b81943bb40b0d8d6d8b87cad40c10796864d9",
      "tree": "8e74cd406d7b91db33ca9e205a21bb107de7af8d",
      "parents": [
        "0ecc6d9232d518d28293153187dd77922e2e453f"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 10 02:41:54 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 11 09:07:44 2009 -0700"
      },
      "message": "Fix issue 2043314: Recorded audio is choppy.\n\nFixed cut/paste error causing constant reset of current frame index in input buffer.\n"
    },
    {
      "commit": "544542bbb96ead056a80ee9800e40a78cd333dc7",
      "tree": "d1dcd0f336ed29b199234dd6644f29303082e3c8",
      "parents": [
        "a60d3c8f1d2fcfc87042418b296a7b37bc7884ce",
        "af0b0f09bb5778b1346916d3cc18a5a81cb0077e"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 10 21:22:00 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 10 21:22:00 2009 -0700"
      },
      "message": "Merge change 20699\n\n* changes:\n  enable HW acceleration for the Dim Surface on 8k devices\n"
    },
    {
      "commit": "af0b0f09bb5778b1346916d3cc18a5a81cb0077e",
      "tree": "15a2ed3954719edd9e7e5a2056c0fb62b202ac74",
      "parents": [
        "1d3bcd6e217e7ef177287d06f6fdf6149f453830"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:13:06 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:13:06 2009 -0700"
      },
      "message": "enable HW acceleration for the Dim Surface on 8k devices\n"
    },
    {
      "commit": "878c0e1d686bbd804cf33e3b4ea8304f79523263",
      "tree": "a9b3ff8d2d7ecdd42810dca14f967143f0ee0ace",
      "parents": [
        "ae07aadd2620297bb1296448b088ef2155ec1a77"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 10 08:15:12 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Mon Aug 10 08:15:12 2009 -0700"
      },
      "message": "Limit AudioFlinger mixer track sampling rate.\n\nWhen changing the audio output stream sampling rate with setParameters() make sure that all tracks have a sampling rate less or equal to 2 times the new output sampling rate.\n"
    },
    {
      "commit": "efd9ad93ff7655b7386204b12eb7b50ae355527d",
      "tree": "9c834f296fdf8bb941e2f8da5b6dd53534276ebc",
      "parents": [
        "8d923e758c49c9c4342d86454e38e1a9887e9813"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Aug 08 06:41:09 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Aug 08 06:41:09 2009 -0700"
      },
      "message": "Test for issue 2041105: CPU pegged after lost of bluetooth connection[WAR ROOM].\n\nMerge change 7419 from master that may help eliminate the problem.\nThis change was for a different use case (when disabling A2DP to switch output to SCO) but without a repro case it is worth trying.\n"
    },
    {
      "commit": "9fbeb7c6e2b48ea5ee5696e7f8062a4118329567",
      "tree": "f73b2979645c688ba33de246b206bf2545f7c8a1",
      "parents": [
        "9cedf4c3f065f242380082a29434a47446b195c6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 19:08:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 19:08:18 2009 -0700"
      },
      "message": "remove unused and confusing comment\n"
    },
    {
      "commit": "9cedf4c3f065f242380082a29434a47446b195c6",
      "tree": "226dea40d4ed56e5f12086740902e3e5c7a2c369",
      "parents": [
        "ec2126dc0d8b7f43aebbb908c1bcd196bd4cbc32",
        "0928e31cc7a9ec7367a68796fcaa9c52959216a5"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 07 16:39:34 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 07 16:39:34 2009 -0700"
      },
      "message": "Merge changes 20497,20498,20499\n\n* changes:\n  minor code clean-up\n  added EGLUtils::strerror\n  better error handling\n"
    },
    {
      "commit": "0928e31cc7a9ec7367a68796fcaa9c52959216a5",
      "tree": "cd33d8bd7bcb1de4b7c83d086e00eeaec5b8f2ea",
      "parents": [
        "8c12c7aec3fdbccfa8161c2c12131d590a9b5ce8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:38:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:38:10 2009 -0700"
      },
      "message": "minor code clean-up\n"
    },
    {
      "commit": "8c12c7aec3fdbccfa8161c2c12131d590a9b5ce8",
      "tree": "4c68d57ec659dc3b8691508f9d55c7c79a55721a",
      "parents": [
        "42db9dcea2e6b9f60f07a3e9e2d6fbc196082284"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:37:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:37:21 2009 -0700"
      },
      "message": "added EGLUtils::strerror\n"
    },
    {
      "commit": "f9df24932fb94fb5503f834206bf84b173cfeb8b",
      "tree": "30d0658fd995fdb0261147d4768aafad0dfaba88",
      "parents": [
        "b368f280c384a408ae568372e735e487c411dc9c"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Aug 06 08:49:39 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 10:31:53 2009 -0700"
      },
      "message": "AudioService now differentiates BT headsets and car kits.\n\nThe BT headset detection now makes the difference between car kits and headsets, which can be used by audio policy manager.\nThe headset connection is also detected earlier, that is when the headset is connected and not when the SCO socket is connected as it was the case before. This allows the audio policy manager to suspend A2DP output while ringing if a SCO headset is connected.\n"
    },
    {
      "commit": "dae20d9b7f1af8607dfbf3540d041bee7b286ae9",
      "tree": "2177b85ee37c9257d5f0d32dba8b46e8311893de",
      "parents": [
        "29b9eff418b065ec2232360fc2af5913902074c1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 04 08:37:05 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 10:19:09 2009 -0700"
      },
      "message": "Fix problem in AudioFlinger closeOutput and closeInput.\n\nThere was no garanty that the corresponding thread destructor had been already called when exiting the closeOutput() or closeInput() functions.\nThis contructor could be called by the thread after the exit condition is signalled. By way of consequence, closeOutputStream() could be called after\nwe exited closeOutput() function.\n\nTo solve the problem, the call to closeOutputStream() or closeInputStream() is moved to closeOutput() or closeInput().\n"
    },
    {
      "commit": "29b9eff418b065ec2232360fc2af5913902074c1",
      "tree": "513980268f903eacd7332083f8b3224adf28a027",
      "parents": [
        "3464c015ad2fb6e95525b294614217e5c5607013"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 04 07:29:18 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 09:32:06 2009 -0700"
      },
      "message": "Improved unit test code for Audioflinger.\n"
    },
    {
      "commit": "3464c015ad2fb6e95525b294614217e5c5607013",
      "tree": "4ef4fcb66b2eada23b8a12f561573ffff5599e8e",
      "parents": [
        "119ed307eaa1f2fddc3606ba0342acbf0e501a71"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 04 09:45:33 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 09:28:40 2009 -0700"
      },
      "message": "Fix lockup in audio flinger threadbase setParameters.\n\nThe function checkForNewParameters_l() is called with the ThreadBase mutex mLock locked. In the case where the parameter change implies\nan audio parameter modification (e.g. sampling rate) the function sendConfigEvent() is called which tries to lock mLock creating a deadlock.\n\nThe fix consists in creating a function equivalent to sendConfigEvent() that must be called with mLock locked and does not lock mLock.\n\nAlso added the possibility to have more than one set parameter request pending.\n"
    },
    {
      "commit": "cf6b2bf4690cc876fa3f1e00363c4a534894608d",
      "tree": "8c762c3ba3697029979c8cdc199e31beb51a9267",
      "parents": [
        "dfbea2f39715c64adf1e99844945b4e4e816ddba",
        "8851d1e0533df09c2577c32683ab6aa6fdbf252d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 07 09:09:10 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 07 09:09:10 2009 -0700"
      },
      "message": "Merge change 9660\n\n* changes:\n  Fix problem in A2DP interface closeOutputStream().\n"
    },
    {
      "commit": "dfbea2f39715c64adf1e99844945b4e4e816ddba",
      "tree": "2a1b2a6b22d8bc3deb35e1bda33621eb4c50ece5",
      "parents": [
        "e0e9ecc0ce17cce2e681d099426da9d4d3d83377",
        "764db963fa36b4a272e8c4a77cbe9610404a3b11"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 07 09:08:36 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 07 09:08:36 2009 -0700"
      },
      "message": "Merge change 9653\n\n* changes:\n  Fix getParameters() default implementation.\n"
    },
    {
      "commit": "e0e9ecc0ce17cce2e681d099426da9d4d3d83377",
      "tree": "e4c73b5c2df9f6df3bc16912c1be7d0974e1b9af",
      "parents": [
        "3b2734f443d2799717e8b2b1847c8e2841764582"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 28 08:44:33 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Aug 07 00:27:19 2009 -0700"
      },
      "message": "Fix issue 2001214: AudioFlinger and AudioPolicyService interfaces should not use pointers as handles to inputs and outputs.\n\nUse integers instead of void* as input/output handles at IAudioFlinger and IAudioPolicyService interfaces.\nAudioFlinger maintains an always increasing count of opened inputs or outputs as unique ID.\n"
    },
    {
      "commit": "42db9dcea2e6b9f60f07a3e9e2d6fbc196082284",
      "tree": "d1b51107d0ec6769baea27330b8d27374c8ef538",
      "parents": [
        "f9694507ec07e3909f41dba051b1bdbdb66002d8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 20:46:44 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 20:46:44 2009 -0700"
      },
      "message": "better error handling\n"
    },
    {
      "commit": "f9694507ec07e3909f41dba051b1bdbdb66002d8",
      "tree": "0cd36bcd10047b665471b32bd7cda6020c94c6f7",
      "parents": [
        "3741c2ef097988912466ae3b07eef9ca114d824d",
        "b97603dcf01792b3d5610ef9a8f0a4c9e1af8b02"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 17:15:11 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 17:15:11 2009 -0700"
      },
      "message": "Merge change 20365\n\n* changes:\n  oops, EGLConfig of value zero may be valid\n"
    },
    {
      "commit": "b97603dcf01792b3d5610ef9a8f0a4c9e1af8b02",
      "tree": "4dc13f9d639c07123bea28deac8e3322fda0a300",
      "parents": [
        "653870d5e945ff94ff8136c97db0a016fc119683"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 17:14:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 17:14:10 2009 -0700"
      },
      "message": "oops, EGLConfig of value zero may be valid\n"
    },
    {
      "commit": "b2001065b957bf0db2577c0877c4751097d627af",
      "tree": "5c00115165f278d8a0553b46418496b4f142cd76",
      "parents": [
        "d9cede5115af9ac17a3a87386485640a0ea0343e",
        "653870d5e945ff94ff8136c97db0a016fc119683"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 16:27:47 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 16:27:47 2009 -0700"
      },
      "message": "Merge changes 20345,20346,20347\n\n* changes:\n  update most gl tests to use EGLUtils\n  added two EGL helpers for selecting a config matching a certain pixelformat or native window type\n  added NATIVE_WINDOW_FORMAT attribute to android_native_window_t\n"
    },
    {
      "commit": "6cf50a770dabd13cf5b72bb0a6fb9dd002c88db6",
      "tree": "cf9f9f051e842663afe6bd850f9d5cdb436e4901",
      "parents": [
        "6b1f41004fa48e96bab61f508867314261de660b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "message": "added two EGL helpers for selecting a config matching a certain pixelformat or native window type\n"
    },
    {
      "commit": "6b1f41004fa48e96bab61f508867314261de660b",
      "tree": "d5988740afd45581663457af7870db42faef4160",
      "parents": [
        "1c3561e8d862d8fd27f8e843a18f251b9d9500b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:04:29 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:04:29 2009 -0700"
      },
      "message": "added NATIVE_WINDOW_FORMAT attribute to android_native_window_t\n"
    },
    {
      "commit": "34193b31681dcbadf0a629879ca004f561b1b149",
      "tree": "2a0d9756383bd7fd4049191cbdde2aeec51f3191",
      "parents": [
        "b55717fd57b0d8a07a36d182430a3e14556ceca4"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 06 14:50:08 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 06 14:52:13 2009 -0700"
      },
      "message": "EventHub: pass the name of each input device up to Java\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "46078d997861dd18798d6cc91b3ca32820faf7c6",
      "tree": "dbb9a6f1d7614def491824f7b570d6c9da3a59ad",
      "parents": [
        "d285c41e5d894af55d7e60fb1dfedd6076d68e42",
        "3eded949243c8d331190d3803b5c5c2bf2a058fc"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 05 12:52:51 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 05 12:52:51 2009 -0700"
      },
      "message": "Merge change 20133\n\n* changes:\n  don\u0027t crash when SurfaceBuffer::writeToParcel is given a null argument\n"
    },
    {
      "commit": "3eded949243c8d331190d3803b5c5c2bf2a058fc",
      "tree": "a93a55378f5b03426ee7822b7d2304775a2eed9c",
      "parents": [
        "591018aaf9e95b9d2f6d9742194e940605b1bffa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 04 20:53:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 05 12:22:30 2009 -0700"
      },
      "message": "don\u0027t crash when SurfaceBuffer::writeToParcel is given a null argument\n"
    },
    {
      "commit": "c591736c66cbd4320fc96573fda28bec2b4d4100",
      "tree": "c7df67f7338a856b8e0fee9b0b53adc3a2838fcd",
      "parents": [
        "e8ce92bbe07ae4df78fc6ce4ec33ed5e2baa2e46"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 04 05:49:43 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 04 20:53:52 2009 -0700"
      },
      "message": "Finish implementation of multiple pointer support for MotionEvent.\n\nThe major things going on here:\n\n- The MotionEvent API is now extended to included \"pointer ID\" information, for\n  applications to keep track of individual fingers as they move up and down.\n  PointerLocation has been updated to take advantage of this.\n\n- The input system now has logic to generate MotionEvents with the new ID\n  information, synthesizing an identifier as new points are down and trying to\n  keep pointer ids consistent across events by looking at the distance between\n  the last and next set of pointers.\n\n- We now support the new multitouch driver protocol, and will use that instead\n  of the old one if it is available.  We do NOT use any finger id information\n  coming from the driver, but always synthesize pointer ids in user space.\n  (This is simply because we don\u0027t yet have a driver reporting this information\n  from which to base an implementation on.)\n\n- Increase maximum number of fingers to 10.  This code has only been used\n  with a driver that reports up to 2, so no idea how more will actually work.\n\n- Oh and the input system can now detect and report physical DPAD devices.\n"
    },
    {
      "commit": "8851d1e0533df09c2577c32683ab6aa6fdbf252d",
      "tree": "607337173c05d9f14b5cdcd52152cc3abb606dfd",
      "parents": [
        "8652a49e94487743908a5830540a775f23ef82dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 04 07:43:10 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 04 07:43:10 2009 -0700"
      },
      "message": "Fix problem in A2DP interface closeOutputStream().\n\nIf the output stream handler passed was not the A2DP output stream, the request was ignored instead of being forwarded downstream to hardware interface.\n"
    },
    {
      "commit": "764db963fa36b4a272e8c4a77cbe9610404a3b11",
      "tree": "ebd2d9b1c9ce91928f03267e0a2537238b95bd8d",
      "parents": [
        "8652a49e94487743908a5830540a775f23ef82dd"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 04 06:17:43 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Aug 04 06:17:43 2009 -0700"
      },
      "message": "Fix getParameters() default implementation.\n\nDo not return empty string but key value pairs with empty values.\n"
    },
    {
      "commit": "a03f7c9170ca5bf3ce68470a9d112ffebde1f143",
      "tree": "8925704da3e23d9386671ca175769bd922e31e69",
      "parents": [
        "746ff3f925ac1b913f0eed28cd4f927a1c2bd5b8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:44:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 03 15:08:16 2009 -0700"
      },
      "message": "free surface buffers before trying to allocate new ones, so we have more chance of success\n"
    },
    {
      "commit": "4851d01930df752cfab14f70a44154146394d24c",
      "tree": "7aeb7d530ddf0219b90296f4cdb1d39e314844ec",
      "parents": [
        "f3b19c40129bf963b14020bddd757402d4b7a2dd",
        "429db150affcc99b198fa0da52165fde4cd4cc7c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 01 01:55:07 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Aug 01 01:55:07 2009 -0700"
      },
      "message": "Merge change 9397\n\n* changes:\n  Fix Win32 libutils to get a working SDK build.\n"
    },
    {
      "commit": "429db150affcc99b198fa0da52165fde4cd4cc7c",
      "tree": "4305296c2a077f11e0bbfdbc714566bc99dfaba9",
      "parents": [
        "60da4f44f1c1978839464919371834de2cb1fc62"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Aug 01 00:20:17 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Sat Aug 01 10:53:29 2009 +0200"
      },
      "message": "Fix Win32 libutils to get a working SDK build.\n"
    },
    {
      "commit": "1d0a95b12a9194f64dd436224ec3bf8e0622d678",
      "tree": "bbc967726cbe12bd9e3e193df480941de5b38734",
      "parents": [
        "cf81c84e43eb33931b950fa2c9b4c6f51afe7197"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:12:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:18:16 2009 -0700"
      },
      "message": "don\u0027t crash in Parcel when given a null (and therfore invalid) native_handle_t\n"
    },
    {
      "commit": "cf81c84e43eb33931b950fa2c9b4c6f51afe7197",
      "tree": "c84f34e7c2c811efb62f9207bfe553bf507b74cd",
      "parents": [
        "fa170f513338322102a200de7d1fd696e51d55c8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 14:47:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 14:47:00 2009 -0700"
      },
      "message": "be more robust when errors occur upon EGL surface creation (ie: don\u0027t crash)\n"
    },
    {
      "commit": "fa170f513338322102a200de7d1fd696e51d55c8",
      "tree": "c4b7c19f4b78cf2e8805b675e25dc4dd99e227eb",
      "parents": [
        "b6db63a126967bb533966bfa946d963ad90d69a7",
        "cb6b9041647b4f080324742eee5ce709960ff610"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 18:46:48 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 18:46:48 2009 -0700"
      },
      "message": "Merge change 9287\n\n* changes:\n  fixed some issues with the software renderer when surfaces are made current.\n"
    },
    {
      "commit": "cb6b9041647b4f080324742eee5ce709960ff610",
      "tree": "14e5efafa0eace5d3a7943dc9c6316880ef22d11",
      "parents": [
        "69bdcb9b7b5089984bf474f30029fa024f519e47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 18:14:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 18:14:56 2009 -0700"
      },
      "message": "fixed some issues with the software renderer when surfaces are made current.\n\nthere was several issues:\n- when a surface was made non-current, the last frame wasn\u0027t shown and the buffer could stay locked\n- when a surface was made current the 2nd time, it would not dequeue a new buffer\n\nnow, queue/dequeue are done when the surface is made current.\n\nfor this to work, a new query() hook had to be added on android_native_window_t, it allows to retrieve some attributes of a window (currently only width and height).\n"
    },
    {
      "commit": "ff1dcc2cf9043c4d128cf8498b58e956e9ee965f",
      "tree": "ec026a8c308b3b171dda76f8536f2c4ea5496419",
      "parents": [
        "c76696a27662e6fda2c27fd6fb648ad9ddc78779",
        "62cbdad4011db8081eaf1030b044c10de20a13d3"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 16:05:27 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 30 16:05:27 2009 -0700"
      },
      "message": "am 25dff70f: Merge change 9039 into donut\n\nMerge commit \u002725dff70f153529b87f5ad4a92f4de21e8950b1de\u0027\n\n* commit \u002725dff70f153529b87f5ad4a92f4de21e8950b1de\u0027:\n  Fix #2018814: System cannot correctly render assets with \"wrap_content\" attribute in QVGA\n"
    },
    {
      "commit": "abcfe35781a10ab18470251f8e18661cd8ca2215",
      "tree": "eeb53f2f2ac92853a8fe24d394de306e24ca574e",
      "parents": [
        "391aac8181697c4b439e759883ad8782d2ca7c5c",
        "e56271109fe59e1c1f4958bdcdeb9a3a7f53eb28"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 14:37:48 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 14:37:48 2009 -0700"
      },
      "message": "Merge change 9070\n\n* changes:\n  Adding resizeInput and setAttributes for overlay\n"
    },
    {
      "commit": "69bdcb9b7b5089984bf474f30029fa024f519e47",
      "tree": "af3eb96bdcbe4cbf5d560a90e1e6841bc5368cd7",
      "parents": [
        "f9cd64bc6c6aa58ad120689a1a951362ff234c78"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 12:24:41 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 12:24:41 2009 -0700"
      },
      "message": "Fix a debug statement in BufferMapper\n"
    },
    {
      "commit": "f9cd64bc6c6aa58ad120689a1a951362ff234c78",
      "tree": "cba74b4894e42f4156c852aa0664a566eabe7417",
      "parents": [
        "7cab489fc4349020fe5c767f64fd6218b662f906"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 12:19:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 12:19:10 2009 -0700"
      },
      "message": "NPOT EGLimage without GL_ARB_texture_non_power_of_two would be improperly scalled\n\nThe current gralloc allocates buffer memory for render targets that will typically have NPOT dimensions. Assuming that the vendor driver supports converting the resulting NPOT android_native_buffer_t to a NPOT EGLImage, SurfaceFlinger calls glEGLImageTargetTexture2DOES(), and uses glGetError() to test whether the GL can support creating an EGL target texture with the specified NPOT EGLImage. If it is supported, the DIRECT_TEXTURE flag remains set, otherwise it is cleared.\n\nTangentially, if the driver advertises the GL_ARB_texture_non_power_of_two extension, the NPOT_EXTENSION flag is set, otherwise it is cleared.\n\nIf the driver supported creating an EGL target texture from a NPOT source EGLImage, it implicitly creates a NPOT texture. This does not need any glScalef() texture coordinate correction in LayerBase::drawWithOpenGL(). However, the same driver may not advertise the GL_ARB_texture_non_power_of_two extension nor generally support NPOT textures that were not derived from EGLImages. So SurfaceFlinger may flag only DIRECT_TEXTURE, not NPOT_EXTENSION.\n\nTherefore, the test in LayerBase::drawWithOpenGL() should only perform the glScalef() if neither NPOT_EXTENSION or DIRECT_TEXTURE are flagged. Otherwise scaling is applied to NPOT EGL target textures when none is required.\n"
    },
    {
      "commit": "3945ae5065ec62ed267e1aaf4cfc160c5eb6a79e",
      "tree": "09e0a70b87f84d145fb74c607455695488eaf1ac",
      "parents": [
        "d8475b75e6fc33416b892c44136ee9c16f79ed81"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 29 15:41:19 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Jul 29 19:44:01 2009 -0700"
      },
      "message": "Fix #2018814: System cannot correctly render assets with \"wrap_content\" attribute in QVGA\n\nIt turns out we were not returning the density for anything retrieved from a\nTypedArray...  which basically means any bitmap references from a layout or style...!!!\n\nThis is now fixed.\n\nAlso fiddle with the density compatibility mode to turn on smoothing in certain situations,\nhelping the look of things when they need to scale and we couldn\u0027t do the scaling at\nload time.\n"
    },
    {
      "commit": "e56271109fe59e1c1f4958bdcdeb9a3a7f53eb28",
      "tree": "201db3370a39df777129ba4329aa42014944f7c8",
      "parents": [
        "e3772efdc5dacf9a580786b836daa77ce127cb6e"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Fri Jul 24 19:25:30 2009 -0500"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Wed Jul 29 17:53:38 2009 -0700"
      },
      "message": "Adding resizeInput and setAttributes for overlay\n"
    },
    {
      "commit": "e437ff809942d3a234165d22cbf100f0f5b847ab",
      "tree": "ed72b05d656ab191b84a0d24b46320e2402318e4",
      "parents": [
        "e3772efdc5dacf9a580786b836daa77ce127cb6e",
        "7f5989e19ba47af4a147c19b9bb5b8960ad467d2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 29 14:47:41 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 29 14:47:41 2009 -0700"
      },
      "message": "am 1521cd6e: Merge change 8015 into donut\n\nMerge commit \u00271521cd6e657ba4efa9382ab73d3cbba3bdf50ead\u0027\n\n* commit \u00271521cd6e657ba4efa9382ab73d3cbba3bdf50ead\u0027:\n  Reset the mDpiX and mDpiY values when qemu.sf.lcd_density is defined.\n"
    },
    {
      "commit": "e3772efdc5dacf9a580786b836daa77ce127cb6e",
      "tree": "aa6176b9e03a15afe48de8730686dc2a5096e0cf",
      "parents": [
        "918dca8985a190d15146bfc7e1ed1a2020fc23c7",
        "c1d7a6ec1e8058135f1058d93811dff55e331276"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 29 14:10:12 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 29 14:10:12 2009 -0700"
      },
      "message": "Merge change 9008\n\n* changes:\n  Only restore the bits for wallpapers that aren\u0027t built in.\n"
    },
    {
      "commit": "c1d7a6ec1e8058135f1058d93811dff55e331276",
      "tree": "428ed0899ff07bccdad590fac6fb76f368815737",
      "parents": [
        "05ad423fdd9b413a690c889cad9012059748c2a4"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jul 28 18:24:51 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jul 29 12:05:36 2009 -0700"
      },
      "message": "Only restore the bits for wallpapers that aren\u0027t built in.\n"
    },
    {
      "commit": "c47c45f02ddc20fcc0054533f129cba2a2477732",
      "tree": "5a2beeadca5d4b343c5d88c0bfe3cfab6d69b0c7",
      "parents": [
        "925999d818130699dc72a6ffbfe62933df75db0c",
        "f4531691b2273927960817fba1a480e662d4f2ba"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 29 09:50:29 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 29 09:50:29 2009 -0700"
      },
      "message": "Merge change 8987\n\n* changes:\n  Fix firestone build\n"
    },
    {
      "commit": "f4531691b2273927960817fba1a480e662d4f2ba",
      "tree": "4c32c49f5eca0102635d6bd89e40ab8a0a003248",
      "parents": [
        "4ae22256db8bbee12fc237a6c1b33db397ba362c"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jul 29 09:47:23 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Jul 29 09:47:23 2009 -0700"
      },
      "message": "Fix firestone build\n"
    },
    {
      "commit": "52eaa311d444e3686fad7b162402bb292697b171",
      "tree": "9851d34aa9c02dd98ae487ba98e23a9186d63b49",
      "parents": [
        "34f525c9137dcd33790befe7f96240aa0c6c6ede",
        "1b96719b327c16db024836f91fcba54335e5a96b"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 20:20:02 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 20:20:02 2009 -0700"
      },
      "message": "Merge changes 8935,8936\n\n* changes:\n  Fix the IOException in wallpaper restore -- the padding isn\u0027t required at the end.\n  Fix bug 1982892 - batteryservice turns off device even while plugged in\n"
    },
    {
      "commit": "672136f3e64f8ead215d99da52e780f6f87a133e",
      "tree": "34c970167190d0b4813e258e3061a06c04464b81",
      "parents": [
        "1c8ffbc728071f28aafda445428b6cf65bb25685"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 19:17:54 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 19:17:54 2009 -0700"
      },
      "message": "fix [1985856] Seg fault when using the soft keyboard in the Messaging app\n"
    },
    {
      "commit": "1b96719b327c16db024836f91fcba54335e5a96b",
      "tree": "9a946445f3d3a264d5a4c643950a31e7525cf60e",
      "parents": [
        "d4357fec9ccf875ecccddc7bb22b34efda438f5c"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jul 28 18:23:05 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Jul 28 18:30:15 2009 -0700"
      },
      "message": "Fix the IOException in wallpaper restore -- the padding isn\u0027t required at the end.\n"
    },
    {
      "commit": "7f5989e19ba47af4a147c19b9bb5b8960ad467d2",
      "tree": "eeff57550b1220cb0f716adac2e8df057ad5d27a",
      "parents": [
        "3cd98068c86eb4f7d17438bf0893829a5eec2b5d",
        "31469e1069a873993ff43dec803bf5f14fad0fb5"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 16:16:38 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 16:16:38 2009 -0700"
      },
      "message": "Merge change 8015 into donut\n\n* changes:\n  Reset the mDpiX and mDpiY values when qemu.sf.lcd_density is defined.\n"
    },
    {
      "commit": "31469e1069a873993ff43dec803bf5f14fad0fb5",
      "tree": "0751397ae1ff717ee212badc0aa404ba44219274",
      "parents": [
        "dccff9690cce09b4f8461d1d7874bb0692efb9fb"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 29 00:38:58 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 29 00:38:58 2009 +0200"
      },
      "message": "Reset the mDpiX and mDpiY values when qemu.sf.lcd_density is defined.\n\nThis will make android.view.Display return corresponding values for\nthe screen\u0027s DPI.\n"
    },
    {
      "commit": "5d7126b625c8c4a7b945e8c247b63abff7bc13b6",
      "tree": "74ae309408f4e1e7916cbeba037a87d7da62ecd3",
      "parents": [
        "5fb9d7d1c168be17573f805615021280e0839f11",
        "792561dab0733bea46e5de58c03640bfb14869fd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 14:20:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 14:20:21 2009 -0700"
      },
      "message": "resolved conflicts for merge of ac38dfc5 to master\n"
    },
    {
      "commit": "970112231e887c8a14441ec4fed55342e019fc8c",
      "tree": "446bac9abff8cd5f446664701268b582b11331a5",
      "parents": [
        "c05c1c14be8fe4d406a57e8fc9ece7631e93e12c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 10:57:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 10:57:27 2009 -0700"
      },
      "message": "fix [2017532] Partial Update leaves residual image.\n"
    },
    {
      "commit": "d55d179e95baecdd9722dbd1c169608cb819716c",
      "tree": "844a052e9b68cd44ce4041e8b3258606767e571f",
      "parents": [
        "728d0c2a7f49a8eecc185502775759442d60a5b4"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 28 06:11:55 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Tue Jul 28 06:11:55 2009 -0700"
      },
      "message": "Fix issue 2004229: DTMF tones play through earpiece (G1).\n"
    },
    {
      "commit": "b734bce2acd99282f7ca97ffc148cf639c91466e",
      "tree": "6215955c361bfd25a2ee5743e0948b6354444351",
      "parents": [
        "03032f5a4f401815684917d24b110cfaa2c92e69"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 25 01:41:52 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Sat Jul 25 01:41:52 2009 -0700"
      },
      "message": "Fix the build for BOARD_USES_GENERIC_AUDIO option\n"
    },
    {
      "commit": "a2e32699f4d0a967b271cb5d3ef141b3be4c1125",
      "tree": "6d52446ee6169c057344ec402386ae914b04ba44",
      "parents": [
        "009396037135aea962050dbf967fe31537018df1"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 24 06:58:44 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 24 06:58:44 2009 -0700"
      },
      "message": "Fix issue 2001204: libaudiopolicy.so and libaudiopolicygeneric.so libraries must be pre-linked.\n"
    },
    {
      "commit": "fd558a97edd04399fabf54965f14cd6628479cb0",
      "tree": "76cb8fd8f2c16b0f7614fd8e6f8fb954ee441ac9",
      "parents": [
        "1edcb09170aa279506cc520991baa6e0b69d0595"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 13:35:01 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 13:53:19 2009 -0700"
      },
      "message": "Fix issue 1999585: audioflinger crash.\n\nWe were looping on the number of playback threads when dumping record threads.\n"
    },
    {
      "commit": "9395d9be9c516a2468e2cf741a0e5a9c7615ef82",
      "tree": "7b09540ee38a0a9cd6993b0364fee3a8607efeec",
      "parents": [
        "b253b42978b4d5c2fe53f11401d8bea56923e378"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 13:17:39 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 13:17:39 2009 -0700"
      },
      "message": "Fix the sim build.\n"
    },
    {
      "commit": "9d91ad5d99c1318f7f1435370e29f3f337afe82f",
      "tree": "a7cd0ed053e743e9b71a440aebf83325b829bad5",
      "parents": [
        "eba4009d897b30f2e24bb464468489c739f93e17"
      ],
      "author": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Fri Jul 17 12:17:14 2009 -0700"
      },
      "committer": {
        "name": "Eric Laurent",
        "email": "elaurent@google.com",
        "time": "Thu Jul 23 06:03:39 2009 -0700"
      },
      "message": "Fix issue 1795088       Improve audio routing code\n\nInitial commit for review.\nIntegrated comments after patch set 1 review.\nFixed lockup in AudioFlinger::ThreadBase::exit()\nFixed lockup when playing tone with AudioPlocyService startTone()\n"
    },
    {
      "commit": "eba4009d897b30f2e24bb464468489c739f93e17",
      "tree": "61d1c278425ba356f11a7d47f7fc5a0c80d5acc8",
      "parents": [
        "6bb388e543727efba6d384a24b9e3ecbdc573311",
        "1000170033ec2fd7427cf72c81432384ad8a5286"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 22 18:28:01 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 22 18:28:01 2009 -0700"
      },
      "message": "Merge change 8109\n\n* changes:\n  Add a flag to set whether the overlay has been initialized.  Commit needs to be called at least once on each overlay, and it appears that sometimes this doesn\u0027t happen because the visibility never changes.  With this change the overlay parameter and position will be committed when either the visibility of the window changes, or on the first call to visibility resolved, if it hasn\u0027t already been done.\n"
    },
    {
      "commit": "1000170033ec2fd7427cf72c81432384ad8a5286",
      "tree": "217f9b6edf452295c69a60c3d758a404ec825f8e",
      "parents": [
        "96df49bb7deaa33168040084021ff142963a086b"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Tue Jul 21 16:17:59 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Wed Jul 22 17:17:46 2009 -0700"
      },
      "message": "Add a flag to set whether the overlay has been initialized.  Commit needs to be called at least once on each overlay, and it appears that sometimes this\ndoesn\u0027t happen because the visibility never changes.  With this change\nthe overlay parameter and position will be committed when either the visibility\nof the window changes, or on the first call to visibility resolved, if it\nhasn\u0027t already been done.\n\nSigned-off-by: Rebecca Schultz Zavin \u003crebecca@android.com\u003e\n"
    },
    {
      "commit": "351b6f926e06355079669f170a97a729537932ed",
      "tree": "0d779cee2a916404e9c423eb337d4e38d78ab997",
      "parents": [
        "297bde4328124db768b90cd11e38d5e23ca152ba",
        "7a0847196cc33a0f1ee563d2009393c88c618b30"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 21 19:03:53 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 21 19:03:53 2009 -0700"
      },
      "message": "am 9fc20b0e: Merge change 8126 into donut\n\nMerge commit \u00279fc20b0e381b5fe00b7049ef357c839cd05a33bf\u0027\n\n* commit \u00279fc20b0e381b5fe00b7049ef357c839cd05a33bf\u0027:\n  First pass at reworking screen density/size APIs.\n"
    },
    {
      "commit": "60cde60e89373b03f1c645c51f825c7898f62d9e",
      "tree": "11203fd1998828f47f97f07de1114a0f54790a39",
      "parents": [
        "0e09083649e526196637b5763532418278e10de8"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 21 17:46:02 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 21 18:28:42 2009 -0700"
      },
      "message": "First pass at reworking screen density/size APIs.\n\nThis changes the names of the directories in aapt, to what you see\nin the list of DpiTest resources.  Also adds a new \"long\" configuration\nfor wide screens, which the platform sets appropriate, and introduces\na new kind of resizeability for not large but significantly larger\nthan normal screens which may have compatibility issues.\n"
    },
    {
      "commit": "96df49bb7deaa33168040084021ff142963a086b",
      "tree": "fa941fbbc5ba2acffdbf4b3c45ccaa468b7e770d",
      "parents": [
        "569e36633c61f5cebb659db3a3696801e3935761"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Mon Jul 20 21:18:04 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Tue Jul 21 11:07:23 2009 -0700"
      },
      "message": "Fix hardware overlay so all changes are commited when done.\n"
    },
    {
      "commit": "811fdfd9b7863ee4e6300500b9159d11878e1664",
      "tree": "96226ddee497fb27b25451434507bdfa79ff43c1",
      "parents": [
        "e69b16a6cb04014f3bab0c7a0ed4ed5f40732e5c",
        "71f771570e1b5341048a6fbf82a7c57d885bd850"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 10:50:52 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 10:50:52 2009 -0700"
      },
      "message": "Merge change 5892\n\n* changes:\n  Hardware overlay support\n"
    },
    {
      "commit": "89fbf845390322eb486632bae9108191803d4b9e",
      "tree": "2e64185b7d2fb3c7a1e71b59daf5dfab92a28dde",
      "parents": [
        "9d4f889870310bd5399d895867a6bc52c4bdbd49",
        "64feb0889aac117a7f0ff397ba2088cf2b0e7901"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jul 19 20:28:49 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 19 20:28:49 2009 -0700"
      },
      "message": "am aad0fcc9: Merge change 7783 into donut\n\nMerge commit \u0027aad0fcc9619eb72c18a6afff48ebc9d4011f0f54\u0027\n\n* commit \u0027aad0fcc9619eb72c18a6afff48ebc9d4011f0f54\u0027:\n  Add \"nodpi\" density, and expose a bunch of density-related APIs.\n"
    },
    {
      "commit": "b3e8103538c4a487c20238a2da86159381a688d7",
      "tree": "d96c81afd5836abc2d076af112734bca0f174607",
      "parents": [
        "a596331bd3a95dee8951950219d873c99180470e"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 17 11:13:48 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Jul 17 16:59:08 2009 -0700"
      },
      "message": "Add \"nodpi\" density, and expose a bunch of density-related APIs.\n\nAlso update the DpiTest app to use nodpi images, and try to have a mode\nwhere it turns off compatibility though it\u0027s not quite working.\n"
    },
    {
      "commit": "d43b194b69fca6c81023effc921fcc7576bad496",
      "tree": "2620a6fb34aa32a0f802838e7c9cfae5e72821ed",
      "parents": [
        "007a4a26e48eb16aa10b83d58a7ced1766b62de9"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 17 07:59:17 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Fri Jul 17 10:48:09 2009 -0700"
      },
      "message": "Instead of using -1 for pid and uid in the simulator, and then having\nto special-case the simulator case all over the framework, just use\ngetuid and getpid, and intercept those in the simulator wrapper.\n"
    },
    {
      "commit": "24a7e04a62cbba05eb02a8d7b993273e8e6befaf",
      "tree": "e3e4a8d826eee55e4903da5232e686138a6f5528",
      "parents": [
        "4f1037ac714d0bc2ff64d1733b5283f61c573869"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 17 00:10:10 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 17 00:10:10 2009 -0400"
      },
      "message": "EventHub: Compare name instead of id when excluding event input devices.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "9793c45993a667cc78ee779857daefc20588a045",
      "tree": "f7486a22fdd11c47567464f1ce0bbea0fbaa22e0",
      "parents": [
        "7f608f0345ce4a0c7ca330eb09af9dcd9173a52c",
        "0ff870e5df2d4c353590e073f2c97941e02b56cf"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 16 17:54:01 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jul 16 17:54:01 2009 -0700"
      },
      "message": "am 3e1663a2: Merge change 7536 into donut\n\nMerge commit \u00273e1663a2539ff0b939193304cfb601f6b134af7d\u0027\n\n* commit \u00273e1663a2539ff0b939193304cfb601f6b134af7d\u0027:\n  fix FILE* version of ZipUtils::inflateToBuffer\n"
    },
    {
      "commit": "71f771570e1b5341048a6fbf82a7c57d885bd850",
      "tree": "7a54038caf027b749e7d8f59b4d19c54cc1f581e",
      "parents": [
        "7c38f9fbb0e140259a364302b37a1ee91e46ff23"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Wed Jul 15 18:44:27 2009 -0500"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Thu Jul 16 14:31:20 2009 -0700"
      },
      "message": "Hardware overlay support\n\nEnable hardware overlay support for camera and video playback use cases\n"
    },
    {
      "commit": "0de50495d6ccb416e412052f428ab97dfee42f14",
      "tree": "86a8d7b662caa9ba5f6f781964362fa20afe92f1",
      "parents": [
        "5de268901ab6bf6b84f25d51b1cb2a32196c5bf0"
      ],
      "author": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 16 11:27:13 2009 -0700"
      },
      "committer": {
        "name": "Doug Zongker",
        "email": "dougz@android.com",
        "time": "Thu Jul 16 11:27:13 2009 -0700"
      },
      "message": "fix FILE* version of ZipUtils::inflateToBuffer\n\nThis can\u0027t have ever worked; a successful fread() was returning 1\ninstead of getSize.\n"
    },
    {
      "commit": "b441106276a9c5fcd47642aff8cda2a2039481c0",
      "tree": "78bd11f01e77433292148b50fc67ba98cdd1219d",
      "parents": [
        "7151edd5d83b3b770a0dc77cf52f7fe56b2a3af6"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 16 11:11:18 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 16 11:51:42 2009 -0400"
      },
      "message": "EventHub: Add support for excluding devices from being opened by as a keyboard.\n\nThis will be used to avoid unnecessarily listening to data from sensors\nthat function as event devices.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "7c38f9fbb0e140259a364302b37a1ee91e46ff23",
      "tree": "d5227a7730033667a96b5c15ffabffc269a6461a",
      "parents": [
        "ed38ab8c0f2bd7a1b126d91ab7e8f62c4ad7061a",
        "07c8a20f3913b20983c6b9c65b2e62269ace6923"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 15 13:58:02 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 15 13:58:02 2009 -0700"
      },
      "message": "Merge change 7419\n\n* changes:\n  Standby A2DP audio hardware interface when disabling A2DP.\n"
    },
    {
      "commit": "07c8a20f3913b20983c6b9c65b2e62269ace6923",
      "tree": "d77560cf925ec142911b2046ac38945297916644",
      "parents": [
        "33489f5866afaaf1297114de5efde3cdc8671dbe"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jul 15 12:22:55 2009 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jul 15 12:22:55 2009 -0700"
      },
      "message": "Standby A2DP audio hardware interface when disabling A2DP.\n\nPatch supplied on advice of partner. This causes us to send suspend_sink to\nBluez via socket interface, so we enter suspend on the A2DP link faster.\nThis is especially important when switching to SCO so that we come closer to\nwhitepaper recommendations to suspend A2DP before setting up SCO.\n\nWe have another patch set to add DBUS A2DP suspend and resume calls to Bluez\nthat will do a better job of following whitepaper recommendations for\nA2DP -\u003e SCO -\u003e A2DP, but this small patch is still an improvement.\n"
    },
    {
      "commit": "66b29ec55e4398472b6944138a9dcc30262b3f83",
      "tree": "960fb0f6ba951db99a6ae159db0db03f903a751c",
      "parents": [
        "29b936e8a96ed62f617b87db417058c25147babd"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Mon Jul 13 14:44:07 2009 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Wed Jul 15 09:58:07 2009 -0700"
      },
      "message": "Need to skip the padding after reading.\n\nm_dataEndPos points to the end of the data, not the beginning\nof the next entity.\n"
    },
    {
      "commit": "c968c3a9c782eaf44a5772cd388e5c690e5be4f3",
      "tree": "b63f5623ce1816c10b70630f4d8d335d7aead3a4",
      "parents": [
        "512bac1a9adb288fb305b17d5d1c234e01e2e517"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 14 12:06:54 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 14 18:51:53 2009 -0700"
      },
      "message": "Implement virtual button support.\n\nThe kernel can now publish a property describing the layout of virtual\nhardware buttons on the touchscreen.  These outside of the display\narea (outside of the absolute x and y controller range the driver\nreports), and when the user presses on them a key event will be\ngenerated rather than a touch event.\n\nThis also includes a number of tweaks to the absolute controller\nprocessing to make things work better on the new screens.  For\nexample, we now reject down events outside of the display area.\n\nStill left to be done is the ability to cancel a key down event,\nso the user can slide up from the virtual keys to the touch screen\nwithout causing a virtual key to execute.\n"
    },
    {
      "commit": "2d939020a4ecbcb9008bd07936ae37da2ea7ecd7",
      "tree": "bba462382f275363f2f38ac24876088a512ef7a0",
      "parents": [
        "d606003a66213da4587a18f5df8d006c11d96699"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 14 02:08:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 14 02:08:27 2009 -0700"
      },
      "message": "another attempt to fix the sim\n"
    },
    {
      "commit": "d606003a66213da4587a18f5df8d006c11d96699",
      "tree": "8c2b878e9c8dff14bafa793873c954bc36054123",
      "parents": [
        "b8eccd86603448a618978a92727a9b948d9f62ed"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 22:58:25 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 22:58:25 2009 -0700"
      },
      "message": "first attempt to fix the sim\n"
    },
    {
      "commit": "b8eccd86603448a618978a92727a9b948d9f62ed",
      "tree": "c444fb669830f2c6fd4b79846dafdbfacedd1a96",
      "parents": [
        "004f16a5757f2a623735ccbb453d560d63234d87",
        "ec0f1f6720cd7ecffab54b0dfc2553b55a38e50f"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 13 21:27:38 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 13 21:27:38 2009 -0700"
      },
      "message": "Merge change 6898\n\n* changes:\n  implement Mutex and Condition with pthread instead of calling futex directly.\n"
    },
    {
      "commit": "14998596937791c8efdfd61411236a7c7f66c064",
      "tree": "ff827be6f2786e2af4a54a5c2563c48d386a9f89",
      "parents": [
        "ce33d96ec7139db993f306ecc869da8d3ad260b2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 18:29:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 18:29:59 2009 -0700"
      },
      "message": "fix [1964315] crash in the surface.cpp while browsing\n"
    },
    {
      "commit": "ec0f1f6720cd7ecffab54b0dfc2553b55a38e50f",
      "tree": "58c51e2660462c6573f8a18e47b41f2460d5d1ea",
      "parents": [
        "98b34b3fffe50e8e4e62d76631c79edaa0b28b70"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jul 12 23:11:20 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 15:14:23 2009 -0700"
      },
      "message": "implement Mutex and Condition with pthread instead of calling futex directly.\n\ninternally pthread uses futex. the implementation consists of simple inlines\nthere are no implementation files anymore.\n"
    },
    {
      "commit": "5cd5d31d10b23673a39c4ce1a6b447b30935153c",
      "tree": "4ceabcffb2911bf4371ae4f2db5879d82978d3af",
      "parents": [
        "0918b5016e3d93313b673c51b426f3be91d6ef7b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 10 17:00:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 10 17:00:00 2009 -0700"
      },
      "message": "fix [1967226] Donut orientation animation (dimming and blur) is slower than Cupcake\n"
    }
  ],
  "next": "e0528ba71b6a1bbf6691f70b1afb87d5a1c56ae5"
}
