)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "cfa275908a220c5e1cf496f7fdde1c04e24e95da",
      "tree": "d2e9038d4ca2c988e7aebf193760c360785fa869",
      "parents": [
        "6ab94608750776bcaaee56696cfcfb16ce29db8a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 17 20:19:23 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 17 20:22:04 2010 -0700"
      },
      "message": "revert hwcomposer HAL changes. DO NOT MERGE.\n\nThis reverts commit:\n94364b91a2894bf037b8beb027132fbb812e1434\nf8e705dea48f77f1c2532fdbadd4997dd1851af0\nb59beb5ca68d0228f60dda60d85e2d0226b33215\ne0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20\n"
    },
    {
      "commit": "94364b91a2894bf037b8beb027132fbb812e1434",
      "tree": "921da7245e7faab6feb77527d658b1e896867e4b",
      "parents": [
        "c8d0d6307fc5cdd24083113456ac33790a5fb94a"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Aug 12 23:21:40 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 13 10:10:48 2010 -0700"
      },
      "message": "surfaceflinger: don\u0027t check HWComposer numLayers unless one exists\n\nChange-Id: I4b83f7bf7ba1318c70054117f14e759fe0ad105c\n"
    },
    {
      "commit": "0cf2f4354bf8952d822fa4ee9b9588a73999c2f4",
      "tree": "d87dacd217c664a49b72c1ec0ca91dc4aa7cc9c9",
      "parents": [
        "eb7845e672b50b7b4ceeee6dee005cf71feb8951"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Aug 12 23:21:40 2010 -0700"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Aug 12 23:21:40 2010 -0700"
      },
      "message": "surfaceflinger: don\u0027t check HWComposer numLayers unless one exists\n\nChange-Id: I6524f46910b761cff3ef696edf5a65a424879faa\n"
    },
    {
      "commit": "f8e705dea48f77f1c2532fdbadd4997dd1851af0",
      "tree": "0c63e3e5b0d2035b57386db4a9b54f52f751c333",
      "parents": [
        "b59beb5ca68d0228f60dda60d85e2d0226b33215"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 12 15:03:26 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 12 15:03:26 2010 -0700"
      },
      "message": "Fix a couple issues with the new hwcomposer HAL\n\n- we now clear the framebuffer upon request from the HAL\n- the HAL list size could get out of sync with reality\n- there was also an issue where sometime we could run past the list\n\nChange-Id: Ic3a34314aed24181f2d8cc787096af83c046ef27\n"
    },
    {
      "commit": "e0d5f5bcf5a8b26f4ad75f549cbf380b2c9faf20",
      "tree": "85ed9093e65551a73553d19d5e6122d051ef574b",
      "parents": [
        "8514b92bc4dfab58aa762d75322e4c285b6ada17"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 10 17:14:02 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:08:45 2010 -0700"
      },
      "message": "call into hwcomposer HAL when present\n\nChange-Id: I70f31c69a9436a43860e78977442863ecba6d27b\n"
    },
    {
      "commit": "1efba9a61716356014f4c452fd9e099c5ebe9bd0",
      "tree": "92f59d2d9146a58da50cbfe1f1e76221ef44d5c3",
      "parents": [
        "ff1d4102882ae9641a61fc4a3937866521bb72dc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 10 18:09:09 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:05:05 2010 -0700"
      },
      "message": "get rid of our LayerVector implementation\n\nwe now use SortedVector\u003c\u003e with a special compare implementation.\n\nChange-Id: I910459cf3b3c8993b55ad0786a8c348369262de5\n"
    },
    {
      "commit": "ff1d4102882ae9641a61fc4a3937866521bb72dc",
      "tree": "63fd377016ac4465aab9a12afcf75ed07706b273",
      "parents": [
        "91a7f5fef8a9fc496acef23f513cb48139e8dff5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 10 17:19:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 11 16:04:51 2010 -0700"
      },
      "message": "keep a list of visible sorted surfaces\n\nChange-Id: Ib815eeff894f8a3b1e79fbbf8186d5d91bb60285\n"
    },
    {
      "commit": "24651682edaf71e8a826f23a7ea09bc97c8072c4",
      "tree": "d3721d203440aaa3d8ac67890bf170a84e832b53",
      "parents": [
        "4055b780bb7e85abcf4754b84e50bf407c45bec8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:41:18 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 18:43:19 2010 -0700"
      },
      "message": "added BinderService\u003c\u003e template to help creating native binder services\n\nChange-Id: Id980899d2647b56479f8a27c89eaa949f9209dfe\n"
    },
    {
      "commit": "08e83bb3b7cc41f603867acbeb1168019cf535fe",
      "tree": "79594e01ef6c3306b890cb944d6f15d3098075c4",
      "parents": [
        "c9a11088e503b9e3ae52a3f671b2d21f5cd54f06"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 14 17:59:35 2010 -0700"
      },
      "message": "move native services under services/\n\nmoved surfaceflinger, audioflinger, cameraservice\n\nall native services should now reside in this location.\n\nChange-Id: Iee42b83dd2a94c3bf5107ab0895fe2dfcd5337a8\n"
    },
    {
      "commit": "4cfb3a69d2906fc2539dd30508aa6ba8d39065a9",
      "tree": "e54fd25fcd98e57a44a51c7b1b18cad05b2c2270",
      "parents": [
        "c19ffcba19f0d94552945105a7e29530b4806dd4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 30 15:43:47 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 30 15:43:47 2010 -0700"
      },
      "message": "fix live wallpapers on Droid\n\nOn omap3 h/w we force opaque formats to RGB_565 instead of RGBX_8888\nbecause the GL driver doesn\u0027t support it. RGBX_8888 is always remapped\nto RGBA_8888.\n\nChange-Id: I0bfabeb98c8d3a399079e6797cf2a0ee95915324\n"
    },
    {
      "commit": "781953d62dc17d761e39540f0480e5ca7451cdbe",
      "tree": "b5762ff0e04ff7cdbd0a8a0df2b6cf74db8ce369",
      "parents": [
        "1cb3fdc91e1b82a5afe064714a1b530cc05577a7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 25 18:02:21 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 25 18:02:21 2010 -0700"
      },
      "message": "Revert \"Revert \"fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger\"\"\n\nThis reverts commit 330dd304a471d260a73e342a240921c03c825f99.\n"
    },
    {
      "commit": "330dd304a471d260a73e342a240921c03c825f99",
      "tree": "dc4fb488faab0e0f3fac616cb8cb58632cf32d7b",
      "parents": [
        "357f8209f3aec63fa2779da4eeab8825f80b0a41"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 25 09:25:19 2010 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jun 25 11:05:37 2010 -0700"
      },
      "message": "Revert \"fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger\"\n\nThis reverts commit 081bc5c47d8a980e6eafa70ddafcd89981586391.\n"
    },
    {
      "commit": "081bc5c47d8a980e6eafa70ddafcd89981586391",
      "tree": "7f69e950394cfd54a2bd5083345fba31fb330d9c",
      "parents": [
        "8896783dc1d31c5274b277c364da0ffe7cc27cca"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 24 21:22:43 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 24 21:28:59 2010 -0700"
      },
      "message": "fix [2793164] Spam 2x/second with TOT master in SurfaceFlinger\n\nMake sure to not use GL_TEXTURE_EXTERNAL when it\u0027s not supported\nby the GL. The error was harmless, but annoying.\n\nChange-Id: I571a9a9b05d35da51420950a6a6e95629067efd0\n"
    },
    {
      "commit": "f8b4b4408cb864bf604608221eafa9d37323d348",
      "tree": "ede6098c2dd841e667123e238562ad796519be3b",
      "parents": [
        "2d468c5d73cc1cefbcfa8d98e30622c54756918c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 14 21:20:00 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 15 17:31:17 2010 -0700"
      },
      "message": "Added support for the GL_TEXTURE_EXTERNAL target\n\nThis will allow us to support YUV surfaces.\n\nChange-Id: I2d4da75f1006a5285bdc552695d4caeecccf2183\n"
    },
    {
      "commit": "5e14010b1fc066dfcbc0a577d59492687c99667d",
      "tree": "221d256bf258e97b3e7e7c953a679a9104792374",
      "parents": [
        "1debc66521f699bbf0a8eb80cababaef8bc63607"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 19:54:15 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 20:10:02 2010 -0700"
      },
      "message": "allow re-targetting of surfaces\n\nSurfaces can now be parcelized and sent to remote\nprocesses. When a surface crosses a process\nboundary, it looses its connection with the\ncurrent process and gets attached to the new one.\n\nChange-Id: I39c7b055bcd3ea1162ef2718d3d4b866bf7c81c0\n"
    },
    {
      "commit": "1debc66521f699bbf0a8eb80cababaef8bc63607",
      "tree": "718d23f3d018d6d30c2428cd121464cab6ff85bc",
      "parents": [
        "c44c4742e7d79f6fe846f807bb26ad8b3cd16f68"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 15:40:56 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 08 15:40:56 2010 -0700"
      },
      "message": "fix [2751143] Device crashes when in a text box for too long"
    },
    {
      "commit": "7623da435e45c7c03ef6a00a43675deb6645f070",
      "tree": "b789cdc5e60ccc4474bd319b1dbb4e1a7e3f3858",
      "parents": [
        "593c05ce7bcf7b6d94bd8c50da2b818cf05116b1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 01 15:12:58 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:57:41 2010 -0700"
      },
      "message": "split surface management from surface\u0027s buffers management\n\nChange-Id: If3c5655d1231f8f0c49ba68f972b1b20c93b3f87\n"
    },
    {
      "commit": "593c05ce7bcf7b6d94bd8c50da2b818cf05116b1",
      "tree": "7dd70eab8cf6b3dc140e5eedbe01164349d987de",
      "parents": [
        "66236db38dbaae229a86005309b9f7c74eabc998"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 02 23:28:45 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 04 18:57:40 2010 -0700"
      },
      "message": "clean-up client management.\n\nsimplified things a lot, the biggest change is that the concept\nof \"ClientID\" is now gone, instead we simply use references.\n\nChange-Id: Icbc57f80865884aa5f35ad0d0a0db26f19f9f7ce\n"
    },
    {
      "commit": "770492cb2b19f6a36ad748cd05fbedfbb9a67dfa",
      "tree": "3c87a789492e52b3c26b1de9608f42690b86c2cd",
      "parents": [
        "cdfd5fe2c89a30a31f9de5a5481e8997f014a89b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 14:22:23 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 28 17:19:16 2010 -0700"
      },
      "message": "more clean-up in preparation of bigger changes\n\nthe most important change here is the renaming of\nISurfaceFlingerClient to ISurfaceComposerClient\n\nChange-Id: I94e18b0417f50e06f21377446639c61f65f959b3\n"
    },
    {
      "commit": "898c4c91be8e11b6d5388c623ae80f12ac25fd27",
      "tree": "8f59a103707c25a05bcf4fa074e944e766c15503",
      "parents": [
        "66c46a6bd15422fe898d533d1350d6df748dd95b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 18 17:06:55 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 20 18:00:42 2010 -0700"
      },
      "message": "fix the threading issue for setBuffercount()\n\nthis change introduces R/W locks in the right places.\non the server-side, it guarantees that setBufferCount()\nis synchronized with \"retire\" and \"resize\".\non the client-side, it guarantees that setBufferCount()\nis synchronized with \"dequeue\", \"lockbuffer\" and \"queue\"\n"
    },
    {
      "commit": "9bce8737f2f7581ade57445286aa150de051ff89",
      "tree": "19afa0f5dff514a7d555e94c8a81c05d6d9e111b",
      "parents": [
        "33c8e2b8e082555115e5f25735c7611fb80004fe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 17:55:49 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 21 22:28:20 2010 -0700"
      },
      "message": "more surfaceflinger cleanups\n\nget rid of the \"fake rtti\" code, and use polymorphism instead.\nalso simplify how we log SF\u0027s state (using polymorphism)\n\nChange-Id: I2bae7c98de4dd207a3e2b00083fa3fde7c467922\n"
    },
    {
      "commit": "e5c0a7b7810092a593ff386843927238c175bdbd",
      "tree": "0118a020f4e43c025fbfaadb2d91460aa893894d",
      "parents": [
        "796c5fc6abf01b1864223156d578288657fe9923"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 14:51:04 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 20 15:58:36 2010 -0700"
      },
      "message": "clean-up surfaceflinger a bit\n\nget rid of the glDrawTexi path and use floating points instead of fixed point maths\n\nChange-Id: I3aa9ce2dc082f702160e605a16ba5fe987cdf087\n"
    },
    {
      "commit": "59962ce3b0d8b7efec2840accca8fb7a6066f2bd",
      "tree": "df8cdeff7829a272eace6b0fc0cfa17a09a3c3a0",
      "parents": [
        "d32de7f38f7d675d7fed8edc23e12f445a5bd091"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 05 18:01:24 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 05 18:12:27 2010 -0700"
      },
      "message": "Make pixels prettier.\n\nChange-Id: If3b0774b70cbe943894c15ffa1da111ad887010f\n"
    },
    {
      "commit": "9c041bbd81789c209e2369ba958306979b67614f",
      "tree": "01a44b31a8dc49836851ce482e62307600bcbbd4",
      "parents": [
        "057f5c3127fc998396185c2ad655e33f5942c0b9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 16 16:41:46 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 16 17:54:27 2010 -0700"
      },
      "message": "fix [2511580] Window poop on screen - drop down list left some residual when it resized\n\nChange-Id: Ib9a3622e7a568ba26717a93b5bfa4a191651f4d0\n"
    },
    {
      "commit": "85b8d12207c12531d736c7ec836f10d1e6f448e4",
      "tree": "80b6ffa465ebbc18a72a91beaab14e06045ed192",
      "parents": [
        "50ab63f5831fed5cfa888fb67f0a27eb4c0a86c4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:29:09 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:30:56 2010 -0800"
      },
      "message": "improve SF logging/debugging a little bit\n\nChange-Id: I6a57f89c25defc293fd748cc1fbd710031c02ec2\n"
    },
    {
      "commit": "31901cc0b6f0c678be4f629c8c3405700e63c346",
      "tree": "3f3e0dc39aad486f1bf3ad1e11ea2e134a08a73a",
      "parents": [
        "5d26c1e38dabb3ad8b4b6e1000375f3b1a6b7693"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 17:51:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 18:36:14 2010 -0800"
      },
      "message": "fix [2425395] portrait UI briefly shows in landscape\n\nthe \"freeze\" timeout was not initialized properly which caused it\nto kick-in immediately instead of after 5s\n"
    },
    {
      "commit": "5d26c1e38dabb3ad8b4b6e1000375f3b1a6b7693",
      "tree": "6ba3c3a0a6a5de37d65c07690de84080a91db3b3",
      "parents": [
        "69f22feb8540576d2a2e9d32f9c86ebbbf309409"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 16:09:43 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 18:34:50 2010 -0800"
      },
      "message": "Added a name to Surface created by SurfaceFlinger\n\nUpdated the window manager to use this new facility.\nSurfaces name are now printed by \"dumpsys\".\n"
    },
    {
      "commit": "022a43b15bb5de7544c72e073394c6ff5cfc3d47",
      "tree": "620c872220b866fc31960482434bddc32ba7d3c2",
      "parents": [
        "7895da44e32e9c76e07663aae7084f11cbacbbdb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 26 18:59:23 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 26 18:59:23 2010 -0800"
      },
      "message": "to help debugging [2461567] Home screen redraw messed up\n\nlog SF\u0027s idea of the front buffer in dumpsys.\n"
    },
    {
      "commit": "8c20ca39c1248bc876ab164b37ae36261c86ad98",
      "tree": "b5343a655b4e0cbef26a3ca0ebdaa54d7c3fbdcc",
      "parents": [
        "33285c37abee6d95d0ac55cd7e9889cdc8d96d14"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 22 03:15:57 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 22 17:30:40 2010 -0800"
      },
      "message": "remove a dependency of surfaceflinger on libskia\n\nlibskia was only used for a small part of SkTransform. We now implement\nTransform is surfaceflinger directly.\n"
    },
    {
      "commit": "66c77a5b42517b15c933431e12445b856d804ce5",
      "tree": "2e275ec566e062c9b28ba5be5b0304157784d86b",
      "parents": [
        "0066b084b9ac10842769b3cbf755482560d21cd8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 08 15:49:35 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 08 15:49:35 2010 -0800"
      },
      "message": "Add support for physically rotated displays\n\nThis feature is currently controled by a system property.\n\"ro.sf.hwrotation\" can be set to either 90 or 270. It\u0027ll cause\nSF to rotate the screen by 90 and 270 degres respectively.\n\nThat is, if the driver reports 800x480 for instance, and\nro.sf.hwrotation is set to 90, applications will \"see\" a\n480x800 display and will run in portrait.\n\nThis is implemented by introducing an extra \"display\"\ntransformation in the GraphicPlane.\n"
    },
    {
      "commit": "0e44976aa425b0c2a0dcf6ec8db918e6a6f51b1a",
      "tree": "7e487de610df348f73fb7695c06392aee469b02d",
      "parents": [
        "f27eb3264d4b5d3fd154834a709a9a53cc878b58"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 01 17:23:28 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 01 17:23:28 2009 -0800"
      },
      "message": "fix [2297155] SurfaceFlinger\u0027s freeze-timeout doesn\u0027t work\n\nThere was bug in the logic that calculated the relative timeout, the start time was\nreset each time an event was received, which caused the timeout to never occur if\nan application was constantly redrawing.\n\nNow we always check for a timeout when we come back from the waitEvent() and\nprocess the \"anti-freeze\" if needed, regardless of whether an event was received.\n"
    },
    {
      "commit": "6950e428feaccc8164b989ef64e771a99948797a",
      "tree": "f6520613c5355eef110f3820469d7dc477598629",
      "parents": [
        "521f4f3af94e3a093a37af887d3e317a526b61a1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 17:07:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2167050] glTexImage2D code path buggy in SurfaceFlinger\n\nWhen EGLImage extension is not available, SurfaceFlinger will fallback to using\nglTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an\nextra copy. However this code path has never been exercised and had some bugs\nwhich this patch fix.\n\nMainly the scale factor wasn\u0027t computed right when falling back on glDrawElements.\nWe also fallback to this mode of operation if a buffer doesn\u0027t have the adequate\nusage bits for EGLImage usage.\n\nThis changes only code that is currently not executed. Some refactoring was needed to\nkeep the change clean. This doesn\u0027t change anything functionaly.\n"
    },
    {
      "commit": "0c4cec7e4df87181486d280c98fba9c0f4774c37",
      "tree": "4d3aa4fe0101104a1816af9208d367d588bb4f4d",
      "parents": [
        "7b16834adc1003f492cd2be4b1bcc3fb73a78c23"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "message": "Attempt to fix [2152536] ANR in browser\n\nThe ANR is caused by SurfaceFlinger waiting for buffers of a removed surface to become availlable.\nWhen it is removed from the current list, a Surface is marked as NO_INIT, which causes SF to return\nimmediately in the above case. For some reason, the surface here wasn\u0027t marked as NO_INIT.\n\nThis change makes the code more robust by always (irregadless or errors) setting the NO_INIT status\nin all code paths where a surface is removed from the list.\n\nAdditionaly added more information in the logs, should this happen again.\n"
    },
    {
      "commit": "98a9c56acf1857adaf1773bd91c88a8364fd3fa8",
      "tree": "567d8e955821f2c32bb280408195bb778be89fc0",
      "parents": [
        "a33e3f79259b56b03c7912af35944f34ad190e3c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 30 14:42:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 30 15:15:07 2009 -0700"
      },
      "message": "attempt to work around [2155085, 2150246] stuck in closeTransaction()\n"
    },
    {
      "commit": "8851617aea7d2cd61fd8a8585bd4414a14d71653",
      "tree": "e8bdb24d6c02169891ff6001646acb5a3314b7a2",
      "parents": [
        "45094a34f014fa79e78eea8ee2091021bf1de209"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 29 22:32:36 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 29 22:32:36 2009 -0700"
      },
      "message": "remove unused code"
    },
    {
      "commit": "81384bf927c47a4efa653b14273084a13e67e3ac",
      "tree": "8b79fb1636fff36530d7db782e738f47ab301945",
      "parents": [
        "1a3c8950394b98f6f354456830208d70e87b8bb6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 22:47:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 22:47:32 2009 -0700"
      },
      "message": "don\u0027t emit GL commands when sf is in freeze mode\n\nWe were emitting GL commands, calling composition complete and releasing clients\nwithout ever calling eglSwapBuffers(), which is completely wrong on non-direct\nrenders. This could cause transient drawing artifacts when unfreezing the\nscreen (upon orientaion change for instance) and could also block the clients\nfor ever as they are waiting for their previous buffer to be rendered.\n"
    },
    {
      "commit": "f2d28b74850ea0869aef2ce0727a6abb7b166a5c",
      "tree": "a59d2712a9cef92619bb003b77203592e5c32a7b",
      "parents": [
        "2ddccd16496701370572e1ad3d83da056d9ad281"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 24 14:57:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 24 14:57:26 2009 -0700"
      },
      "message": "minor SurfaceFlinger code cleanup and remove unnecessary tests\n"
    },
    {
      "commit": "cc934763c3fc789f53edb64de16fc36d43c3705d",
      "tree": "5e9f508326cbaa27bd1fd255324dfcd4026badbf",
      "parents": [
        "44cac134655d5c3b2eeab2e42792c70a7aa8b92f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 19:16:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 19:16:27 2009 -0700"
      },
      "message": "turn dithering off if it\u0027s not needed\n"
    }
  ],
  "next": "2e4b68d57bb64d7e93139238c5a8be91ff956c2a"
}
