)]}'
{
  "log": [
    {
      "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": "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"
    },
    {
      "commit": "1cf3e2d0029e3f93d0c22a1b7a37025464c6c660",
      "tree": "f5c6d26c96dae08f2b333764a2a62f552af2a408",
      "parents": [
        "b478f4606e76a820e2b2b1d84f95867825441fc2",
        "a8faf91fa558be1235d508e776eb24be4429585c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Oct 16 08:52:12 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sat Oct 16 08:52:12 2010 -0700"
      },
      "message": "am a8faf91f: am 6d71f6a0: Merge \"fix [3095607] Gingerbread screen turn-on animation does not show the last frame\" into gingerbread\n\nMerge commit \u0027a8faf91fa558be1235d508e776eb24be4429585c\u0027\n\n* commit \u0027a8faf91fa558be1235d508e776eb24be4429585c\u0027:\n  fix [3095607] Gingerbread screen turn-on animation does not show the last frame\n"
    },
    {
      "commit": "3577e98ffac36e3961597cbb0341501ccac3be4a",
      "tree": "5070aaf3d756b0880e442c1b2ca48e118436ffd2",
      "parents": [
        "64144c44748d14908fb7ddf9363fc81a4aa9a05a",
        "3d4a9774ced0c704da455c5bd9989127e90ba133"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 15 14:28:07 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 14:28:07 2010 -0700"
      },
      "message": "am 3d4a9774: am b0e020ab: Merge \"may fix 3097381 and 3097482. don\\\u0027t abort on/off if the animation fails\" into gingerbread\n\nMerge commit \u00273d4a9774ced0c704da455c5bd9989127e90ba133\u0027\n\n* commit \u00273d4a9774ced0c704da455c5bd9989127e90ba133\u0027:\n  may fix 3097381 and 3097482. don\u0027t abort on/off if the animation fails\n"
    },
    {
      "commit": "99e3fab534d3a489726665cb8c71edecd5798b04",
      "tree": "86bb8ed74070ebc7bf2f92b0908a2c2959e25217",
      "parents": [
        "a4a2a3aaef730dbab020f7ece09149b05a399000",
        "5bfa3a34eaef759c3ec4def76f646eb1c0bf997f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 15 08:33:43 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 15 08:33:43 2010 -0700"
      },
      "message": "am 5bfa3a34: am 011b5bcc: Merge \"implement part of [3094280] New animation for screen on and screen off add support for screen on animation\" into gingerbread\n\nMerge commit \u00275bfa3a34eaef759c3ec4def76f646eb1c0bf997f\u0027\n\n* commit \u00275bfa3a34eaef759c3ec4def76f646eb1c0bf997f\u0027:\n  implement part of [3094280] New animation for screen on and screen off\n"
    },
    {
      "commit": "dfa08fbfd8a5ebd013c122e391282b7f21f6342f",
      "tree": "6a96919248446fc2767f976de50e4a8ff727e8b0",
      "parents": [
        "d4e03f37423bee383d17f7292753a5f67e497a28"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 14 12:33:07 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 14 15:39:21 2010 -0700"
      },
      "message": "[3095807] screen takes a long time to turn on\n\nturn on animation is now ~200 ms (12 frames).\n\nChange-Id: I49ca9e8d0afa566349d360b3b6c88f0d55aa6e75\n"
    },
    {
      "commit": "d4e03f37423bee383d17f7292753a5f67e497a28",
      "tree": "c559d99f0e6c6fda2621c6809b20ffadfc7bcda2",
      "parents": [
        "6d71f6a0ae9fd81ce25562aee67f841b5d8394cf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 14 14:54:06 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 14 14:57:34 2010 -0700"
      },
      "message": "addresses parts of 3096779 and 3097475\n\n3097475: Animation setting should control the screen on animation\n3096779: CRT power-on animation can briefly show the top app instead of lockscreen\n\nThere is now a parameter that controls wether the ON and/or OFF animation are\nperformed. we also always clear the screen to black on power off, to make\nsure it won\u0027t briefly appear on power on.\nHOWEVER, 3096779 is not 100% fixed in the case where we\u0027re doing the animation\nbecause there is a race, where SF doesn\u0027t wait (b/c it doesn\u0027t know) for the\nframework to have redrawn the lockscreen.\n\nChange-Id: Ie0f02c9225fcdf24b1e8907e268eb7da2c5b0a03\n"
    },
    {
      "commit": "8b6a0545adb968f15ba8bb8c7587ff9ba356db13",
      "tree": "8505e8b6d12f03af157e46010c98b09925bb5812",
      "parents": [
        "b0e020ab409b725a556f2c5043b08c9bac2c29bf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 14 12:46:24 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 14 12:46:24 2010 -0700"
      },
      "message": "fix [3095607] Gingerbread screen turn-on animation does not show the last frame\n\nalways redraw the screen entirely after the power-on animation, because:\n- the animation may not run (ie: on the emu)\n- the animation may not contain the video planes\n- the interpolation may not be perfect and not land exactly on the last frame\n\nChange-Id: I9ba40f537b1e94464f8a3ed6f81e7c2f552df51d\n"
    },
    {
      "commit": "a6cd6d310473e9896c5148946fe9a5fc57db173b",
      "tree": "b2c0afb775bae165afd9ac302a55090b1f89656d",
      "parents": [
        "75d3591b2dd60e50182542045147b9b6033c2b85"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 14 12:19:37 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 14 12:24:54 2010 -0700"
      },
      "message": "may fix 3097381 and 3097482. don\u0027t abort on/off if the animation fails\n\nnow that sf handles more of the screen on/off state, we don\u0027t want to abort\nbecause/if the animation fails for some reason (which will be the case on the\nemulator).\n\nChange-Id: I239e0a39cf8aff3074647e82db92de4a0bf0e494\n"
    },
    {
      "commit": "eb86aaaab34687a77454fa130b08788db1317d74",
      "tree": "6a0b8bd8dc7d3bb45511902d5d6fba012a3c8b43",
      "parents": [
        "4afdf666fdb034834c48445570ed9d6f4133fc71",
        "9a12a3c8d4bb20042cf69e07d268e3a04ac71f96"
      ],
      "author": {
        "name": "Joe Onorato",
        "email": "joeo@google.com",
        "time": "Wed Oct 13 23:34:21 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 13 23:34:21 2010 -0700"
      },
      "message": "am 9a12a3c8: am ba799098: Merge changes I76513387,I335fb671 into gingerbread\n\nMerge commit \u00279a12a3c8d4bb20042cf69e07d268e3a04ac71f96\u0027\n\n* commit \u00279a12a3c8d4bb20042cf69e07d268e3a04ac71f96\u0027:\n  Remove dead code, and make the animation a setting.\n  turn off the electron beam\n"
    },
    {
      "commit": "2d2b803a92ba531cf6c4bb7042326653255b8780",
      "tree": "4f9bfc77e4850d74b260dff622d03a175add6840",
      "parents": [
        "e03471e12f1adcd818b5bfd9dcb894c75fe955c5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 12 16:05:48 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 13 14:28:26 2010 -0700"
      },
      "message": "implement part of [3094280] New animation for screen on and screen off\nadd support for screen on animation\n\nChange-Id: If50cf52ae04b95b42da7d74cf7fa96d5cb54d238\n"
    },
    {
      "commit": "aab758e87991d1460ca94d4a5f22c0ef34641e2d",
      "tree": "560d9e47119175b6a5618dd16d9d9ac4a92145fd",
      "parents": [
        "844a6b3ccaff1ad1443ad985e4527b733ce97c0e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 11 12:37:43 2010 -0700"
      },
      "committer": {
        "name": "Joe Onorato",
        "email": "joeo@android.com",
        "time": "Tue Oct 12 14:16:11 2010 -0700"
      },
      "message": "turn off the electron beam\n\nChange-Id: I335fb6719f1d5a3f1c6f37a046fd1c2c4ed2bbc6\n"
    },
    {
      "commit": "597c7f67b5f2491c6098a1de241a3f0fd274688a",
      "tree": "841774d2e67bfced0608d2344868c64ac566004e",
      "parents": [
        "541d942000c338a15dc4b361b15b72864640d2bf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 29 13:02:36 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 04 17:36:17 2010 -0700"
      },
      "message": "refactored screenshot code\n\nthe core screenshot function now can capture the screen at any lower resolution\nperforming bilinear filtering.\n\nwe also now have some client code to interface with the screenshot service.\n\nit\u0027s now possible to request a screenshot at a lower resolution.\n\nChange-Id: I33689bba98507ab928d0898b21596d0d2fe4b953\n"
    },
    {
      "commit": "38ed2e39c54a42dda8f00620f960788f569a3698",
      "tree": "bf7d48a3bb3c372e7348cab154cb73301ce4a87f",
      "parents": [
        "e17c054d34676c25f03b4eb0d8daebe41b84bf6e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 29 13:02:36 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 29 16:55:15 2010 -0700"
      },
      "message": "refactored screenshot code\n\nthe core screenshot function now can capture the screen at any lower resolution\nperforming bilinear filtering.\n\nwe also now have some client code to interface with the screenshot service.\n\nit\u0027s now possible to request a screenshot at a lower resolution.\n\nChange-Id: I5a3b0e431421800e3aad601d9af8f94adffbc71f\n"
    },
    {
      "commit": "d95fec08916698f7bdd9f4b293d418ae4b4f60c5",
      "tree": "d41977f1c885afe6749debec7b6caff27b09e12b",
      "parents": [
        "960099572d97df03786927974e760070fca3e1ef",
        "495ad4f22096aa172d025c16c25497e7dad8f2bd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 24 18:13:22 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Sep 24 18:13:22 2010 -0700"
      },
      "message": "am 495ad4f2: am beabe75a: Merge changes I1f7c4535,I741c68a2 into gingerbread\n\nMerge commit \u0027495ad4f22096aa172d025c16c25497e7dad8f2bd\u0027\n\n* commit \u0027495ad4f22096aa172d025c16c25497e7dad8f2bd\u0027:\n  simple test app for screen capture API\n  add support for [1974164] Be able to take a screen shot on the device\n"
    },
    {
      "commit": "ca5edbeba92b96913291792a4df984e158853b6d",
      "tree": "cef0f4174ca3d5e09a767787eec63b7a0cf7f2cf",
      "parents": [
        "5c6c5c7a43d44316395f5c35ab713372124b8b4c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 24 11:26:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 24 14:56:39 2010 -0700"
      },
      "message": "add support for [1974164] Be able to take a screen shot on the device\n\nscreenshots are taken using ISurfaceComposer::captureScreen() which returns\nthe size of the screenshot and an IMemoryHeap containing the data.\nscreenshots have limitations:\n- they will always fail if a secure window is up on screen\n- require GL_OES_framebuffer_object extension\n- in some situation, video planes won\u0027t been captured\n\nChange-Id: I741c68a2d2984fb139039301c3349e6780e2cd58\n"
    },
    {
      "commit": "90da4dd2a20c11fa2f9b860905c867a64b2b299e",
      "tree": "146eb9919c3762113ade8cc384759b7e07db148e",
      "parents": [
        "4f5388df7f939b3d5854e8c59e82fa0f387a2a22"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 23 18:13:21 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 23 18:13:21 2010 -0700"
      },
      "message": "dump HWC state in dumpsys\n\nChange-Id: Ifbb38ca1ac9685776250e01c8d02021b35af72cf\n"
    },
    {
      "commit": "6a9692424a88bf87b80870915946af401fd8dc1f",
      "tree": "1774297abf6c0798881dd3007bc9ec5eaa5aaf9b",
      "parents": [
        "4d891e7db56c823a7baefd94fd3fb4af8b485ea9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 22 18:58:01 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 22 18:58:01 2010 -0700"
      },
      "message": "add a way to toggle the h/w composer at runtime\n\nto DISABLE the h/w composer:\n  adb shell service call SurfaceFlinger 1008 i32 1\n\nto ENABLE the h/w composer:\n  adb shell service call SurfaceFlinger 1008 i32 0\n\nthe state is dumped in \"dumpsys SurfaceFlinger\"\n\nChange-Id: I23e2242d42c6e3fd5261a83332dd900b189e38ce\n"
    },
    {
      "commit": "10a96daf7fefb2c1e6381ea233f2aac3fae2869c",
      "tree": "0c6a5df58e80358e08daa1714cd36825b6422fba",
      "parents": [
        "99ce45732030d379549f74248f1f5cc88dfbf191",
        "793b2293797ea930078640c4827d3cbdf449c227"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 16 18:26:19 2010 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Sep 16 18:26:19 2010 -0700"
      },
      "message": "am 793b2293: am 1bcb8b1a: Merge \"surfaceflinger / GL extensions cleanup\" into gingerbread\n\nMerge commit \u0027793b2293797ea930078640c4827d3cbdf449c227\u0027\n\n* commit \u0027793b2293797ea930078640c4827d3cbdf449c227\u0027:\n  surfaceflinger / GL extensions cleanup\n"
    },
    {
      "commit": "e20a56d929fc8fedc2b468ea6d1900bd2aa6e81a",
      "tree": "50f83446ffa80c8cf20c96b51b621631c114f4b9",
      "parents": [
        "698ddb0cd64f7e317ae2f98de05d6462f22b2b2a"
      ],
      "author": {
        "name": "Michael I. Gold",
        "email": "gold@nvidia.com",
        "time": "Wed Sep 15 15:46:24 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 15 17:15:31 2010 -0700"
      },
      "message": "surfaceflinger / GL extensions cleanup\n\nAdd correct enumerants for OES_EGL_image_external to glext.h.\nSurfaceFlinger now checks for the correct extension name.\n\nChange-Id: I2ba2728a01fa2260bd086d2df4316c68f694a9b1\n"
    },
    {
      "commit": "a5ab8ce602ecfd897805e185c89a6eff0c78aabe",
      "tree": "e393ed7e14ae9a42faaf542ccdeda36f6cacf7fa",
      "parents": [
        "19c5df745229374748f38c76a222ec8ce1d08e81",
        "48a862407dda482450bdfd5aa2a2cd8b3e8e38dd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 15 12:29:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 15 12:29:18 2010 -0700"
      },
      "message": "resolved conflicts for merge of 48a86240 to master\n\nChange-Id: I2305fef9f4dd46183337217d822df3c675b6b6e5\n"
    },
    {
      "commit": "04262e9f842edf20168399b6a70f0d67e518fe69",
      "tree": "dd2c01550c43c4658f78d87a60d8d8407af9afe9",
      "parents": [
        "cc5494c9996f809e36539b24e8b6b67683383d29"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 13 22:57:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 13 23:16:58 2010 -0700"
      },
      "message": "Add logging of various important graphics events\n\nThere are 16 events logged in the event log:\nSF_APP_DEQUEUE_BEFORE\nSF_APP_DEQUEUE_AFTER\nSF_APP_LOCK_BEFORE\nSF_APP_LOCK_AFTER\nSF_APP_QUEUE\n\nSF_REPAINT\nSF_COMPOSITION_COMPLETE\nSF_UNLOCK_CLIENTS\nSF_SWAP_BUFFERS\nSF_REPAINT_DONE\n\nSF_FB_POST_BEFORE\nSF_FB_POST_AFTER\nSF_FB_DEQUEUE_BEFORE\nSF_FB_DEQUEUE_AFTER\nSF_FB_LOCK_BEFORE\nSF_FB_LOCK_AFTER\n\nall events log the buffer conserned and a timestamp in microseconds.\n\nby default the logging is not enabled, to turn it on:\nadb shell service call SurfaceFlinger 1006 i31 1\nadb shell setprop debug.graphic_log 1\n\nThe effect is immediate in SurfaceFlinger, but applications need to be\nrestarted.\n\nChange-Id: Ifc2e31f7aed072d9a7dede20ff2ce59231edbec1\n"
    },
    {
      "commit": "982f58bdccce7e4e537cffb2410ad78d73398461",
      "tree": "310841ab00cc57c9a825f84b1ea901719c9a292d",
      "parents": [
        "4c0a4a2b74db9d4a439a0aaa39d80586f7eb1258"
      ],
      "author": {
        "name": "Antti Hatala",
        "email": "ahatala@nvidia.com",
        "time": "Thu Sep 09 02:32:30 2010 -0700"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Sep 09 12:06:31 2010 -0700"
      },
      "message": "surfaceflinger: composite HWC_SKIP_LAYER layers\n\nChange-Id: I363ede63287ae903d66d0d419343f4ecd81bcc00\n"
    },
    {
      "commit": "4c0a4a2b74db9d4a439a0aaa39d80586f7eb1258",
      "tree": "28ffac71f56953e30c2d4d64ef37ea6d640004f4",
      "parents": [
        "54ceb6e68e3510730dc92f9ed2a929b21351405b"
      ],
      "author": {
        "name": "Antti Hatala",
        "email": "ahatala@nvidia.com",
        "time": "Wed Sep 08 06:37:14 2010 -0700"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Sep 09 12:06:18 2010 -0700"
      },
      "message": "surfaceflinger: unlock clients only after flip\n\nChange-Id: I039291a36f05bbaa02b29325d4012114abd784b9\n"
    },
    {
      "commit": "85cfdd011241a5f2fb7fabc65b5943a39af7e1de",
      "tree": "556bd6f34ae8d300d9fa05fe46bb0dc4d8aa43e0",
      "parents": [
        "7fdaa2329e755c0e5c25724a43b8c361b88e9623"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 10 16:37:53 2010 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 23 14:31:30 2010 -0700"
      },
      "message": "Change the framework to use the new camera preview path.\n\nThis change makes the camera HAL interface take an ANativeWindow interface from\nwhich all the camera preview buffers will be allocated.  The framework code\nrunning in application processes now passes a Surface object rather than an\nISurface to the camera server via Binder when setting the preview surface.  The\ncamera server then forwards that Surface object (which implements the\nANativeWindow interface) to the camera HAL, which uses it to communicate with\nSurfaceFlinger to allocate the camera preview buffers.\n\nChange-Id: Ie438f721559cd7de5e4f848a26d96360dda07b5f\n"
    },
    {
      "commit": "e3c01832fc741e9908f047d86cd40db1ea5d78c8",
      "tree": "6765bad7dbcf95dc5ca28ba5b2de5f7a70047712",
      "parents": [
        "ed23e3b87906d367304dbf5bd49ed17448d5d684"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 16 08:49:37 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 23 12:30:24 2010 -0700"
      },
      "message": "Squashed commit of the following:\n\ncommit 35cc68814a9537c31fde146e171e7b0bbdfe211e\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Mon Aug 16 08:48:42 2010 -0700\n\n    Only enable support for yuv to yuv conversion on passion, where it\u0027s available, use the slower yuv-\u003ergb565 path everywhere else.\n\ncommit d8ac5a8814103e60d11d2acf61997fc31a1dc58d\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 13 13:56:44 2010 -0700\n\n    The software renderer takes over all rendering, converting from yuv to yuv if possible and rgb565 otherwise.\n\ncommit 684972074b74318bdcb826ed9b5b0864d2d2e273\nAuthor: Andreas Huber \u003candih@google.com\u003e\nDate:   Fri Aug 13 09:34:35 2010 -0700\n\n    A first shot at supporting the new rendering APIs.\n\nChange-Id: Iea9b32856da46950501f1a700f616b5feac710fd\n"
    }
  ],
  "next": "cfa275908a220c5e1cf496f7fdde1c04e24e95da"
}
