)]}'
{
  "log": [
    {
      "commit": "ca99fb8f65f3ea249c56fb6dccefffb54e87696e",
      "tree": "6071c87bf800c60d8c2f8dbd85a2f0c2b6e669f7",
      "parents": [
        "daeec8c5b335ba84aa932a80e6319be5d71f1956"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 14 16:43:44 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 14 16:43:44 2010 -0700"
      },
      "message": "fix [2594950] Flash: Zooming in on some content crashes the Nexus One and causes it to reboot (runtime restart)\n\nWe now limit the size of the surface to the maximum size supported by the GPU.\nOn Nexus One this will 2048 -- it could be different on other devices.\nSurface creation fails if the limit is exceeded.\n\nChange-Id: I9ecfc2e9c58c9e283782b61ebfc6b590f71df785\n"
    },
    {
      "commit": "ab02873e8f4e235b0db800521dd0c969ed38c0b9",
      "tree": "54754cb5af99ddd885337a16410f180648b10728",
      "parents": [
        "b7f853e57b3ba884a9e5390baf004415c2556e61"
      ],
      "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": "d343e3d5e3177806205b9452b0b43907e28afd9a",
      "tree": "a094c9ea996f2d1ceb872340a192741ea6395635",
      "parents": [
        "80586f4230f974c2a3fe2b8aa398ffd6764e3a3a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 15 18:15:20 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 15 18:15:20 2010 -0700"
      },
      "message": "fix [2515291] Native crash and runtime restart while trying to preview captured picture on Sapphire\n\nif a buffer couldn\u0027t be allocated because of an OOM, SF could, in some case dereference\na null pointer.\n\nChange-Id: I5321248c38a21e56d5278b6aada2694e64451378\n"
    },
    {
      "commit": "d12965934712ed0b9c1a264a6934dc0dad839ffd",
      "tree": "59920890e11f3732f5bba3d0507077297da8c014",
      "parents": [
        "06cc3e1b5dc2486732013f218b7d02aae6288a9e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 09 19:17:47 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 11 12:55:39 2010 -0800"
      },
      "message": "fix [2483456] Video orientation is wrong on Droid for some videos\n\nChange-Id: I450191f1335f57bffc51aff3e27295395847dbc0\n"
    },
    {
      "commit": "948d69fca450a5a85e3e3e17d5776bfb26e48b85",
      "tree": "dced50dd4d2a0372405a728361a60cc503db1138",
      "parents": [
        "7d3f8ed3a5878e3dc8046eaa1fa0524a6ff51344"
      ],
      "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": "f23a5e052e3847cad23710d940254739ffd35a48",
      "tree": "753a6007ecd24dd33fcda0069f1e0b4245ef0e0f",
      "parents": [
        "4d0e1ddf5dea997e4e053aa5413a28c37dff4a5b",
        "fcfeb4b5970c8f361634429934a2518d7e8328dd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 15:35:44 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 08 15:35:44 2010 -0800"
      },
      "message": "Merge \"fixes for [2474091] Saw Poor behaviour playing a video.\""
    },
    {
      "commit": "fcfeb4b5970c8f361634429934a2518d7e8328dd",
      "tree": "5a8337f84c6d707b28c9be732842555c622786d6",
      "parents": [
        "8addafe823381addbb8b9ca4edeca846fa13122f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 11:14:20 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 11:14:20 2010 -0800"
      },
      "message": "fixes for [2474091] Saw Poor behaviour playing a video.\n\n- fix a bug when hacking video buffers into gralloc buffers\n where the buffer size was incorrect this was causing the\n \"direct-form-texture\" mode to fail\n\n- also when the above fails, make sure to revert to the\n \"mdp copy mode\" before going to \"slow mode\"\n\n- finally disable completely the \"direct-from-texture\" mode\n for now. It cannot work because the allocated buffers can\u0027t\n respect the GPU constraints (alignment and such). We\u0027ll\n have to find a solution for that.\n"
    },
    {
      "commit": "4fe6ac33d14ba3998fff5f289d36b0f9dd67fa28",
      "tree": "74e1ffb9104e2c6d605cff34f71a2aa28482451e",
      "parents": [
        "32f027250bcc3cfff26c3648750696ce85f07136"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Mar 02 15:39:44 2010 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Tue Mar 02 16:44:46 2010 -0800"
      },
      "message": "surfaceflinger: remove un-cached buffers hack for Adreno\n\nChange-Id: I5ae4e74bfa3e25b55be2cddf7b3c51368a140ab9\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "064e1e672e62094b32f8cf7a77a3b04c3309dc79",
      "tree": "1bd60f1efaec92479bedb0cd7edf95dcc8098f12",
      "parents": [
        "285dbde2e0cd0057be070ded3be8f5f453147edc"
      ],
      "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": "285dbde2e0cd0057be070ded3be8f5f453147edc",
      "tree": "b9b6c52aae0b3dffef51d7113713ffad60a6a365",
      "parents": [
        "46a26c63ed0a4322551ae0d8bac3c558d45d20dc"
      ],
      "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": "45853c975907ac9b5c4c11e9f74caa2bd01fea24",
      "tree": "74d51c4e9413b2bcae28b47e10f67bb1fca558fa",
      "parents": [
        "32820ca5f93722969129446e18d290ba81a08a5f"
      ],
      "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": "eda65400f5ae301e26c5f52287d831f063069ec2",
      "tree": "7761c37543be75a8f97e40f86fac897edbf7f792",
      "parents": [
        "d2fa75683ad20749f97e12ac2f70e91e25f9def9"
      ],
      "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": "ca6fab2b534fc7b252d0ee7ec2079afff7e5c308",
      "tree": "898e53da55169a6e53b42b83ed8c9c5ce50bf863",
      "parents": [
        "1e10d364f171d69a7bfd57cb7757d7f69964525a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 19 17:51:58 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 19 17:51:58 2010 -0800"
      },
      "message": "Initialize layer position\n"
    },
    {
      "commit": "54ed4f6282bdea251455f39b978626026affdbef",
      "tree": "157d34806bbfab22e433c1eafe0e2bf72f832af2",
      "parents": [
        "39696474d715de575949a9cdf12e7ff339896f8d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 17:33:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 17:33:37 2010 -0800"
      },
      "message": "get rid off the YUV formats at the libui layer\n"
    },
    {
      "commit": "c9e4a125464b389454619432cbdbcb2d9b11995a",
      "tree": "53e02445736e4c5be44cc088b9957ab1c0588abd",
      "parents": [
        "053c9e928bc8aa569572aea97430a63cb8fdc109"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 12 18:50:28 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 12 18:50:28 2010 -0800"
      },
      "message": "minor cleanup.\n"
    },
    {
      "commit": "9cce325fae8adcf7560a28eef394489f09bad74d",
      "tree": "3497604564acd2575016d3a331d661f22a8e6db3",
      "parents": [
        "4fae0fd0c9425318094d4c0059331c2c7a996c66"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "2b92d89e23e1a2a07d0e0d01c00eed33ea580aff",
      "tree": "e48a80222a08d42335c728ecf493e6288c34a75d",
      "parents": [
        "1b26c6ae58f9f0e37fd0e3ae7c03a74efcdec904"
      ],
      "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": "a7e380396ea68b2247a61e6fc676724a976223f9",
      "tree": "b51aab06d63397e9688653e32ac4955e73140ab8",
      "parents": [
        "8dccb26901973722164f2a11551fd6d5c52081bf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 04 17:13:06 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 04 17:13:06 2010 -0800"
      },
      "message": "Add support for direct EGLImageKHR use with pushbuffer API\n\nWe now always first try to use the EGLImageKHR directly before\nmaking a copy with copybit. The copy may be needed when\nEGLImage doesn\u0027t support the requested format, which is\ncurrently the case with YUV.\n"
    },
    {
      "commit": "5994a330ac949e7706540f22cd73d76d9f2a96cb",
      "tree": "46250601cda14ac8a44572be4566a8ac0869701d",
      "parents": [
        "32f6863e218e19f8a3daab7e345bb4ae6587865a"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 16:30:39 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 16:30:39 2010 -0800"
      },
      "message": "Add support for 180/270 degrees rotation.\n"
    },
    {
      "commit": "52e7200b6e020bba978c36e3a928493a3f2c8a92",
      "tree": "9c752d7d277ba2dfb9789763369a7373888557a2",
      "parents": [
        "d28d5be75b41fe48f486f9b83ae8685496983f5a"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 17:31:06 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 20:20:08 2010 -0800"
      },
      "message": "Add an orientation parameter for overlay, so we can do camera preview in portrait mode.\n"
    },
    {
      "commit": "edfd97c0f2e679e86699a0f6c4df65ea21ecff15",
      "tree": "45a7fb9ad27b7031e2ca5cfd26552aa10e4853a3",
      "parents": [
        "8c3b597aa7a627ab6979e58a173502cc505cb0df"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:04:56 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:29:34 2010 -0800"
      },
      "message": "fix [2324665] texture leak in surfaceflinger when using camera\n"
    },
    {
      "commit": "8c3b597aa7a627ab6979e58a173502cc505cb0df",
      "tree": "8bcb212e089d8641060c242710ef7fbc581fe46b",
      "parents": [
        "aa774c3e81d9ab685461ca0ab368086f669e4d1f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:27:30 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:27:30 2010 -0800"
      },
      "message": "fix a texture leak introduced recently.\n\ncreate the texture name once and for all for a given BufferSource\nand make sure to recreate it when we\u0027re forced to delete the texture.\n"
    },
    {
      "commit": "5fdea8d5b0a015433e01849a6c862c147e16346c",
      "tree": "aa64093317df178cde7b8252e600039826e7f7bd",
      "parents": [
        "ecc99c003b4aca7d7d2f268f927558db4cbddfe1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:31:53 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:31:53 2010 -0800"
      },
      "message": "fix [2363362] [Sapphire] Corrupted raw picture displayed during snapshot\n\nhandled all cases where the scale factor of a video is out of bounds of\nsupported scale factors in copybit.\n"
    },
    {
      "commit": "ecc99c003b4aca7d7d2f268f927558db4cbddfe1",
      "tree": "ce0d4257ccfca6dad1867d7e7e83ca85475cd51e",
      "parents": [
        "42d095aaa54a762ef74d219854aca8e1a7c6f5f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:56:07 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:07:44 2010 -0800"
      },
      "message": "part of fix for [2363362] [Sapphire] Corrupted raw picture displayed during snapshot\n\nmake sure to fallback properly to software when copybit operation fails.\nwith this change, the preview image will at least be displayed in b\u0026w\n(since GL doesn\u0027t support the yuv format). This would also fix\n2363506, but that one is now handled more cleanly.\n"
    },
    {
      "commit": "1faed6608655409cdd9c703cdbceedc03cb40bde",
      "tree": "d1322035bc57f859960ccefd2a4075a96ff32986",
      "parents": [
        "084e7c4ee8d4c6d54561347e2fe76bcdbd9f19da"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:24:14 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:24:14 2010 -0800"
      },
      "message": "fix [2363506] [Sapphire] Video playback broken\n\ndon\u0027t try to use copybit for incompatible buffers\n"
    },
    {
      "commit": "f5430db059be3e771c004d0ada594bf8820d0517",
      "tree": "e291c558ae63d711f9570038ce2dd78ccdef3874",
      "parents": [
        "f414887b3c7af00a66c7f8b105dfd9fd2cb3ec2f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 11 00:56:10 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 11 00:56:10 2009 -0800"
      },
      "message": "fix [2269582] [TOP-10][Passion_1506][APT:Camera]Sometimes camera preview screen is truncated after launching and back to home screen by home key repeatedly\n\nWhen a surface is removed from the screen while it holds a \"freeze lock\", the\nrelease of that lock happens in the destructor as a \"safety net\". However, it\ndoesn\u0027t trigger an update at that point.\n\nMake sure that \"freeze locks\" are released from the transaction at the point\na surface is removed from the screen (if it\u0027s not on screen, it shouldn\u0027t\nprevent the screen to redraw, and therefore cannot hold a freeze lock).\nThe refresh corresponding to that transaction will pick it up as soon as possible.\n"
    },
    {
      "commit": "8f03b47432f007b1fb3438608361ebf4e3a1310b",
      "tree": "c2971689ed314285bc32d7b226e51cf364e9373f",
      "parents": [
        "c0012deacc14f871062ebc1756d5290d8a8b5ad3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 10 15:52:29 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 10 15:59:08 2009 -0800"
      },
      "message": "fix [2319255] crash in openGL : from the media recorder stress test.\n\nnever call eglCreateImageKHR() with a NULL native buffer, which can\nhappen in OOM conditions.\n"
    },
    {
      "commit": "c5e181f8b347ad89874e0c6c7d2eea8d0465a478",
      "tree": "b637cb7ac5eabf5897345fbf7c39ce68ff9e6edb",
      "parents": [
        "cb94f70d5cfecf69f4f470497703befb270f6565"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 09 14:32:56 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 09 15:26:29 2009 -0800"
      },
      "message": "fix [2315900] Monochrome camera preview screen after launching camera\n\nthis was introduced by a recent change. when we try to figure out the size of\nthe yuv-\u003ergb temporary buffer, the output resolution has not been computed yet\nand an invalid buffer size is used. most of the time the allocation fails\nand the system reverts to \"standard\" GL will uses onle the Y plane.\n\nthe allocation of the temporary buffer is moved to onDraw(), the first\ntime it is called, by that time, the window is positioned properly.\n"
    },
    {
      "commit": "69ff5de1b7bdc763a77093f829d2aa2c6da99545",
      "tree": "fc65df9687a88093b1416557ebeeb25f83f80889",
      "parents": [
        "ac16968db1d225d0c019bb4e782d18c1ea8936f0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 08 19:29:38 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 08 19:29:38 2009 -0800"
      },
      "message": "improve video performance to minimize the tearing effect seen in 720p movies\n\nalways rescale videos to their target size using copybit during yuv-\u003ergb\nconversion. this improves performance of the GPU pass and doesn\u0027t require\nlinear filtering to be enabled. Also always use 16-bits buffers.\n\nthe average processing time for 720p dropped from ~50ms to ~30ms\n"
    },
    {
      "commit": "a9ec9be1952f8c70cc4227b0dd51aad0b863745c",
      "tree": "91cad94696de46d4ffc893c332c486d71f34ffba",
      "parents": [
        "d313000d3a79e1de0f9e66a9dc1b62e7dcd88785"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Dec 07 00:17:06 2009 -0800"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Mon Dec 07 00:17:06 2009 -0800"
      },
      "message": "Revert \"When using MDP, we needed to use a texture for diming.\"\n\nThis reverts commit bf0c320afbf6bf2441916755ecb443b64afbe73f.\n"
    },
    {
      "commit": "1bd48776eb41e1e9810a1a1915028cc4c9ce4882",
      "tree": "2a59a45361d517ba1ab93e7641d4e53a4c629157",
      "parents": [
        "417fe604e9684f1997a1183aac8dfad61af3733b"
      ],
      "author": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Dec 03 14:08:19 2009 -0800"
      },
      "committer": {
        "name": "Erik Gilling",
        "email": "konkers@android.com",
        "time": "Thu Dec 03 14:09:31 2009 -0800"
      },
      "message": "surfaceflinger: remove un-cached buffer hack for SGX\n\nSigned-off-by: Erik Gilling \u003ckonkers@android.com\u003e\n"
    },
    {
      "commit": "3e8a81e3546f4c065c49a08bbe7e04662db73577",
      "tree": "ccd05f7a81d5fcff15e83fec2eff3661fdc1c390",
      "parents": [
        "7b1451d360b72ab494af8d00302868e7208200ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 02 16:23:11 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 02 16:23:11 2009 -0800"
      },
      "message": "fix [2291418] Camera preview cannot work in Emulator\n\nThe image buffer used by glTexImage2d() would be uninitialized when no copybit engine\ncan be found.\nWe now always initialize images, since the abscence of copybit is not necessarily fatal.\n"
    },
    {
      "commit": "0408772e34931351d062f2088b611325ddaa6cdb",
      "tree": "20216060dace5fea9d84f39eae9d649091116745",
      "parents": [
        "18facb7c4d471e7a2d1e44f5ac1fcff056f96dcf"
      ],
      "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": "c61de17f143b5f806c5bab9cc58910a322302b70",
      "tree": "f667e56ee0bce443f84bfcb6d40e781fb1ec167d",
      "parents": [
        "def563c45163fea9b53fc4627672fd43d4894b2f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 30 11:15:41 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 30 11:15:41 2009 -0800"
      },
      "message": "fixed [2260070] display stopped updating\n\nalways check that the visible region isn\u0027t empty after all visible regions are recomputed\nclear he freeze-lock if it is.\n"
    },
    {
      "commit": "2f0a0a58f6dd03708d3f187816ce849d95354ea0",
      "tree": "4d9d9b61725aabefb94ef9fb2322c6856118283b",
      "parents": [
        "3b70ddd2f648b44c4883a607352de1444ac9e112"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 23 22:40:42 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 23 22:41:36 2009 -0800"
      },
      "message": "When using MDP, we needed to use a texture for diming.\n"
    },
    {
      "commit": "60f5d3694b4422ac306320ea39678354cb534630",
      "tree": "085930a879bfcfe4c998ae2e76d139fa53864e18",
      "parents": [
        "48d2c6051e7906e86511f72fe938fc66180472fa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 19 15:52:28 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 19 15:52:28 2009 -0800"
      },
      "message": "backout a workaround that is not needed anymore\n\nwe had to add a call to glFinish() before glReadPixels() because of a bug in the GL ES\ndriver of a certain device. This is not needed anymore.\n"
    },
    {
      "commit": "713795a2e0d594618f45d3b83ac78a2dcbeb12e5",
      "tree": "9ac9e2e4c8150b4775a7549a43ca0d296a258b1f",
      "parents": [
        "574917c87f039edffa3873acc485ad775ce7a750"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 19 14:46:26 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 19 14:46:26 2009 -0800"
      },
      "message": "fix [2269022] The raw picture displayed post shutter seems to have low-resolution\n\nMake sure to always enable linear filtering in LayerBuffer. This change doesn\u0027t affect\ndevices using overlays.\n"
    },
    {
      "commit": "9e911efc10071b7916362370615f8d10dacace62",
      "tree": "5cf1b88e84f34deaad703bc7c8bc80cf8acf1414",
      "parents": [
        "13f82e0909647c62187e0dc84a6560329f81b930"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 16 14:55:36 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 16 14:55:36 2009 -0800"
      },
      "message": "fix [2262591] Junk on screen in ERD46\n\nsince we\u0027re using the GPU for composition, don\u0027t use a texture for dimming,\ninstead simply use an alpha-blended quad.\n\nalso workaround what looks like a GL driver bug by calling glFinish() before\nglReadPixels().\n"
    },
    {
      "commit": "dcaf29af10a3f100f2b8f7a08e9d4b2c656dd1a4",
      "tree": "4040c48baba616d610e8899f05ab2592a432b3b1",
      "parents": [
        "9875c79ba96d324c5acb699038eedfaad399c62a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 13 18:54:14 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 13 18:54:14 2009 -0800"
      },
      "message": "addresses several bugs: 2206097, 2166583, 2261119, 2216759\n\n2206097: Broken suggestions while composing message\n2166583: Color artifacts with MDP dithering\n2261119: Passion transition animations are rough\n2216759: Screen flicker when dropdown list in background window shows or hides\n\nThis is part of enabling GPU composition instead of using the MDP. This change\nis dependent on another change in the vendor project.\n\nSpecifically this change disables the use of EGLImageKHR for s/w buffers\nfor cache coherency reasons. memcpy is used instead.\n"
    },
    {
      "commit": "bbc21b01cf43f9b4815fcd8f7c1bbae06a1dd1a7",
      "tree": "76a4fd8e699994050a36aa17709d14a812018ad1",
      "parents": [
        "295fb83735cf70ef157d9280e53651821df067f3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 05 23:08:00 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Nov 11 16:44:43 2009 -0800"
      },
      "message": "fix [2143798] Need to figure out how to do video on Passion w/ GPU\n\nThis builds on the EGLImage solution. We simply use copybit to convert from the\nYUV frame into an EGLImage created for that purpose and proceed with the\nregular EGLImage code.\nWe need to do this because \"regular\" GL doesn\u0027t support YUV textures.\n\nWe could improve upon this by detecting exacly what the GL supports and bypass\nthis extra step if not required, but we\u0027ll do this later if needed.\n"
    },
    {
      "commit": "6fee064809068fe1a7da63d55678d9a222b0be15",
      "tree": "119f2ce4dc9362a7e389eac87abe1a7d7c691c5c",
      "parents": [
        "aa628c911a6ec727f4cff0d664a9af5d91770828"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 02 17:48:33 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 02 17:48:33 2009 -0800"
      },
      "message": "fix[2228133] pixelflinger ignores the \"vertical stride\" leading to artifacts when playing back video\n\nwe lost the concept of vertical stride when moving video playback to EGLImage.\nHere we bring it back in a somewhat hacky-way that will work only for the\nsoftgl/mdp backend.\n"
    },
    {
      "commit": "fa4c9b8af858ce0da30cafd1ecbb30b99bdfd078",
      "tree": "0f98dcd291287c0f427d79510b3c233da00adf4f",
      "parents": [
        "bd5a0027f4fbffc8cada0d22e8ccebf680cdc749",
        "8889a8183c0a8ed2394c05c7d742554f8d0fa49d"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 30 17:54:16 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 30 17:54:16 2009 -0400"
      },
      "message": "Merge change Id8b28e4f into eclair\n\n* changes:\n  fix [2225964] Android runtime restarted in surfaceflinger/BlurFilter.cpp\n"
    },
    {
      "commit": "bd5a0027f4fbffc8cada0d22e8ccebf680cdc749",
      "tree": "2eeb661d91e958efb770d8a6d0749a31e2ea44c5",
      "parents": [
        "b4d8fbb1a72f77408db2bd2d89d987af504b0141",
        "863e5fdde858d732ac76320369b6304599f23b4c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 30 17:54:10 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 30 17:54:10 2009 -0400"
      },
      "message": "Merge change I56779290 into eclair\n\n* changes:\n  fix[2222341] Soft reset while going back from camcorder settings\n"
    },
    {
      "commit": "b4d8fbb1a72f77408db2bd2d89d987af504b0141",
      "tree": "7259720dd05b72dd48f07374e0912c0816e70914",
      "parents": [
        "b4d306fb4936cc7da0aad9cc20491d57f9c10a66",
        "df2d92940550bc68c3c237937bce7ac16d9fa91b"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 30 17:54:03 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 30 17:54:03 2009 -0400"
      },
      "message": "Merge change If007a2fa into eclair\n\n* changes:\n  return proper error code from eglCreateImageKHR\n"
    },
    {
      "commit": "863e5fdde858d732ac76320369b6304599f23b4c",
      "tree": "b8d374db3d255ee24a6884167238ad8955bd722b",
      "parents": [
        "df2d92940550bc68c3c237937bce7ac16d9fa91b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 29 18:29:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 30 14:48:50 2009 -0700"
      },
      "message": "fix[2222341] Soft reset while going back from camcorder settings\n\nadd a way to convert a mapped \"pushbuffer\" buffer to a gralloc handle\nwhich then can be safely used by surfaceflinger, without including\ngralloc_priv.h\n"
    },
    {
      "commit": "550a11455a5155b078085fd5f464d7f3e5dfb7fc",
      "tree": "cc2aae8a08b6e1429c456596bcbfcba6485b1618",
      "parents": [
        "a248b0f5b8b6153b9cf9e09b39f72bc20a5c6908"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Oct 29 10:19:34 2009 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Fri Oct 30 10:24:06 2009 -0700"
      },
      "message": "DO NOT MERGE: Another gcc 4.0.3 workaround.\n\nTemporarily make a function public that doesn\u0027t need to be.  When\nhost gcc-4.0.3 is gone from the build servers we can undo this.\n\n(Cherry-picked from eclair-mr2.)\n"
    },
    {
      "commit": "8889a8183c0a8ed2394c05c7d742554f8d0fa49d",
      "tree": "5536f0a133ee902d2386a4aa3f37609e322d49c8",
      "parents": [
        "b0d0de329d73a70e8825ab9a7069b4c56645dc48"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 29 20:24:44 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 29 20:24:44 2009 -0700"
      },
      "message": "fix [2225964] Android runtime restarted in surfaceflinger/BlurFilter.cpp\n\ncrash was due to an unintialized variable, which caused the wrong bluring\nformat to be used and caused a memory overrrun.\n"
    },
    {
      "commit": "df2d92940550bc68c3c237937bce7ac16d9fa91b",
      "tree": "a21e5e8b9975cc71a6451739c5cc0e3a025e2c43",
      "parents": [
        "b0d0de329d73a70e8825ab9a7069b4c56645dc48"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 28 21:00:29 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 29 16:45:41 2009 -0700"
      },
      "message": "return proper error code from eglCreateImageKHR\n"
    },
    {
      "commit": "54ba51dff21de666c5ae3bf3abd4f0634ebb0676",
      "tree": "58a69dccdbfd227b9de3c58a416de45d2a8d3513",
      "parents": [
        "36bc94173c957f33f70bcd16c369951f5b2dc3f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 26 20:12:37 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 27 13:13:29 2009 -0700"
      },
      "message": "    fix [2143798] Need to figure out how to do video\n\n    Use EGLImageKHR instead of copybit directly.\n    We now have the basis to use streaming YUV textures (well, in fact\n    we already are). When/if we use the GPU instead of the MDP we\u0027ll\n    need to make sure it supports the appropriate YUV format.\n\n    Also make sure we compile if EGL_ANDROID_image_native_buffer is not supported\n"
    },
    {
      "commit": "57720c384af81327d327ef8b88078f11a750fd05",
      "tree": "4125091c671e9fd56bb292f54b04b3668a8fadab",
      "parents": [
        "9521fc0f17c227fa79dd4d830d4607557d060f00"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 21 16:27:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 23 15:37:28 2009 -0700"
      },
      "message": "fix [2211532] improves sholes graphics performance\n\nInstead of using glTex{Sub}Image2D() to refresh the textures, we\u0027re using an EGLImageKHR object\nbacked up by a gralloc buffer. The data is updated using memcpy(). This is faster than\nglTex{Sub}Image2D() because the texture is not swizzled. It also uses less memory because\nEGLImageKHW is not limited to power-of-two dimensions.\n"
    },
    {
      "commit": "8f2d50521653f24c2a5e77b627dc015c7fbd656a",
      "tree": "49f7ced9cddff8187f64d4a28ecd5d8ddbd860c7",
      "parents": [
        "28541629e163399fd1cac126e06868ecf1b4811e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 17:58:29 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 17:58:29 2009 -0700"
      },
      "message": "fix [2164183] sometimes device just wants to stay asleep\n\nWhen switching rapidily orientation back and forth, surfaces end-up\nacquiring the freeze-lock when the first orientation change happens,\nbut never release it because by the time the 2nd orientation change\ncomes in, the surface size is back to its original size and\ndoesn\u0027t appear to have resized.\n\nwe now always release the freeze-lock when we receive a buffer of the\nexpected size.\n"
    },
    {
      "commit": "e700501d0e888ead9ac6456c0a6fd74d634aa5fb",
      "tree": "25bb0963dd0b96b7c17285f6ddddd536f6465f30",
      "parents": [
        "8e53c5595dd6846ddbfd39549849ea7a289d9897"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 16:44:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 16:44:10 2009 -0700"
      },
      "message": "fix [2170319] gmail bulk operation checkbox latency on passion\n\nThis also fixes [2152536] ANR in browser\n\nWhen SF is enqueuing buffers faster than SF dequeues them.\nThe update flag in SF is not counted and under some situations SF will only\ndequeue the first buffer. The state at this point is not technically\ncorrupted, it\u0027s valid, but just delayed by one buffer.\n\nIn the case of the Browser ANR, because the last enqueued buffer was delayed\nthe resizing of the current buffer couldn\u0027t happen.\n\nThe system would always fall back onto its feet if anything -else- in\ntried to draw, because the \"late\" buffer would be picked up then.\n"
    },
    {
      "commit": "67838bc1129a07e8badf564df1472394ac0cae5e",
      "tree": "234f98534f0ab077f554328f0da12d174568c080",
      "parents": [
        "21fd586f18754350e20ed53670a822d7c7abe051"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 22:23:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 22:23:23 2009 -0700"
      },
      "message": "Revert \"temporarily disable the use of glTexImage2D for sw buffers on sholes.\"\n\nThis reverts commit c131c5671965b69b0dee3e4afa3b3dd5e3c0c405.\n\nApproved by Hiroshi\n"
    },
    {
      "commit": "c87104f17c8f6b9174335426dadf8d77c1bd2274",
      "tree": "dbbb0e77ce627e5ac9cbc61ddb30582ff4319822",
      "parents": [
        "f5e868baf96fd6e3c4ab386ba6c4f7574a7307b9",
        "9ec430adaea1cb88eaa1e78c7f759cd42ab6cf7a"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 06 22:10:17 2009 -0400"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 06 22:10:17 2009 -0400"
      },
      "message": "Merge change I4961c959 into eclair\n\n* changes:\n  fix [2152536] ANR in browser\n"
    },
    {
      "commit": "9ec430adaea1cb88eaa1e78c7f759cd42ab6cf7a",
      "tree": "1174b71aeaf88287d38538f8b7baa74532f6f638",
      "parents": [
        "ef8646344a7168643b50a51ebffa2e41e9717608"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 19:00:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 19:00:57 2009 -0700"
      },
      "message": "fix [2152536] ANR in browser\n\nA window is created and the browser is about to render into it the\nvery first time, at that point it does an IPC to SF to request a new\nbuffer. Meanwhile, the window manager removes that window from the\nlist and the shared memory block it uses is marked as invalid.\nHowever, at that point, another window is created and is given the\nsame index (that just go freed), but a different identity and resets\nthe \"invalid\" bit in the shared block. When we go back to the buffer\nallocation code, we\u0027re stuck because the surface we\u0027re allocating for\nis gone and we don\u0027t detect it\u0027s invalid because the invalid bit has\nbeen reset.\n\nIt is not sufficient to check for the invalid bit, I should\nalso check that identities match.\n"
    },
    {
      "commit": "cfc7010ef822fdd63b6486601edbac21549aec7a",
      "tree": "9df4b90cfcfa5a3aa6ccc61d2b5d41d9a45acbaf",
      "parents": [
        "ef8646344a7168643b50a51ebffa2e41e9717608"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:59:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:59:43 2009 -0700"
      },
      "message": "temporarily disable the use of glTexImage2D for sw buffers on sholes.\n\nwe\u0027re going to first cut a build without this change.\n\nApproved by Dr. Hiroshi.\n"
    },
    {
      "commit": "a4b740ed89074cda898a30eb1b029b0d3a5de1a5",
      "tree": "2c7f89741b0d58e569b1392372ac344b8023267e",
      "parents": [
        "b26af23744fa73e8bc142b1eb98772fde5970c10"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 18:20:39 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:24:26 2009 -0700"
      },
      "message": "fix [2168528] enable glTexImage2D code path in SF for software-only buffers\n"
    },
    {
      "commit": "3330b203039dea366d4981db1408a460134b2d2c",
      "tree": "f165f7801f2ee8034ad1edfd34e2b554fdaf662f",
      "parents": [
        "0ad3f9f4009c76b56f41da5d26eb7712dee938f1"
      ],
      "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": "0b3ad46a26dc3717260fa9347c77f673f3198606",
      "tree": "e101cea80b6258fa478b702cfef622747f3f9e39",
      "parents": [
        "c91af0c12e24d56262a2c100d9e46de26b33fb91"
      ],
      "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": "448f015966f367da1791942ffe0b47ae7f9e42ca",
      "tree": "2e7294269bc31b5460e7b93baffc70585e1345f0",
      "parents": [
        "02965e134d22a322cd51e6a2ed5c879824cfa6bf"
      ],
      "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": "df3e0b934f2822ea0a334777e51e681f04a64d7c",
      "tree": "188b19fa4ca3fdca0e9b56f1f712e8a5a99b2328",
      "parents": [
        "6656dbc81273424d9b4bf78c42a4e179dbe1cb71"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 30 14:07:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 30 14:07:22 2009 -0700"
      },
      "message": "fix [2152247] Windows sometimes drawn scaled up.\n"
    },
    {
      "commit": "6656dbc81273424d9b4bf78c42a4e179dbe1cb71",
      "tree": "8a4099c504d28f26b1e8cc33a4ff7b70303f12c1",
      "parents": [
        "7e4a587f6038bcf9b58ca615fce9e52fd47e30c3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 30 12:48:47 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 30 12:48:47 2009 -0700"
      },
      "message": "invalidate the surface when the physical changes"
    },
    {
      "commit": "7e4a587f6038bcf9b58ca615fce9e52fd47e30c3",
      "tree": "702cbd56ed6a468aeb2c3f590dd7824984e4cb38",
      "parents": [
        "ba6be54876a19444f0b214b4b3b0749df227b013"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 29 22:39:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 29 22:44:28 2009 -0700"
      },
      "message": "introduce the notion of the requested size in the Layer state\n"
    },
    {
      "commit": "ba6be54876a19444f0b214b4b3b0749df227b013",
      "tree": "e761d15078db22d62c6e18e02a2c3bc540361790",
      "parents": [
        "85ec55f8f5581fca2fc680d7775abc03f9a3be3e"
      ],
      "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": "85ec55f8f5581fca2fc680d7775abc03f9a3be3e",
      "tree": "c487b16d1adb61a8eb13af33971b08476d324de7",
      "parents": [
        "1e6c4eec172179d0a8ee568f2878ba51bd918e7c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 29 15:26:42 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 29 15:26:42 2009 -0700"
      },
      "message": "remove dead code\n"
    },
    {
      "commit": "8a77baaa11cb90f84d24f345463a856495be81a2",
      "tree": "4286963535921deb3bf955c990e604bdb1f6f6c0",
      "parents": [
        "0d0952445ba8a69690ae117cb6132f630f62132f"
      ],
      "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": "737e786acffe87a086720bf2cf0d8b9f818b12be",
      "tree": "589035870896c28f1988b9564063386378761469",
      "parents": [
        "a83302cb619511c26cdc43ee8c08c8b801e8c5ab"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 18:44:09 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 18:44:09 2009 -0700"
      },
      "message": "Allways dump the list of allocated buffers when an allocation fails.\n\nHopefully this will help us understand cases of failures such as [2148405]\n"
    },
    {
      "commit": "95a666b0e001ebf738418b89d8e8fd50b18110f8",
      "tree": "864a258efae49883ee0d85b66fbc6ba7201ef098",
      "parents": [
        "c5f0155d7f60b4eeb3194898c7772e18fd011402"
      ],
      "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": "401c257fba770a267f637184b1f532b4e03bed20",
      "tree": "5ed9e89c7436a7f738818287d7722ec6f98627b5",
      "parents": [
        "a2fe0a234bd6823f868742a3c137acb8875e1b03"
      ],
      "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"
    },
    {
      "commit": "a2fe0a234bd6823f868742a3c137acb8875e1b03",
      "tree": "42e6bcda7c6388e9b3544dec93f74fc85807faec",
      "parents": [
        "4327cf612b280fb51fe0ffb3c675be0413ad2744"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 18:34:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 18:55:02 2009 -0700"
      },
      "message": "fix [2142193] disable GL_LINEAR when not needed\n"
    },
    {
      "commit": "8c0a3d75c8823e179d19c6303f64e669975a4d85",
      "tree": "049b3fe9067777c0da2eb94c5c5118d3bda557d6",
      "parents": [
        "dd3423c6247965bf67ea30c75e484a6f5d72b1a2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 16:44:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 16:59:57 2009 -0700"
      },
      "message": "fix [2133214] STOPSHIP: revert I4a06bb4f: workaround for [2113743] Sholes: frozen then runtime restart going to list view\n\nRevert \"workaround for [2113743] Sholes: frozen then runtime restart going to list view\"\n\nThis reverts commit 4a06bb4f3355b0ef2b76aa883704da9d154c44ae.\n"
    },
    {
      "commit": "2944a2b3601ae5847cf54b3130dcf653a7b24b8a",
      "tree": "8a620fe5903ac32829c721d89ba589ef76fb87b5",
      "parents": [
        "15b047cfb2146e37c76df303b4a5720009ec0aed"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Sep 21 14:33:20 2009 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Sep 21 14:33:20 2009 -0700"
      },
      "message": "Work around gcc 4.0.3 bug.\n\nThis appears to fix the sim-eng build on the gDapper build machines.\n\nBasic problem is that LayerBuffer::OverlaySource has a constructor that\ncalls SurfaceFlinger.signalEvent().  SurfaceFlinger lists LayerBuffer\nas a friend, but that\u0027s not enough to convince gcc that the embedded\nOverlaySource class is also a friend.  I don\u0027t see a way to make them\nfriendly, so I marked signalEvent() as public.\n"
    },
    {
      "commit": "1f0ffc46fdb391a4d5a096f6b8c4554937ca081f",
      "tree": "f2520c83e88292384adb70bd2d8b03fdd58db92b",
      "parents": [
        "03268374fe506458e50b6c0ad6d333077883bb5e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 22:04:50 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 20 17:08:45 2009 -0700"
      },
      "message": "workaround for [2113743] Sholes: frozen then runtime restart going to list view\n"
    },
    {
      "commit": "6d9f69843bae31b2da9a8f2869547b1ff5d0654d",
      "tree": "ddf9997a99de47b84c5ca2e62218cf957dd2cae9",
      "parents": [
        "84adf49fa1f5fdcb749150436295aeb5054bc2ce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 19:19:08 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 19:23:59 2009 -0700"
      },
      "message": "fix [2129080] Soft reboot after clicking around and then rubbing the screen\n"
    },
    {
      "commit": "74faca212e2675aa55a30235c77cb6403471a4b9",
      "tree": "4b990a9f0234ad504cce9e5734a978e940335945",
      "parents": [
        "1147de42a21f0d4f6873c63f22a4cdd1e4889088"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "message": "Android side of the fix for [2121211] Sholes has stutter during animations\n\na new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to\n"
    },
    {
      "commit": "86f7329080cbb6f70d56278b005c820f0360d84b",
      "tree": "bead00e53f19c5cd417135cc5bbb5c266b7750e4",
      "parents": [
        "5140a13b5eff0b9ba89cb954ba645ca468257548"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 01:35:28 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 01:35:28 2009 -0700"
      },
      "message": "add basic time stats for surfaces lock time\n"
    },
    {
      "commit": "5643261a2580172ff2a01b9157f61c2c016f7062",
      "tree": "18f7cf9acee40676562b1da3fa548e5752a5d93e",
      "parents": [
        "6df9d107a6234c028742209a4486862533ca75ae"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Wed Sep 16 14:48:52 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Sep 16 20:24:21 2009 -0700"
      },
      "message": "Overlay could not set position or rotation immediately after created, it should be triggered by signalEvent().\nOriginally from: https://partner.source.android.com/g/#change,1074\n"
    },
    {
      "commit": "0928bee979c8fa157e13e37e52ba9ad94e935237",
      "tree": "ad2dd7b6efea2685749ca63919fb01a31446553f",
      "parents": [
        "e8d23a23ee25069dd16a3aeb087ad6ea0f0f2fe9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 16 20:15:42 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 16 20:15:42 2009 -0700"
      },
      "message": "disable backbuffer preservation when possible, which may improve performance a bit\n"
    },
    {
      "commit": "caa600c4a1af1eefd108cf2ec3d86068af35111f",
      "tree": "52352fc6e797afa0cc59436e5bf7e317beccd131",
      "parents": [
        "378532fdb05814be7cbf03ec157abc95d296e203"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 16 18:27:24 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 16 18:27:24 2009 -0700"
      },
      "message": "fix [2119400] sholes: artifacting when switching orientation\n"
    },
    {
      "commit": "378532fdb05814be7cbf03ec157abc95d296e203",
      "tree": "447b90d210d64942022b58dbbea3e45365f71571",
      "parents": [
        "4666267b20274660d139c5c5d6ab4410422444de"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 16 17:00:19 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 16 17:00:19 2009 -0700"
      },
      "message": "fix again [2102410] Home Screen is not displayed in the background in Landscape Mode\n"
    },
    {
      "commit": "b8cfc0f9e1e2429010a98055678412ac94153925",
      "tree": "ebc73fd0eb5acb10d974d841a2242161d94a9d77",
      "parents": [
        "68a6afeb26002961387573dd64dd0ea3816bdc91"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 19:31:28 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 19:31:28 2009 -0700"
      },
      "message": "revert to black video background, since we don\u0027t need the color-key anylonger\n"
    },
    {
      "commit": "816d7d0268f98d891c44a8ac2e52711958abbf05",
      "tree": "b9a0abf4c6315c6984f9269b333f8f2b13ee8247",
      "parents": [
        "7ae8a14b7d18800e55befce263a6be9c7fc4f7e5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 18:10:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 18:10:30 2009 -0700"
      },
      "message": "add support for RGBX_8888 surfaces in SurfaceFlinger\n"
    },
    {
      "commit": "4790a3c1a2899d92868b3912453e020752faa88c",
      "tree": "4a25a5e62d1e82758808c6be254134306886d16f",
      "parents": [
        "c7d56010815b0e7104dfc1d4bba6d16cdcbffec4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 15:59:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 15:59:16 2009 -0700"
      },
      "message": "fix [2117464] SF can crash when calling dumpsys\n"
    },
    {
      "commit": "48d819a1315f7d1b5abfec9d4fd34fb5aed27b1d",
      "tree": "610ef98303e468061f68511380991e4b65bd547a",
      "parents": [
        "b58b5d72d6877300fe39b2a30b4742c6f962833f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 19:41:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 19:41:18 2009 -0700"
      },
      "message": "fix [2112575] stuck on DequeueCondition for a surface that doesn\u0027t exist anymore\n\nthis also fixes part of [2111536] Device is soft rebooted after ending the call through voice dialer\n"
    },
    {
      "commit": "a5b02e0b4dfc9947e373e17a383b397f6fcb751c",
      "tree": "b7c50baab768f61cb535e02fee7351bc650005a3",
      "parents": [
        "6ef94ce674107a7759256bac3163c57d3722996f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 04 18:49:03 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 19:20:10 2009 -0700"
      },
      "message": "add a debug property to disable h/w composition. debug.sf.hw, when set to 0 will disable h/w composition\n"
    },
    {
      "commit": "b6a5daa3ab653c15f21a97a1e869aade30355a50",
      "tree": "b81a3f55cd9c2f8efe4daf70ace9eb1b7d880595",
      "parents": [
        "4aeb7e9af2fd3643c964288f16e8a45f834f16ac"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 17:47:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 17:47:15 2009 -0700"
      },
      "message": "fix [2102410] Home Screen is not displayed in the background in Landscape Mode\n\nthe blurring code now handles NPOT textures.\n"
    },
    {
      "commit": "454ea681398a23a45e2a9c4f3b12d7c30fec8e3c",
      "tree": "288ba2ee6823f0227257be410abb880cd799a259",
      "parents": [
        "4d2de2c7696feccb9e5ecc05ac3281cdaae45418"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 08 23:52:08 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 00:50:29 2009 -0700"
      },
      "message": "fix [2037525] Fail to start camera after adb sync new Camera\n\nwe ended-up locking a Mutex that had been destroyed.\nThis happened because we gave an sp\u003cSource\u003e to the outside world,\nand were called after LayerBuffer had been destroyed.\n\nInstead we now give a wp\u003cLayerBuffer\u003e to the outside and have it\ndo the destruction.\n"
    },
    {
      "commit": "4d2de2c7696feccb9e5ecc05ac3281cdaae45418",
      "tree": "23274847d49bf4581786e0e37ba845eaaf78f38d",
      "parents": [
        "e40e5507007b15035b81811a5cc2298572e732a2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 08 20:02:47 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 08 22:48:24 2009 -0700"
      },
      "message": "rename Mutexes to make the code easier to follow\n"
    },
    {
      "commit": "8837e2f2e6247bb72bdd328c1fe07178ab160cb3",
      "tree": "28c838c4cde0faae29643ffc3976dddc6dc9ce8f",
      "parents": [
        "cbb288bfe89f585bf48371bd31b2d4aafa32f32e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:33:36 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:33:36 2009 -0700"
      },
      "message": "delete old and unused source files"
    },
    {
      "commit": "cbb288bfe89f585bf48371bd31b2d4aafa32f32e",
      "tree": "73d20f36910dcab8c17c686cdd7014cee285bc39",
      "parents": [
        "f0780974fc31ae88135d1dcb67cb5fd86bb6deb6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "message": "fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n\nRewrote SurfaceFlinger\u0027s buffer management from the ground-up.\nThe design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.\n\nThe main new feature is to be able to dequeue all buffers at once (very important when there are only two). \n\nA client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.\n\nThe current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.\n\neg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q\neg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q\n\n"
    },
    {
      "commit": "0852e674127780a458c96b4df0c1e73af8731f32",
      "tree": "fdad147c772d6e71d4a3a8aba169e09a5b41c3ee",
      "parents": [
        "89b9bd4655f5b60628409f9bd4117cafefc6d31b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 04 19:50:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 04 19:50:23 2009 -0700"
      },
      "message": "attempt to fix [2099362] Possible SurfaceFlinger crash\n"
    },
    {
      "commit": "888eee68dbe82f2fe613f4ffdd34c1154618577c",
      "tree": "548558cf714e94e2c674f27f23508a932046404b",
      "parents": [
        "348a950aa21e5580f124f46c75bcc63cea507204"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 04 17:27:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 04 17:27:16 2009 -0700"
      },
      "message": "fix [2098939] Smooth gradients show banding on Sholes\n"
    },
    {
      "commit": "29aa74c546751ed04d17dc248a967eebaef63b21",
      "tree": "1be0d48a6b95cc436ad5d17fb93a193c69f3a7f8",
      "parents": [
        "d06abf0cafca969668f321b55b80d3901694761c"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Tue Sep 01 23:06:45 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Wed Sep 02 15:57:42 2009 -0700"
      },
      "message": "Add colorkey to gl clear operation\n\nSigned-off-by: Rebecca Schultz Zavin \u003crebecca@android.com\u003e\n"
    },
    {
      "commit": "9795c42e557cfa37b9fd353ef7a2a7977a77f504",
      "tree": "d5d82843e6f352ddee5127025da8b06be250e42e",
      "parents": [
        "161f74cb6af758e77d6ce7e4750c2f9813a5f9f5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 26 16:36:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 26 16:55:50 2009 -0700"
      },
      "message": "dumpsys SurfaceFlinger will now always dump SF\u0027s state, even if SF is deadlocked\n(in this case the state is dumped without the proper locks held which could result to a crash)\n\nin addition, the last transaction and swap times are printed to the dump as well as the time spent\n*currently* in these function. For instance, if SF is unresponsive because eglSwapBuffers() is stuck,\nthis will show up here.\n"
    },
    {
      "commit": "1c97d2ebe1f035beabd90089bfc78326b73d7864",
      "tree": "f78d8eb4239a3abf418d2efd1de88e3b20005df9",
      "parents": [
        "50517543d84446fc91fa65c60eda6d2e2724de10"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "message": "fix a bug that caused the PixelFormat viewed by Surface to be wrong.\n\nwhat happened is that the efective pixel format is calculated by SF but Surface nevew had access to it directly.\nin particular this caused query(FORMAT) to return the requested format instead of the effective format.\n"
    },
    {
      "commit": "50517543d84446fc91fa65c60eda6d2e2724de10",
      "tree": "ea98f93e9f3f4c4cb7803787a14fdcfadc985dd7",
      "parents": [
        "139c1dee4412b17c7d05528b4afc0dd8586d25b8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:10:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:10:18 2009 -0700"
      },
      "message": "fix [2063336] Surface.lockSurface throws IllegalArgumentException when out of memory\n"
    },
    {
      "commit": "d66a97950e8ef64051a4d497a91e5508254f77f6",
      "tree": "b4e1606b9113b79aee9e81cc2b5d68d7ae2ccbd6",
      "parents": [
        "238a66e67b155d7e1fcdb19b672ffc0ae4a6fc94"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 19:08:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 19:08:00 2009 -0700"
      },
      "message": "fix a bug that could cause a window to be hidden in some cases.\n\nthis would happen is the window is made visible but the client didn\u0027t render yet into it. This happens often with SurfaceView.\nInstead of filling the window with solid black, SF would simply ignore it which could lead to more disturbing artifacts.\n\nin theory the window manager should not display a window before it has been drawn into, but it does happen occasionnaly.\n"
    },
    {
      "commit": "ccde199f7ce916e42a45b5a50e937d9c17904da2",
      "tree": "5c2898152809f167bf29fbb723c027c49730e463",
      "parents": [
        "400f18045af0fc39f95c7e5736808648d19b28b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 17:29:02 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 18:19:32 2009 -0700"
      },
      "message": "Surface::GPU and Surface::HARDWARE are now deprecated; they will be set automatically if needed.\n\nthis also ripples into the window manager API by making some constant there deprecated as well.\n"
    },
    {
      "commit": "8458a3140f51275d6b78b5879f942163c0d618e2",
      "tree": "f392a5f457572aef8b4626d722210aa016fc3a37",
      "parents": [
        "24e5f5290195e1c02c18730d0639efda65d64914"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:24:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:24:53 2009 -0700"
      },
      "message": "make sure EGL_ANDROID_swap_rectangle is actually supported before using it\n"
    },
    {
      "commit": "24e5f5290195e1c02c18730d0639efda65d64914",
      "tree": "ba706a2faa568c38f74c15c9583836472c98ab96",
      "parents": [
        "326f846e67c4f75709a11b215d4d2c59f4b73891"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:18:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:18:15 2009 -0700"
      },
      "message": "Better error handling in EGL extensions\n"
    }
  ],
  "next": "cf70e3301bcbfbdeb6a4fd04196f3e4ea5420c39"
}
