)]}'
{
  "log": [
    {
      "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": "8a7c940effda8651e205eab62334d4e58b1eaeb5",
      "tree": "192aef7ba926c8a4215f95e37d5e3d5579aab3b4",
      "parents": [
        "335c4e6cb2094c7cbd6039e0c7915702b69e7657"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Dec 02 10:00:00 2011 -0800"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Dec 02 10:03:25 2011 -0800"
      },
      "message": "SurfaceFlinger: fix layer removal race condition\n\nLayer::lockPageFlip() and layer::onRemove() could be called on\ndifferent threads and race such that lockPageFlip() successfully\ncalled mSurfaceTexture-\u003eupdateTexImage() but then gets NULL back from\nmSurfaceTexture-\u003egetCurrentBuffer(), leading to a crash.\n\nThis change moves Layer::onRemove() calls to\nSurfaceFlinger::commitTransaction() so they happen after the Layer is\ndone being drawn from and only happen on the main surfaceflinger\nthread.\n\nChange-Id: I4b550caadff4cc1878d7c3bca6129193fb0c713e\n"
    },
    {
      "commit": "cadd325aff7354be23d3bccb4f53b603f1506c9f",
      "tree": "1d9621d70c04d9b89a95144c575cb640fa41462c",
      "parents": [
        "f296ee697409b4b55bef17d534edbc24a4619f0f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 17:55:46 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 29 18:00:35 2011 -0800"
      },
      "message": "add a way to access the version string of the h/w implementation of EGL\n\nwe use a hidden egl extension. the version string is printed\nin SF\u0027s dumpsys log.\n\nChange-Id: I123eb4bde6de462bb2404c67b74d6d6219a48d6a\n"
    },
    {
      "commit": "a06c06b9c079f98538cfbd1c06123383a0e38e32",
      "tree": "d4208de7814c974ace15cc66462dab9a1650ca60",
      "parents": [
        "7f1c94e198e051bf481fd2d286c7b33d00664f9d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 07 21:58:03 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 07 21:58:03 2011 -0800"
      },
      "message": "Fix an issue where we could wait for a non-existing transaction\n\nThis fixes the issue:\n\"Call not sent\" dialog takes too long to dismiss after hitting OK\"\n\nNote: the system would recover after a 5 second timeout.\n\nBug: 5534520\nChange-Id: Ifa37e594b50581f498479a5858672441b3d7dd87\n"
    },
    {
      "commit": "e65beaabe4be554683417839594dd41b6c979cbb",
      "tree": "bc792e170282d06c470f56d311fc085b9296dc10",
      "parents": [
        "515c6b44d57b829792267594a355cd2831582197"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Nov 01 14:39:06 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 04 15:15:32 2011 -0700"
      },
      "message": "Fix rotation displays frame N-1 briefly while rotating\n\nThe ScreenShot layer is now created hidden. The screenshot itself\nis aquired during the transaction when the layer is made visible.\nThis guarantees the screenshot and the layer happen atomically\nwith respect to screen updates.\n\nBug: 5534521\nChange-Id: Ida23e1f13d5716ec83b78a15712e0646d6cf8729\n"
    },
    {
      "commit": "01d650ed424fa07e864ee11d63f3982a0b266fe6",
      "tree": "2dca671f62cee8b0d3c69527f11f321f651a2a06",
      "parents": [
        "08d0f6420ac439265e9b4086c931173b44409c51"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 26 15:11:59 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 26 15:11:59 2011 -0700"
      },
      "message": "fix Corrupted graphics while playing You Tube on orientation change\n\nBug: 5432124\nChange-Id: If948b9797b1ec6fff80ca5ea94508abcaced9f31\n"
    },
    {
      "commit": "9ec98cd134a3d698bc3ee7a62c02c7818e8b02af",
      "tree": "a8fcae858bb1e3ede31bd25c45b325ab36af62e7",
      "parents": [
        "1625b2af03640e810230c09953f6fbc381fb50b9",
        "aa938c8d9c0e71c9b556657cb33794210ce6ebf8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 21 16:00:00 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 21 16:00:00 2011 -0700"
      },
      "message": "am aa938c8d: Merge \"mDirtyRegion is single threaded, but could be accessed from a hwc thread\" into ics-mr0\n\n* commit \u0027aa938c8d9c0e71c9b556657cb33794210ce6ebf8\u0027:\n  mDirtyRegion is single threaded, but could be accessed from a hwc thread\n"
    },
    {
      "commit": "6497eabf0eaba7eb239431043b32365fb0daa7a1",
      "tree": "a43723253c7dad1fa8cb574239815ff505ee901d",
      "parents": [
        "8bf89f305eb3a2010b1a63048a4aa18ccbc42e78"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 21 15:18:28 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 21 15:41:01 2011 -0700"
      },
      "message": "mDirtyRegion is single threaded, but could be accessed from a hwc thread\n\nWe now have mInvalidateRegion which holds the region to invalidate, it\ncan be set from any thread as long as mInvalidateLock is held. We use\nfine-grained locking here because mInvalidateRegion can be set from anywhere,\nin particular frmo HWC callbacks.\n\nBug: 5466774\nChange-Id: Iafca20aa3f5b25a87755e65bde7b769aa8f997bc\n"
    },
    {
      "commit": "10b4503f2b3c3ad365a7adc73095a3280fc6bdfb",
      "tree": "f4c7ec9f36e2381549bca86b48b5104fe36e1e96",
      "parents": [
        "dd579c3e9272bbb348cc368e27e9adf64bb3f9ad",
        "16bece04bdbac9af5228436f70267ec5763315de"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 20 17:48:02 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 20 17:48:02 2011 -0700"
      },
      "message": "am 16bece04: Merge \"added dpi and refresh rate info in SF\\\u0027s dumpsys\" into ics-mr0\n\n* commit \u002716bece04bdbac9af5228436f70267ec5763315de\u0027:\n  added dpi and refresh rate info in SF\u0027s dumpsys\n"
    },
    {
      "commit": "abf88bead4e15a316753c878736dc73475a2310a",
      "tree": "c831c92dd3a3cd3c87db81ba76d7abea7942e97a",
      "parents": [
        "d2cd1f722421c33e88df92d036663f30b316fa3f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 20 17:22:38 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 20 17:22:38 2011 -0700"
      },
      "message": "added dpi and refresh rate info in SF\u0027s dumpsys\n\nChange-Id: I2327248eb1993689367e3daeaccba74c172dfceb\n"
    },
    {
      "commit": "2696d0520f9b928264caa5f98c2e6b1e749f9a11",
      "tree": "f47181e115c3ba1cda5c88d75beb84ba9cd7e96c",
      "parents": [
        "3254774b923378116cc7f9706431bd56f08bdd38",
        "70ac412b2fe7be2507189a9fdfb30c43b36d56ac"
      ],
      "author": {
        "name": "Dave Burke",
        "email": "daveburke@google.com",
        "time": "Tue Oct 18 23:00:08 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 18 23:00:08 2011 -0700"
      },
      "message": "am 70ac412b: Merge \"Add a LayerScreenshot\" into ics-mr0\n\n* commit \u002770ac412b2fe7be2507189a9fdfb30c43b36d56ac\u0027:\n  Add a LayerScreenshot\n"
    },
    {
      "commit": "960a0b4813a9099d2c96a54b11920d8bf6ba87d3",
      "tree": "46eb480f95ac20f54c11a6efc2782b2b25a4abd5",
      "parents": [
        "43d109c2c8a278c4d2a316d70a929f961837da8f",
        "f7613743f29f38cbbaf4ae09996c380845a17daf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 18 20:24:23 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 18 20:24:23 2011 -0700"
      },
      "message": "am f7613743: Merge \"Don\\\u0027t call hwc set() if there is nothing new to do\" into ics-mr0\n\n* commit \u0027f7613743f29f38cbbaf4ae09996c380845a17daf\u0027:\n  Don\u0027t call hwc set() if there is nothing new to do\n"
    },
    {
      "commit": "43d109c2c8a278c4d2a316d70a929f961837da8f",
      "tree": "8943d9713544a130157817b742325862b8c7b3ec",
      "parents": [
        "a6f4fb1fbbaf6cb13ad6b813a4cecbc28ba02776",
        "23bf250522b7dff9acd14c5900b66b1df9c76745"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 18 20:24:21 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Oct 18 20:24:21 2011 -0700"
      },
      "message": "am 23bf2505: Merge \"Make sure set GL state properly\" into ics-mr0\n\n* commit \u002723bf250522b7dff9acd14c5900b66b1df9c76745\u0027:\n  Make sure set GL state properly\n"
    },
    {
      "commit": "0ab84ef507f23505a72798fbe25cf4bb2c507ea3",
      "tree": "ea360721418d5b13c376c4f2bcbb4066ebb65f93",
      "parents": [
        "526f0a0e158cf46c244edc57624c15ebce26c71f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 13 16:02:48 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 18 20:21:47 2011 -0700"
      },
      "message": "Add a LayerScreenshot\n\nA LayerScreenshot is a special type of layer that contains a screenshot of\nthe screen acquired when its created. It works just like LayerDim.\n\nMake sure to call compositionComplete() after rendering into a FBO.\n\nBug: 5446982, 5467587, 5466259\nChange-Id: I5d8a1b4c327f9973d950cd4f4c0bca7f62825cd4\n"
    },
    {
      "commit": "0d0fba4587df36846baa80463490befdcef38e98",
      "tree": "8f68cf2a3ea1fc88cfaca4eb4119b7a30dd50b47",
      "parents": [
        "9044ef05d542a4f99b4be7ecefbe5e676bd3ea7f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 18 17:36:28 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 18 17:39:09 2011 -0700"
      },
      "message": "Don\u0027t call hwc set() if there is nothing new to do\n\nthere was situations where SF\u0027s main loop would run (as if there was\nan invalidate), but the dirty region was empty (so no new buffers\nwere retired). In this case we return early and don\u0027t swap, which\nwould cause drawing artifacts.\n\nBug: 5476838\nChange-Id: Id3b7bf4b7aabec7919c50d9278eb2165973a4c3d\n"
    },
    {
      "commit": "9044ef05d542a4f99b4be7ecefbe5e676bd3ea7f",
      "tree": "bdd0b1be4d282566ab3232943f15a9ed2dc3ec8a",
      "parents": [
        "f522e095e69406a5c6039b406237e9b30781a355"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 18 14:49:27 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 18 15:32:57 2011 -0700"
      },
      "message": "Make sure set GL state properly\n\nwhen taking a screenshot, in particular, we could end up\nwith stale GL state when drawing LayerDim which resulted\nin incortect rendering.\n\nBug: 5467587\nChange-Id: Id9fbed2843481d31063620f3662b364c7e3ac781\n"
    },
    {
      "commit": "a3dca6fdaacf9ffea4a844848a53c1adeb089897",
      "tree": "584269bf3494ddddfbbacfb57a6a6e43225fe144",
      "parents": [
        "f7ae86f61ba7b326a33e53c3bbb87ebf212f543d",
        "840b8a678537519c27ddf2f818494eaa20a135d4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 17 11:32:19 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 17 11:32:19 2011 -0700"
      },
      "message": "am 840b8a67: Revert \"Add a LayerScreenshot\"\n\n* commit \u0027840b8a678537519c27ddf2f818494eaa20a135d4\u0027:\n  Revert \"Add a LayerScreenshot\"\n"
    },
    {
      "commit": "f7ae86f61ba7b326a33e53c3bbb87ebf212f543d",
      "tree": "7c6e65d5aa47fe3049bf514c52a5c2bdf78fcd00",
      "parents": [
        "1c8a6bf3b21c4cfddf8d37cf7cd9fb30008a7911",
        "4fb6416e3a21031a88921a784ae62b13d8a1a39f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 17 11:32:16 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 17 11:32:16 2011 -0700"
      },
      "message": "am 4fb6416e: Merge \"we need to guarantee that h/w comp set() is called when a buffer has been retired\" into ics-mr0\n\n* commit \u00274fb6416e3a21031a88921a784ae62b13d8a1a39f\u0027:\n  we need to guarantee that h/w comp set() is called when a buffer has been retired\n"
    },
    {
      "commit": "f21dd1eabe5bf4da0dc0d9c23144aa997c05a56d",
      "tree": "c964eebbf3c2ea6c50532d57fd895989956f33a7",
      "parents": [
        "c831f6c9799e13d7fde167abfa9c03eb5ab0827c",
        "7f7362c02bcde8750e24781f5c7199f9551301c5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 11:32:08 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 17 11:32:08 2011 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of ssh://android-git:29418/platform/frameworks/base\n"
    },
    {
      "commit": "840b8a678537519c27ddf2f818494eaa20a135d4",
      "tree": "f3b32ab3ba51f342b5b9d6e37dbce835739dd4a0",
      "parents": [
        "4fb6416e3a21031a88921a784ae62b13d8a1a39f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 16 23:54:25 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 16 23:54:25 2011 -0700"
      },
      "message": "Revert \"Add a LayerScreenshot\"\n\nThis reverts commit d6809f40cf61203573ec5dbc437f695cd132cc18.\n"
    },
    {
      "commit": "e757a87ff15668749e2ecbd572c69f1c24e28535",
      "tree": "e3ef5528cc805e35c2be18c8efe8beb5afade588",
      "parents": [
        "bd9d2bcdebfa66a0f71fa67aa256dcae4ccd93da"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 16 18:46:35 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Oct 16 18:59:38 2011 -0700"
      },
      "message": "we need to guarantee that h/w comp set() is called when a buffer has been retired\n\nremoved a test that could violate this guarantee. note that we\nhave no proof tha this ever happened, but consequences could be\nhard lock-ups.\n\nthe code here was intended to track the region to update for displays\nthat can do partial update. the logic discarded the update entirely\nif that region was empty. instead we just redraw the whole thing\n(note that we should never be there with an empty region and retired\nbuffers though).\n\nBug: 5466259\n\nChange-Id: I91ccab3b1a599e729e438eb833939e2236da6854\n"
    },
    {
      "commit": "de14ecaebcb958f542f50cff08109926aad2c685",
      "tree": "5534cd6e9505a6b544e9abc1a93952449ea16f8e",
      "parents": [
        "4f1924380cff7424e23beb82b1b7d448941e2441"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 14 16:44:08 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 14 16:44:08 2011 -0700"
      },
      "message": "SurfaceFlinger: Remove display freezing code\n\nThis change removes the dead code from SurfaceFlinger that resulted from\ndisabling support for freezing the display.\n\nChange-Id: I4e5ff00c94b4c7a79af2f65c9850c135210068ed\n"
    },
    {
      "commit": "122aa6bae9f72015e6d50e78d4d47a95e05d3f49",
      "tree": "363131575744911fd326f10eaf30c4e0913014e0",
      "parents": [
        "708fd1a5f90483153a0ec43c8f5588141acaba0e"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Oct 12 17:39:00 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 14 16:11:51 2011 -0700"
      },
      "message": "SurfaceFlinger: make sync transactions explicit\n\nThis change enables a layer or orientation update transaction sent to\nSurfaceFlinger to explicitly request a synchronous transaction.\n\nChange-Id: I97cbba610c13679849f66114b216fa6dbf12f2a9\n"
    },
    {
      "commit": "d6809f40cf61203573ec5dbc437f695cd132cc18",
      "tree": "f7c0278119e2264719eb13d66756fc39df4b35df",
      "parents": [
        "22dad40d3e8ce54a00f337ea06b9b0bbfbd3fd6b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 13 16:02:48 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 14 14:32:48 2011 -0700"
      },
      "message": "Add a LayerScreenshot\n\nA LayerScreenshot is a special type of layer that contains a screenshot of\nthe screen acquired when its created. It works just like LayerDim.\n\nBug: 5446982\nChange-Id: I7814aff2380e7e146937f2b641907be2a30c76cc\n"
    },
    {
      "commit": "e2909e121c45d58fe587849b1474c80745fcd2b9",
      "tree": "00ec207d638a9815966e4d7f2c4808dcdd28d9b6",
      "parents": [
        "99f36683a4f2c218d52922ae7c2a0c0b3f2890ed"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Oct 10 15:48:06 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Oct 11 13:34:01 2011 -0700"
      },
      "message": "SurfaceFlinger: update orientation via transactions\n\nThis change merges the ISurfaceComposer::setOrientation functionality\ninto ISurfaceComposer::setTransactionState.  It enables the window\nmanager to atomically update both the display orientation and the\nposition and size of the windows in a single transaction with\nSurfaceFlinger.\n\nBug: 5439574\nChange-Id: I18a8ccc564d7d760ef8afb2d015ccdb7a7963900\n"
    },
    {
      "commit": "919139247ccf5ade7c24ec1a9499a377be5498c2",
      "tree": "aca54f8ec378483be0d9a842261b2f4f1313c4bc",
      "parents": [
        "b946a56b696674f6d6f399f68df38ec18adebe87"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 10 22:18:55 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 10 22:18:55 2011 -0700"
      },
      "message": "fix an issue where the screen could stay off\n\nthis would happen when toggling on/off/on very fast, the screen\ncould stay black (while the panel is on).\n\nBug: 5429724\nChange-Id: Ic8aa6aff066e6267923c0d47ef65e314e7bb6d41\n"
    },
    {
      "commit": "b946a56b696674f6d6f399f68df38ec18adebe87",
      "tree": "9fd734eabf3de7708cc0e60dd4dc54ec90d2830b",
      "parents": [
        "9e076a61e5daacd4c846b8dc362d89f053054703"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 10 19:02:07 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 10 19:02:07 2011 -0700"
      },
      "message": "Fix screen off animation when in landscape\n\nChange-Id: I4bc5b12d7a64a4bf8b9a851594be4d60b790d1ed\n"
    },
    {
      "commit": "830d083bf75f1dfe3753f9565f0c90b1dbcc264f",
      "tree": "d9c664db2e4ff4fe849347e8680e774066ef75fb",
      "parents": [
        "ba8ecd206cc6f175767f952d380c88f70ece04cf"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 07 14:51:16 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Oct 07 17:53:37 2011 -0700"
      },
      "message": "SurfaceFlinger: screenshots w/ protected buffers\n\nThis change modifies SurfaceFlinger\u0027s screenshot behavior when a layer\nwith a protected buffer is visible.  The previous behavior was to simply\nfail the screenshot.  The new behavior is to render the screenshot using\na placeholder texture where the protected buffer would have been.\n\nChange-Id: I5e50cb2f3b31b2ea81cfe291c9b4a42e9ee71874\n"
    },
    {
      "commit": "0c92e4d7474be3acf08038073d0e3b26ea643884",
      "tree": "49bd2fd08e0ff4d72c28ac7dfb305b62d68ac128",
      "parents": [
        "9f12c8b47bc5d7ba12de90df78c026d93da5231d",
        "9fe96541c349f87caae10f3c94ed30e8153b15e5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 22 21:01:21 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 22 21:01:21 2011 -0700"
      },
      "message": "Merge \"don\u0027t clear the framebuffer when the framebuffer is not used\""
    },
    {
      "commit": "9fe96541c349f87caae10f3c94ed30e8153b15e5",
      "tree": "902114517145c1e8e605014b248aa6e76f3fc4c8",
      "parents": [
        "c4f5d5a0dfb9adc3184eac75fc2c53a7df9e324a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 22 20:57:04 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 22 20:57:04 2011 -0700"
      },
      "message": "don\u0027t clear the framebuffer when the framebuffer is not used\n\nwhen areas of the FB are undefined (transparent windows on top of\nnothing), we clear those areas before composition.\nhowever, it makes no sense to do this when the FB is not in use\n(case where hwc handles all layers)\n\nBug: 5360529\nChange-Id: If51bb669307e8419bbe1f3a89d1c88e0ec1f216c\n"
    },
    {
      "commit": "01a98ddbdfbaf1f0d2bc602537e6e314364902a3",
      "tree": "ce904db3ee0772e0e2a35882a6cf86c7b9fcd84e",
      "parents": [
        "04ef5b8dd7262ee90b56df9c992f103695d0a21c"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Sep 20 15:08:29 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Wed Sep 21 19:26:15 2011 -0700"
      },
      "message": "Handle orientation changes more systematically.\nBug: 4981385\n\nSimplify the orientation changing code path in the\nWindowManager.  Instead of the policy calling setRotation()\nwhen the sensor determined orientation changes, it calls\nupdateRotation(), which figures everything out.  For the most\npart, the rotation actually passed to setRotation() was\nmore or less ignored and just added confusion, particularly\nwhen handling deferred orientation changes.\n\nEnsure that 180 degree rotations are disallowed even when\nthe application specifies SCREEN_ORIENTATION_SENSOR_*.\nThese rotations are only enabled when docked upside-down for\nsome reason or when the application specifies\nSCREEN_ORIENTATION_FULL_SENSOR.\n\nEnsure that special modes like HDMI connected, lid switch,\ndock and rotation lock all cause the sensor to be ignored\neven when the application asks for sensor-based orientation\nchanges.  The sensor is not relevant in these modes because\nsome external factor (or the user) is determining the\npreferred rotation.\n\nCurrently, applications can still override the preferred\nrotation even when there are special modes in play that\nmight say otherwise.  We could tweak this so that some\nspecial modes trump application choices completely\n(resulting in a letter-boxed application, perhaps).\nI tested this sort of tweak (not included in the patch)\nand it seems to work fine, including transitions between\napplications with varying orientation.\n\nDelete dead code related to animFlags.\n\nHandle pausing/resuming orientation changes more precisely.\nEnsure that a deferred orientation change is performed when\na drag completes, even if endDragLw() is not called because the\ndrag was aborted before the drop happened.  We pause\nthe orientation change in register() and resume in unregister()\nbecause those methods appear to always be called as needed.\n\nChange-Id: If0a31de3d057251e581fdee64819f2b19e676e9a\n"
    },
    {
      "commit": "88cde07df05c275da4e6d5746d79847eea723855",
      "tree": "e734ad7c273339d358b566b5377a91c0461aceca",
      "parents": [
        "d0f2f0d46114d4858cd1d3d5f6cff4f245f104b5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 20 17:21:56 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 20 17:53:33 2011 -0700"
      },
      "message": "fix transition from full overlays to fb\n\nwe need to clear the whole framebuffer in that situation because\nwe can\u0027t trust the content of the FB when partial (fb preserving)\nupdates are used.\n\nBug: 5318492\n\nChange-Id: I3f0e01b0fb665a34e44d88ad9f0f54a5d990060b\n"
    },
    {
      "commit": "d0f2f0d46114d4858cd1d3d5f6cff4f245f104b5",
      "tree": "1e30a7038634f3a171216ac03a217ee6fcb7799c",
      "parents": [
        "880ac7a86501e72428b52228cc4b5003e866f5a9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 20 17:22:44 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 20 17:53:33 2011 -0700"
      },
      "message": "rename mInvalidRegion to mSwapRegion\n\nChange-Id: I946cbc782c0c84645843ea44c3d8b04a0a2fe658\n"
    },
    {
      "commit": "880ac7a86501e72428b52228cc4b5003e866f5a9",
      "tree": "53eb85f9a2a97f14968558d0a1e1f568b04f8bf9",
      "parents": [
        "4d3e3c353306e63044d30724d5d8e8df4c146550"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 20 15:13:14 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 20 17:53:33 2011 -0700"
      },
      "message": "improve hwc dumpsys\n\nwe now log the buffer\u0027s format\n\nChange-Id: I9d3ad8018e884240a153de3baefb6331cb014d0f\n"
    },
    {
      "commit": "0a5abdb3161510d6f0c88fbe75140325620ac366",
      "tree": "b70182917c44f7b469494719c5197196f1fe7d72",
      "parents": [
        "5bd1b2794b227e25fbd7e4c919bcefc3510e0761"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 09 01:47:48 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 09 01:47:48 2011 -0700"
      },
      "message": "Fix another problem with refreshing the screen when switching to/from overlay\n\nthe previous fix was incorrect. See comment in setupHardwareComposer for\nfull explanations.\n\nChange-Id: Ib24a9af000b8f95cf7319f9272d34997064ceb6d\n"
    },
    {
      "commit": "5bd1b2794b227e25fbd7e4c919bcefc3510e0761",
      "tree": "126c836c07209df2d44cb3db4b596841a0064fe1",
      "parents": [
        "4bacc9dc674792c745f362962883a19f4a35c88c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 09 00:49:11 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 09 00:49:44 2011 -0700"
      },
      "message": "Improve SF dumpsys output wrt HWC\n\nChange-Id: Ibdb7930fa3b521bfd3f44750ed98cfd75f9a01fe\n"
    },
    {
      "commit": "4bacc9dc674792c745f362962883a19f4a35c88c",
      "tree": "13183bf0ce05fb6c5fb6890a7ba74584e5d81b7d",
      "parents": [
        "2295cc77c72d451e7a1c9ec48f120a8e73651b6d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 08 18:31:55 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 08 22:43:01 2011 -0700"
      },
      "message": "Fix an issue is SF that caused drawing artifacts when hwc changed mode\n\nwe were not redrawing and/or clearing the FB properly when\nhwc moved a layer from/to FB to/from OVERLAY.\n\nIn these cases we needed to expand the dirty region to include\nthe layer that changed mode.\n\nAlso split composeSurfaces() which was becoming quite large.\n\nChange-Id: Id6fa1acfc4ff694037fddf7efd037a4405732073\n"
    },
    {
      "commit": "7f97258ab379b3bcf14846c4eb65022d2b39f390",
      "tree": "d96acd1fcde752558dce91615b8148db45ba7f34",
      "parents": [
        "a55c369e73a8864cc34290625acd16c68956c58a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 02 12:22:39 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 02 12:22:39 2011 -0700"
      },
      "message": "fix a bug that caused the off animation to not show sometimes\n\nthis happened when the overlays were in use, since the animation\nis rendered in the FB and the FB is not used.\n\nwe now have a way to turn hwc off temporarily.\n\nChange-Id: I3385f0c25bb9cc91948e7b26e7cd31ed18c36ace\n"
    },
    {
      "commit": "ff57415bdb4590478f294f7b45805f80d2aac441",
      "tree": "7be8b438e079f1917c866b38ad440a121305f4d5",
      "parents": [
        "2523a6016a9a3d5626e041aa742e982870aecd5d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 01 18:52:12 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 01 18:56:54 2011 -0700"
      },
      "message": "Fix various flickering / artifacts\n\nthese were due to the \"preserve backbuffer\" optimization\ninterfering with hw composer. basically the screen needed\nto be redrawn in the areas that move from GL to\noverlay.\n\nBug: 5245513\nChange-Id: I9bf75c4fe905f3ef62005e52108b94edae692304\n"
    },
    {
      "commit": "ec49d8970125b3da422f93bf6f6b32ac62230a83",
      "tree": "41cda6532b3b57ab35f334b21af27c4206ed24ed",
      "parents": [
        "27bf191327cd509daf52e3ebea2385ce66545093"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 25 14:36:43 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 25 14:36:43 2011 -0700"
      },
      "message": "Fix screenshots\n\nChange-Id: If904634e64b154bbe336d5789dd1209b8ae871fb\n"
    },
    {
      "commit": "e328134b8fa4e5bfe0277a1fa55a9fbd99d27ef0",
      "tree": "0248c2bcdbd4e8cf62723ccd15f07056e83b86b0",
      "parents": [
        "bc714a357d79c2315cc665eb706b465334cb9716"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 24 17:44:41 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 24 17:44:41 2011 -0700"
      },
      "message": "Fix Recent thumbnails aren\u0027t taken when leaving an activity via notification\n\nWhen taking screenshots we need to use the full drawing state list\ninstead of the visible list.\n\nBug: 5186823\nChange-Id: I214ee0203aaf8e2c038e44581f7f1ae36edf08c5\n"
    },
    {
      "commit": "2143fe05e3a1aeae641ca126e76db82d17e8b8e6",
      "tree": "fae61baf7497e29e2a57ab2ed6713ce124a7aa23",
      "parents": [
        "7f76a3cf667b95caccb3e6d3f5cf160180717340"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 23 18:03:18 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 23 21:10:35 2011 -0700"
      },
      "message": "Add a debug option to turn the \"transformation hint\" off\n\ntransformation hint is disabled with:\n\n   adb shell service call SurfaceFlinger 1009 i32 1\n\nChange-Id: I9aafe6f280f88ce41569ed69a06dc522b10e3a88\n"
    },
    {
      "commit": "7f76a3cf667b95caccb3e6d3f5cf160180717340",
      "tree": "dd0413c084d7d69cfd617cdd0b72edbbc3d998de",
      "parents": [
        "67403e096e6f59b7cd18a90d0d3f5c3d17c31407"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 22 21:44:41 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 22 21:44:41 2011 -0700"
      },
      "message": "fix \"show screen update\" debug option.\n\nChange-Id: I7d8b24124768b5f7d59d3bb0b019e9baaa0dfc4f\nNOTE: from now on, this also disable the h/w composer\n"
    },
    {
      "commit": "9b8fc65b0353db3a962ab52dc556c356d556fcc1",
      "tree": "c62f12d000864f496c9ab42ff5752a376ee7c3ae",
      "parents": [
        "842d9de74f9eaaf8a7b89dbe8475faf014ddafb8"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Aug 17 18:19:00 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Aug 17 18:19:00 2011 -0700"
      },
      "message": "SurfaceTexture: fix queues-to-composer\n\nThis change fixes the NATIVE_WINDOW_QUEUES_TO_WINDOW_COMPOSER query of\nSurface and SurfaceTextureClient.  Surface now uses the inherited\nSurfaceTextureClient implementation of this query.  SurfaceTextureClient\nnow queries SurfaceFlinger to determine whether buffers that are queued\nto its ISurfaceTexture will be sent to SurfaceFlinger (as opposed to\nsome other process).\n\nChange-Id: Iff187e72f30d454229f07f896b438198978270a8\n"
    },
    {
      "commit": "93d75ec3714d829a41947a29b5c4028b282622c4",
      "tree": "6fb720692515ab11f55c4ab24ba4794fdc373ecf",
      "parents": [
        "7d8fc3c911ea8e4cd1e6531118da4f72e521a944"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 15 20:44:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 15 20:44:40 2011 -0700"
      },
      "message": "as a debug option SrufaceFlinger can now connect to DDMS\n\nthis is disabled by default. To enable:\n  setprop debug.sf.ddms 1\n\nthis debug option requires to restart SurfaceFlinger\n\nChange-Id: Ic2f8050b29911b55bcd21721648b6978700c277d\n"
    },
    {
      "commit": "91b539801833012798b1998c30440136add7e7d4",
      "tree": "737ec453d22c309e022fbe9a1506847d9dec0ecd",
      "parents": [
        "0642fed2a226c2ccc85ca1058bb875d3077a41ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 11 18:18:50 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 11 22:33:02 2011 -0700"
      },
      "message": "SurfaceFlinger doesn\u0027t rely on having a custom RefBase destructor\n\nwe just use a message to the main thread to\ndestroy our GLES state.\n"
    },
    {
      "commit": "50c24a2000c785f8be2367e1fc7938a5eda5c9e8",
      "tree": "4f6b33dae6fad115e014290b2535c0b931c9d0a1",
      "parents": [
        "f07b8a3f691be39083fb5163f9456bcfa566f93f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 20 16:46:11 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 20 16:53:13 2011 -0700"
      },
      "message": "clean-up. get rid ofunused code and members in Surface[Control].cpp\n\nChange-Id: Ia7790ae28af2c2ac99eae01c2c5044ace4a490a4\n"
    },
    {
      "commit": "ab95117be00ea8a207aaeefb4cb328db7d0f8848",
      "tree": "e8ee1cd2af962ce1a651664e1b7ee740ba4f14d3",
      "parents": [
        "4838151d181a5989d51a42e6dcbba6d66d7b5165"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 14 18:01:49 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 15 14:29:25 2011 -0700"
      },
      "message": "dump GLES strings in SF dumpsys log\n\nChange-Id: I438d511159b2bd915c84954f30574340017d4f47\n"
    },
    {
      "commit": "3a831d24e9147d737c6aaed72d84c1126c232368",
      "tree": "e4a12999afafab76b19be194ab17eb52ed89f33b",
      "parents": [
        "1861786a97209ed75010a54cca5167593dbfec21"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 07 17:30:31 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 08 14:37:06 2011 -0700"
      },
      "message": "fix screen on/off animation (again)\n\n- surfaceflinger now uses the GL-convention of\n  placing the origin in the left-bottom corner\n\n- map texture coordinates of the screen capture\n  properly\n\n- add the ability to control the animation\n  speed through a debug property\n\nBug: 4989276\n\nChange-Id: Ifb3297bb578078b47146fff666c01f85417e0d6f\n"
    },
    {
      "commit": "55aaccd7e8e3f5a4b0f4333c6bd2404eeac7bbb1",
      "tree": "6976d54969916a9a68872d2818c24475277ed8aa",
      "parents": [
        "7893c5e83c72566a049bb25f633bb7e361801342",
        "0c63ef5091def41e91a2202560c57b2f6caabfbe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 06 11:10:31 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 06 11:10:31 2011 -0700"
      },
      "message": "Merge \"don\u0027t kill surfaceflinger when system process dies\""
    },
    {
      "commit": "0c63ef5091def41e91a2202560c57b2f6caabfbe",
      "tree": "afd2477bdbd864d00fe5d7c9d8068686b6f11c61",
      "parents": [
        "23b444a2e4e808262c22fa5254db9861eb961879"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 17:08:43 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 17:09:24 2011 -0700"
      },
      "message": "don\u0027t kill surfaceflinger when system process dies\n\nChange-Id: I2d3ed87b590f9ccea3fa4af41d92911de070b315\n"
    },
    {
      "commit": "eec0f7ebac85d3d1b1151e62b2ed0f25c138d447",
      "tree": "51e127d4082b8f5aaee347fbc195b74789762450",
      "parents": [
        "23b444a2e4e808262c22fa5254db9861eb961879"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 14:53:49 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 14:53:49 2011 -0700"
      },
      "message": "return an error code with gralloc buffer allocation failures\n\nChange-Id: I471e5d37ea7a42fc8a0f93446ee3b4229da37807\n"
    },
    {
      "commit": "753db22423bedf3a2d1b1f892da230a818ab60ac",
      "tree": "fd1101b75791b2ca92cea46789cb82e01178a51e",
      "parents": [
        "ace263902e6b8437fa1135cb9242e9c1c309cdf9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 30 16:23:39 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 30 16:23:39 2011 -0700"
      },
      "message": "fix screen on/off animation, which was flipped\n\nBug: 4673549\nChange-Id: Ia9766754687b89c1ee24b2dbe918c11290ebe038\n"
    },
    {
      "commit": "439863f3b3e725b5de1cba4940a21900369961c0",
      "tree": "90ab56432c2436c3392b02ba08876c86796a36ef",
      "parents": [
        "f1bfa84ccf61cad2b6ea9f2e6a612a54a38b79bc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 28 19:09:31 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 29 15:05:41 2011 -0700"
      },
      "message": "SF transactions are now O(1) wrt IPC instead of O(N).\n\nChange-Id: I57669852cbf6aabae244ea86940a08a5a27ffc43\n"
    },
    {
      "commit": "0dd593f22352a0863223fa4ea7e37e926b99282e",
      "tree": "58d445ed41c6aea8184848490a9f47a2aa31a876",
      "parents": [
        "abb04eec06bce358826e4cb6b5f852424ece8005"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 27 16:05:52 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 27 17:42:15 2011 -0700"
      },
      "message": "PermissionCache caches permission checks\n\nThis is intended to absorb the cost of the IPC\nto the permission controller.\nCached permission checks cost about 3us, while\nfull blown ones are two orders of magnitude slower.\n\nCAVEAT: PermissionCache can only handle system\npermissions safely for now, because the cache is\nnot purged upon global permission changes.\n\nChange-Id: I8b8a5e71e191e3c01e8f792f253c379190eee62e\n"
    },
    {
      "commit": "7bb843ca0777111dae7daf8f1b0705817cf523c4",
      "tree": "10545edc3ce21f38282d5e67e5bc08ff729884b3",
      "parents": [
        "dfc7958a2eafba52db90743a4707eed1d780b63b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:20:59 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 13 15:51:35 2011 -0700"
      },
      "message": "unify SurfaceTexture and Surface\n\nAdd the concept of synchronous dequeueBuffer in SurfaceTexture\nImplement {Surface|SurfaceTextureClient}::setSwapInterval()\nAdd SurfaceTexture logging\nfix onFrameAvailable\n"
    },
    {
      "commit": "6960811d15eb66e8469330d3bc574c32c481db05",
      "tree": "54cacea2d152ffa2035a9753638994c0815e43cb",
      "parents": [
        "6db8c505398a0979853f6c166e0a8bcafd9268f8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 19 15:38:14 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 19 19:40:02 2011 -0700"
      },
      "message": "Fix a race that could cause GL commands to be executed from the wrong thread.\n\nChange-Id: Ia3d407f7bf2f5553f46cfdade70b7b0badb35beb\n"
    },
    {
      "commit": "6dcb1557efc546b74323b4367d9b7f674821e1e9",
      "tree": "5b4cdee8983139dbdf5857e55708c97570e3e373",
      "parents": [
        "e409851954f37c5411eb93565146ebb8cfd21bbd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 17:04:02 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 20:44:51 2011 -0700"
      },
      "message": "Fix a race in SurfaceFlinger that could cause layers to be leaked forever.\n\nThe transaction flags were atomically read-and-cleared to determine if\na transaction was needed, in the later case, mStateLock was taken to\nkeep the current state still during the transaction. This left a small\nwindow open, where a layer could be removed after the transaction flags\nwere checked but before the transaction was started holding the lock.\nIn that situation eTraversalNeeded would be set but only seen during the\nnext transaction cycle; however, because we\u0027re handling this transaction\n(because of another flag) it will be commited, \"loosing\" the information\nabout the layer being removed -- so when the next transaction cycle due\nto eTraversalNeeded starts, it won\u0027t notice that layers have been removed\nand won\u0027t populated the ditchedLayers array.\n\nChange-Id: Iedea9e25fee8dd98a0c5bd5ad41a20fcadf75b47\n"
    },
    {
      "commit": "5fa7ad6fa1316036819ec506205888eac5512f68",
      "tree": "9e2a6a9cb7c4dff7d9c28813cebee2f08435e396",
      "parents": [
        "939ccad344c5f32bc9e7dbfa80648c1e75cac62a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 16:21:41 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 16:21:41 2011 -0700"
      },
      "message": "Fix a race-condtion in SurfaceFlinger that could lead to a crash.\n\nClient::mLayers could be accessed from different threads.\nOn one side from Client::attachLayer() which is currently\ncalled from a binder thread; on the other side from\nClient::detachLayer() which is always called from the main\nthread.\n\nThis could lead to a corruption of Client::mLayers.\n\nWe fix this issue by adding an internal lock to Client.\n\nChange-Id: Ib1317d7750ed5030e6f577efe34b69fc10198bd3\n"
    },
    {
      "commit": "9638e5c167be321643bf3f3ee39e3fb45541fb3b",
      "tree": "ec79a54e7f44db04b4b5cc7f09ba944f6836a258",
      "parents": [
        "2a231f8435dba525c838779e0fd44710ea23cd98"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:19:32 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:26:11 2011 -0700"
      },
      "message": "Get rid of the \"pid\" parameter from createSurface\n\nChange-Id: I28635e3f803e6abe965d79998e305f54a202465d\n"
    },
    {
      "commit": "5f05f99aaedaba18c426fac287bcb18d56dbe881",
      "tree": "791dab7fb51fb0e49663e9af9f8ac9f44f9242ec",
      "parents": [
        "7797e647fc8fcd5091b9449c0044f5cb70db5b47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 08 19:10:43 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 08 19:28:04 2011 -0700"
      },
      "message": "Fix a GraphicBuffer leak in SurfaceTexture\n\nThis leak was intentional, it was there to deal with the fact that\nsome gralloc implementations don\u0027t track buffer handles with\nfile-descriptors so buffers needed to stay alive until there were\nregistered, which is not guaranteed by binder transactions.\n\nIn this new implementation, we use a small BBinder holding a\nreference to the buffer, which with tuck into the parcel. This forces\nthe reference to stay alive until the parcel is destroyed, which\nis guaranteed (by construction) to happen after the buffer is\nregistered.\n\nthis allows the public facing API to not expose the previous hack.\n\nChange-Id: I1dd6cd83679a2b7457ad628169e2851acc027143\n"
    },
    {
      "commit": "f0ff906fa427ddc3293dc061e2ee34ce39c1336e",
      "tree": "48799f91df0137807b1ab64c3877dd9bfde52cbd",
      "parents": [
        "ccf94df600f452189fcb6bad5600e1af180695ad"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 11 16:54:47 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 11 17:01:40 2011 -0800"
      },
      "message": "Fix some const-ness and comments\n\nmDrawingState doesn\u0027t need to be accessed by the\nmStateLock, because by definition it\u0027s only accessed\nfrom the main thread.\n\nSimilarily, the list of layers in the drawing state\ncannot change (ie: is const).\n\nChange-Id: I2e5da7f4d8caee7af7802b432cd45cc81c7c08b0\n"
    },
    {
      "commit": "f72606ce3ea8cb787e5c71325f08b1898e0718d9",
      "tree": "e81f8fb6a932f9660d8c65bde57fed694a18aacc",
      "parents": [
        "87e8ab372bd722c5c1a00ff5262acccee5dae5e5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Mar 09 17:05:02 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Mar 10 16:25:48 2011 -0800"
      },
      "message": "SurfaceFlinger: Respect the PROTECTED gralloc bit.\n\nThis change makes SurfaceFlinger treat layers for which the active\nbuffer has the GRALLOC_USAGE_PROTECTED bit set as if they have the\n\u0027secure\u0027 flag set.\n\nChange-Id: Ic60b6513a63e4bb92ec6ce9fd12fd39b4ba5f674\nBug: 4081304\n"
    },
    {
      "commit": "d2acedf18c9a3527f6e3dc5d578a85fdc0ad4338",
      "tree": "06a23415d1486f5d7fb3e6d64640a1977f65dd86",
      "parents": [
        "6cc2bbe5cf8c959239d35972c0acac494e5c1559"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Mar 08 12:18:54 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Mar 08 16:49:51 2011 -0800"
      },
      "message": "ANativeWindow: add queues-to-window-composer check.\n\nThis change adds a new \u0027method\u0027 to the ANativeWindow interface to check\nwhether buffers queued to the window will be sent directly to the system\nwindow compositor.\n\nChange-Id: I4d4b199e328c110b68b250029aea650f03c8724d\nBug: 3495535\n"
    },
    {
      "commit": "32ae094d87cbb35f8b31acb7b83b430db62d5925",
      "tree": "5dd87a38a1afaa31170eb4f8fa2313fd97e2cb8c",
      "parents": [
        "7c4beadf57c893f17efc0550b13498a06958f90c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 02 18:45:50 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 02 18:45:50 2011 -0800"
      },
      "message": "remove some logs\n\nChange-Id: Ia476184048ee419e19330a56dc8e6553189f6a24\n"
    },
    {
      "commit": "0dc5fdb9b2fd3b3e2ede5e9607bc21423f357a01",
      "tree": "ac13c0be9758579d467da88f8e7675daee85146a",
      "parents": [
        "710c510b36a2d260736ca6d036365b18c86b1774",
        "e630e5f49ba15005172dceeda7299569b2d2351f"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Feb 27 15:55:21 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Feb 27 15:55:21 2011 -0800"
      },
      "message": "am e630e5f4: am 919853ce: Merge \"Prevent SurfaceFlinger from using layer token 31.\" into gingerbread\n\n* commit \u0027e630e5f49ba15005172dceeda7299569b2d2351f\u0027:\n  Prevent SurfaceFlinger from using layer token 31.\n"
    },
    {
      "commit": "c86d904b71be950ad973d803d1a19c6cd13be669",
      "tree": "bff2e5ca7e0e4972dab6da13f721ab79309a2242",
      "parents": [
        "58c9d4726ebf3165b0dbbcebb1130dfc5502bfe9"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Feb 10 16:18:36 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Feb 10 16:18:36 2011 -0800"
      },
      "message": "Prevent SurfaceFlinger from using layer token 31.\n\nBug: 2964479\nChange-Id: I81e948924bff35b8b300d409f2c09f3779bcdeec\n"
    },
    {
      "commit": "6e138fb682fb84bfebff7f4ae4b88cef1996708c",
      "tree": "def24d98e6cb612cba0a486cf7d49c3587f04334",
      "parents": [
        "54b0a7f3ff0411a215e7e23f1041d414a32147b5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 02 16:05:39 2011 -0800"
      },
      "message": "[3418265] apply layer transformations to the DimLayer.\n\nwith this change DimLayers will behave just like any other layer,\nin particular they\u0027ll respect the layer transformations.\n\nChange-Id: Icb4a1275e8bca9e3deb5f57c9f9219aaa69f9877\n"
    },
    {
      "commit": "d35c6667c8233385f31aa203f486b2cb826bf6be",
      "tree": "7e565ff5bc3df082b597ecd9d8f94bbff6a374e9",
      "parents": [
        "2aaa776429f58069e25c8160a9e5b9a969f6e993"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 20:17:45 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 20:52:46 2011 -0800"
      },
      "message": "fix [3385504] Surface flinger hang when adding dim surface\n\nChange-Id: I8e0cda414bcad5854d2ca5dde8370bfd8b2e5ea4\n"
    },
    {
      "commit": "21956040a77808909ebda426fbd3cce6c8ed059f",
      "tree": "caef5eb4375780074435043e54323cd256c07dfc",
      "parents": [
        "68d3478860fecc9b8fbf256796a832a037434555"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 18 15:51:30 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:19:13 2011 -0800"
      },
      "message": "fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\n\nGenerally we never want to lock a buffer for write access if it is at\nthe \"head\" on the surfaceflinger side. The only exception (1) is when\nthe buffer is not currently in use AND there is at least one queued\nbuffer -- in which case, SurfaceFlinger will never use said buffer\nanymore, because on the next composition around, it will be able to\nretire the first queued buffer.\n\nThe logic above relies on SurfaceFlinger always retiring\nand locking a buffer before composition -- unfortunately this\ndidn\u0027t happen during a screenshot.\n\nThis could leave us in a situation where a buffer is locked by the\napplication for write, and used by SurfaceFlinger for texturing,\ncausing a hang.\n\nHere, we fix this issue by never assuming the exception (1), it was\nintended as an optimization allowing ANativeWindow::lockBuffer() to\nreturn sooner and was justified when most of SF composition was\ndone in software. The actual buffer locking is now ensured by\ngralloc. We could have handled screenshots in a similar way to\na regular composition, but it could have caused glitches on screen,\nessentially, taking a screenshot could cause to skip a frame.\n\nnow that we removed the notion of a \"inUse\" buffer in surfaceflinger\na lot of code can be simplified / removed.\n\nnoteworthy, the whole concept of \"unlockClient\" wrt. \"compositionComplete\"\nis also gone.\n"
    },
    {
      "commit": "68d3478860fecc9b8fbf256796a832a037434555",
      "tree": "1672d4b5edd7658c9a32b3bd2d933206e971a8b7",
      "parents": [
        "8aa11d82f33be8089a53feb3ba3c40fd8a33ad95"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 17:37:42 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:19:13 2011 -0800"
      },
      "message": "partially fix [3306150] HTML5 video with H/W acceleration blackout (DO NOT MERGE)\n\nWe used to guarantee that a layer in SurfaceFlinger would never be\ndestroyed before all references (to its ISurface) on the client\nside would be released. At some point, this guarantee got\nrelaxed to allow to free gralloc resources sooner. This last\nchange was incorrect, because:\n- in implementations with reference-counting the gralloc resources\nwouldn\u0027t be released anyways, until all the mapping were gone\n- in implementations without ref counting, the client side\nwould most likely crash or do something bad\n- it also caused the SharedBufferStack slot to be reallocated\nto another surface, which could be problematic if the client\ncontinued to use the surface after the window manager destroyed it.\n\nSo, we essentially reinstate the guarantee that layers won\u0027t be\ndestroyed until after all references to their ISurface are\nreleased.\n\nNOTE: This doesn\u0027t entirely fix 3306150 because there is another\nproblem there where the Browser continues to use a surface after it\nhas been destroyed.\n\nalso improve SurfaceFlinger \u0027dumpsys\u0027 log\n\nlist the purgatory, which shows windows that have been closed,\nbut for which the client still has references.\n"
    },
    {
      "commit": "8aa11d82f33be8089a53feb3ba3c40fd8a33ad95",
      "tree": "c29f00cc241a54b4f1eba03cdf23aab6982057a7",
      "parents": [
        "84c6f5a44c431a36a9e4395a7e23ab26480ba689"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 16 18:46:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:18:58 2011 -0800"
      },
      "message": "fix a small bug that caused screenshot to show garbage in some cases (DO NOT MERGE)\n\nwe were not clearing the screen entirely, which caused garbage when\nthe screen wasn\u0027t entirely covered by windows.\n\nChange-Id: Ia7aa13c36a8a314e0e8427d419b16b9aa2165ddf\n"
    },
    {
      "commit": "84c6f5a44c431a36a9e4395a7e23ab26480ba689",
      "tree": "659eacdd03cc6e2b5d46c43db2333a4289faef43",
      "parents": [
        "728d849fc92bbf9b3bfd8c3903344ff58f3d5d06"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 15 14:41:59 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:18:29 2011 -0800"
      },
      "message": "workaround [3201922] display not on: log full of gralloc errors (DO NOT MERGE)\n\nwe make sure to call compositionComplete after everytime we do\ncomposition with the GPU (even for the screenshot case), which is\nwhere the buffer locks are released.\n\nChange-Id: I450430d1e4d1ee9ce1023970642378c42cdcfa4c\n"
    },
    {
      "commit": "3431f47b47436210d441befb39f2d011b00bcdf2",
      "tree": "188e862b987b578b21d1f1b40a4301c2761a1080",
      "parents": [
        "d2d31dadb02b45bf938761bfb6264dc599d81b3d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 24 18:13:54 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 24 18:13:54 2011 -0800"
      },
      "message": "tone down the log spew regarding taking screenshots.\n\nChange-Id: I673806bda23eba6aab25f7505b7e0170afc9920b\n"
    },
    {
      "commit": "35e4a497f4463adb78d35a57f22847bec0eaab1a",
      "tree": "29e7cc807bdc1df38bbc9809533a75bbd37dfc5b",
      "parents": [
        "a423d868009b9961597365ce7f190aef23f4b1cc",
        "45491690d8f21d2648cad9247115720fa90046b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 12:25:33 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 20 12:25:33 2011 -0800"
      },
      "message": "Merge \"fix [3369743] SurfaceFlinger reads hardware composer hints before calling hwc.prepare()\" into honeycomb"
    },
    {
      "commit": "1d4549ab0312319a79fb37068a3fc63bbb0a3adc",
      "tree": "32a0c3dcb3fcae1354342ad938abb6a7d9c747e4",
      "parents": [
        "ed58d8ed8a50cbd8c5e01c4e51bcbbe4341d1dfd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 18:02:20 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 12:10:11 2011 -0800"
      },
      "message": "clean-up unneeded code\n\nnow that we removed the notion of a \"inUse\" buffer in surfaceflinger\na lot of code can be simplified / removed.\n\nnoteworthy, the whole concept of \"unlockClient\" wrt. \"compositionComplete\"\nis also gone.\n\nChange-Id: I210413d4c8c0998dae05c8620ebfc895d3e6233d\n"
    },
    {
      "commit": "06a61e2fa830fcd66c12741a52cc5d9b4b214f94",
      "tree": "896f71ee0d07174a573819a79ac9e0f15202ad1c",
      "parents": [
        "7a97ad421b50208dc2f484cc23fa3bb29331a713"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 16:15:53 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 16:15:53 2011 -0800"
      },
      "message": "improve SurfaceFlinger \u0027dumpsys\u0027 log\n\nlist the purgatory, which shows windows that have been closed,\nbut for which the client still has references.\n\nChange-Id: I5168bb88cb328d5d77d71d0871deb9190f493126\n"
    },
    {
      "commit": "45491690d8f21d2648cad9247115720fa90046b4",
      "tree": "7cfc78b00c20fc46fde954a5b57e3d64ab5176a0",
      "parents": [
        "7a97ad421b50208dc2f484cc23fa3bb29331a713"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 15:24:23 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 15:24:23 2011 -0800"
      },
      "message": "fix [3369743] SurfaceFlinger reads hardware composer hints before calling hwc.prepare()\n\nChange-Id: If3277c7b9d4cb8ef20d1706155fac7b87e64fb20\n"
    },
    {
      "commit": "cd2cfb6a15975af02a02c34783480eb858ee2928",
      "tree": "19ca52a6b7171352ab0b4df270878fb96dd2d846",
      "parents": [
        "6e72ff9082f82885d738f637d40bfe43d267107a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jan 16 14:05:02 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jan 16 17:25:26 2011 -0800"
      },
      "message": "Add logs when taking a screenshot to help tracking issue 3361121\n\nChange-Id: I61d1e072ebe7061ee1d7255f6121b684e2923d1b\n"
    },
    {
      "commit": "fd7a411aef7e1c7722456de09b3f3234bbb914d4",
      "tree": "00182b3b119aa9127062a36231da6f44c0aec40f",
      "parents": [
        "a7393dd66f0127c8acdd5f8928b0c2d0de602275",
        "f4dfe1bee6223add052b6f0ebc4cdb1f46606acc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 19:27:38 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 19:27:38 2011 -0800"
      },
      "message": "Merge \"partially fix [3306150] HTML5 video with H/W acceleration blackout\" into honeycomb"
    },
    {
      "commit": "f4dfe1bee6223add052b6f0ebc4cdb1f46606acc",
      "tree": "217a457de0e9f2df96b5c733b92c972d554552df",
      "parents": [
        "853548287ffe4eb85d1bd10669270292336d137a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 17:37:42 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 18:19:02 2011 -0800"
      },
      "message": "partially fix [3306150] HTML5 video with H/W acceleration blackout\n\nWe used to guarantee that a layer in SurfaceFlinger would never be\ndestroyed before all references (to its ISurface) on the client\nside would be released. At some point, this guarantee got\nrelaxed to allow to free gralloc resources sooner. This last\nchange was incorrect, because:\n- in implementations with reference-counting the gralloc resources\nwouldn\u0027t be released anyways, until all the mapping were gone\n- in implementations without ref counting, the client side\nwould most likely crash or do something bad\n- it also caused the SharedBufferStack slot to be reallocated\nto another surface, which could be problematic if the client\ncontinued to use the surface after the window manager destroyed it.\n\nSo, we essentially reinstate the guarantee that layers won\u0027t be\ndestroyed until after all references to their ISurface are\nreleased.\n\nNOTE: This doesn\u0027t entirely fix 3306150 because there is another\nproblem there where the Browser continues to use a surface after it\nhas been destroyed.\n\nChange-Id: I305c830dd722b30a6d53cbf3a9c714fd3cf7eb06\n"
    },
    {
      "commit": "010719c2fff4ab40757984f29d7755ff7f79e3de",
      "tree": "678676360e0babeeb897e5db890b48098f60d8cd",
      "parents": [
        "05db1af9bb42b4b2e668aba2dfcd61878a235764",
        "fb4dcb1a679000c029bb8e76fea7066d002235d5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 10:54:47 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 10:54:47 2011 -0800"
      },
      "message": "Merge \"fix [3312683] Camera mirroring problem after switching from back to front camera\" into honeycomb"
    },
    {
      "commit": "fb4dcb1a679000c029bb8e76fea7066d002235d5",
      "tree": "a049012cec990c6fdf23f59a53c688f9859fce25",
      "parents": [
        "853548287ffe4eb85d1bd10669270292336d137a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 13 17:53:01 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 13 17:53:01 2011 -0800"
      },
      "message": "fix [3312683] Camera mirroring problem after switching from back to front camera\n\nthe crop as well as buffer orientation can change at every frame, when that happens\nwe need to reset the hwc HAL (ie: set the GEOMETRY_CHANGED flag).\ncurrently we achieve this by taking the same code path than an actual geometry change\nwhich is a bit more heavy than necessary.\n\nChange-Id: I751f9ed1eeec0c27db7df2e77d5d17c6bcc17a24\n"
    },
    {
      "commit": "f7acf162f8d682c6ebc9af41ca76795b79509193",
      "tree": "b2f5246744f5a8c15f841f6a45da4a53679eff67",
      "parents": [
        "e8d0e8a77690eca02f15b0d5e628be7cad5d0133"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jan 12 18:30:40 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 13 12:19:04 2011 -0800"
      },
      "message": "Fix remote GraphicBuffer allocation in SurfaceFlinger.\n\nThis change fixes a horrible hack that I did to allow application\nprocesses to create GraphicBuffer objects by making a binder call to\nSurfaceFlinger.  This change introduces a new binder interface\nspecifically for doing this, and does it in such a way that\nSurfaceFlinger will maintain a reference to the buffers until the app is\ndone with them.\n\nChange-Id: Icb240397c6c206d7f69124c1497a829f051cb49b\n"
    },
    {
      "commit": "0a53d5c81b5553d6063b8133492275ce88186978",
      "tree": "dc6573bc4f7011bc5e7be5e6a976f684e52ac061",
      "parents": [
        "42edf0f8cf8ca85dd5010558ff399e2c9a4c779c"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Dec 20 11:21:07 2010 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Jan 06 13:12:35 2011 -0800"
      },
      "message": "Add the ISurfaceComposer::createGraphicBuffer IPC.\n\nThis change adds a new binder method to the ISurfaceComposer interface.\nThis IPC is intended to allow SurfaceFlinger clients to allocate gralloc\nbuffers using SurfaceFlinger as a proxy to gralloc.\n\nChange-Id: Ide9fc283aec5da6268ba62cfed0c3319a50b640d\n"
    },
    {
      "commit": "1c4e4fc0490c6f07111365cfe21116c31254d5ff",
      "tree": "5e5eaf4a63549a4bd7c17b7b1cfeca1fd8db6e6d",
      "parents": [
        "b8027d87d87fbf24a6091ef183e519157876df41"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 16 18:46:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 16 18:47:29 2010 -0800"
      },
      "message": "fix a small bug that caused screenshot to show garbage in some cases\n\nwe were not clearing the screen entirely, which caused garbage when\nthe screen wasn\u0027t entirely covered by windows.\n\nChange-Id: Ie9ab9b94eabfa6cafddf45bb14bc733bdc8d35c0\n"
    },
    {
      "commit": "a6b8c1c3bd1d9b84bbeb1820c0239742f50d3edb",
      "tree": "2553c98fb2eeb2559799a47a39857a4fe1416fc9",
      "parents": [
        "9d6fa8693e8828ad62b87c15e0b5d8c74e5993ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 15 14:41:59 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 15 15:54:57 2010 -0800"
      },
      "message": "workaround [3201922] display not on: log full of gralloc errors\n\nwhile we\u0027re waiting for the real fix in the gralloc/gpu driver,\nthis workaround should resolve the issue.\n\nwe make sure to call compositionComplete after everytime we do\ncomposition with the GPU (even for the screenshot case), which is\nwhere the buffer locks are released.\n\nChange-Id: I3cb5ad67d48c81a23100172bab77e86a70e29152\n"
    },
    {
      "commit": "04a709e459db6f15c04b00bcd3b030c90ca52949",
      "tree": "1a5ca2de0014263c25d0410c589783058151afdc",
      "parents": [
        "e56092d5c9e2da914ffe2faa6699df9f70f9d43c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 14 18:38:36 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 14 18:38:36 2010 -0800"
      },
      "message": "fix debug.sf.showbackground\n\nChange-Id: Ie4eeca006ad6d8030900d8cb0029e4d1c22474fb\n"
    },
    {
      "commit": "3dd25a6bf71bd535bf9dbbe16234229ff45414a0",
      "tree": "16194108cb3fdc84bd42631d81eaf1a518cfecb9",
      "parents": [
        "957d85ec046651a8b0549b62021079ddcc0b8f53"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 10 16:22:31 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 10 16:22:31 2010 -0800"
      },
      "message": "[3258939] Need snapshot to limit which layers are included\n\nChange-Id: Id7351a0e3f53dde99b291cffba553d89fd4d7ca9\n"
    },
    {
      "commit": "c3802d22f11b4e513ba776277d18f315c5c769f7",
      "tree": "655467fbdf8b86d19a9815954d6caa132a2a7069",
      "parents": [
        "19f9eda28a1bd182a5f7bba9dde015b29ab04d25"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 08 17:13:19 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 08 17:13:19 2010 -0800"
      },
      "message": "More clean-up. Get rid off the \"blur\" effect in SurfaceFlinger\n\nFor multiple reason, this effect is not maintainable and was never\nused due to its abysmal performance. it\u0027ll be resurected when it can be\nimplemented efficiently.\n\nChange-Id: Id4222c9b86c629275cdec18873ef07be8723b6d2\n"
    },
    {
      "commit": "d2112306330ce0c162bee4b864991962ca2b655a",
      "tree": "d169f93867e853220c40d38826fe81b4a1ad9eff",
      "parents": [
        "ff3c470778a69d262470e9707fce58dd485c6cc9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 07 19:38:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 08 16:13:59 2010 -0800"
      },
      "message": "remove support for PUSH_BUFFER surfaces and overlays\n\nthe same functionality is now supported through\nthe h/w composer HAL, and YUV support in the GPU.\n\nChange-Id: I8146605449954b8e8fd7f78810b7d873c2d8f5bf\n"
    },
    {
      "commit": "94720d7ec40d2b5ee200d95a46588cdb0fb30e66",
      "tree": "48c53514ce6f4eb1012a38ec8fd9b422d7937897",
      "parents": [
        "882754e8cc5833e19696271d612b4b9eabcc5bb3"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Wed Dec 01 16:38:01 2010 -0800"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Wed Dec 08 15:40:11 2010 -0800"
      },
      "message": "surfaceflinger: add support for gralloc dump hooks\n\nChange-Id: Ib6f539ed0132b70d040d653c03d52cc04249ac3c\n"
    },
    {
      "commit": "ee5a3aca5752f201b69fe0307414ca16ca492f0e",
      "tree": "a70a3671f29058edac447805905d3fab7434fd04",
      "parents": [
        "a2977c383d363e1e88a5b36230b1fa4c312807d2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 07 21:00:25 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 07 21:16:14 2010 -0800"
      },
      "message": "[317580] fix issue where the screen wouldn\u0027t be rotated properly in bypass mode\n\nIn some situations, the screen transformation would not be\napplied while in bypass mode.\n\nChange-Id: I3d6dd52e4c12b11aae97b54bf8e2322536eee37f\n"
    },
    {
      "commit": "025005f562f695c3b1785745c2e5c184fc3a2330",
      "tree": "850177ccb405a2234b885b41624c0253b02db128",
      "parents": [
        "48e723a0ee9b625825d23642f843b91fa276ab7c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 01 23:32:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 03 17:35:07 2010 -0800"
      },
      "message": "[3171580] SurfaceFlinger Bypass mode. (DO NOT MERGE)\n\nThis is a poor\u0027s man precursor to the h/w composer HAL.\nBasically we detect when a window is full screen and in\nthat case we bypass surfaceflinger\u0027s composition step, which\nyields to much improved performance.\n\nChange-Id: Ie03796ae81a1c951949b771c9323044b980cb347\n"
    },
    {
      "commit": "d267d2a2f11e0dd8a14ad05180114c656b73d483",
      "tree": "b38ee662121fceb32cb6715b057886be4a6c4b24",
      "parents": [
        "95ab69f4f4c9c097d328a4bc2448e1aa8f0f2617"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Nov 10 14:57:18 2010 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Nov 10 15:09:09 2010 -0800"
      },
      "message": "Remove a problematic empty update optimization.\n\nThis change removes an optimization from SurfaceFlinger that skipped\ncomposition when it got window updates that had an empty dirty region.\nThis optimization caused problems because it would skip the hwcomposer\nset call, which could leave the window\u0027s previous frame buffer bound to\nan overlay plane.  When the application subsequently dequeued and tried\nto lock its next buffer (which would be the buffer currently bound to\nthe overlay), the lock call would block until the next hwcomposer set\ncall (which may never happen).\n\nChange-Id: I563b626a1d52c1f30eb82489eae0ceb4edc79936\nBug: 3138752\n"
    },
    {
      "commit": "7ece231e4acebd3c70b33fe2ba5f194268569155",
      "tree": "60949f3b9dfbe90efbaa9f2ba39370bfcc2e3da6",
      "parents": [
        "ad4eeb6e76420c434c7239cc1f7df6f8a6baf63e",
        "9f6d18cadf9ac50062063f5f5ff5de7f6895696a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Oct 16 08:58:35 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 16 08:58:35 2010 -0700"
      },
      "message": "am 9f6d18ca: am 04358138: Merge \"[3095807] screen takes a long time to turn on\" into gingerbread\n\nMerge commit \u00279f6d18cadf9ac50062063f5f5ff5de7f6895696a\u0027\n\n* commit \u00279f6d18cadf9ac50062063f5f5ff5de7f6895696a\u0027:\n  [3095807] screen takes a long time to turn on\n"
    },
    {
      "commit": "596e590b472dc33a522f32a74e1f3bacb57534ab",
      "tree": "b302dc1b4c366aef6900082860eca6416a87f3c5",
      "parents": [
        "1cf3e2d0029e3f93d0c22a1b7a37025464c6c660",
        "7e9a54d460030a871a4f05e61e943c6a694e9ef8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Oct 16 08:52:30 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 16 08:52:30 2010 -0700"
      },
      "message": "am 7e9a54d4: am d4e03f37: addresses parts of 3096779 and 3097475\n\nMerge commit \u00277e9a54d460030a871a4f05e61e943c6a694e9ef8\u0027\n\n* commit \u00277e9a54d460030a871a4f05e61e943c6a694e9ef8\u0027:\n  addresses parts of 3096779 and 3097475\n"
    }
  ],
  "next": "1cf3e2d0029e3f93d0c22a1b7a37025464c6c660"
}
