)]}'
{
  "log": [
    {
      "commit": "f9b0e826689cca5ecbd40aa49f3ea7f7c73ad2a2",
      "tree": "3754aea1ac6f237145cddaadd66fba56d8abd939",
      "parents": [
        "7eb6ec1f44ade4c7bf3d23cbcfe29a17bbd940b1"
      ],
      "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": "083a557c25e0032bc4900f335b6643d0badd09ce",
      "tree": "9857c00ce37ca5faa422d7c710f7175b0cd3ff9e",
      "parents": [
        "b9b45a5e26ed020a39a507a173d9f29e336cf989"
      ],
      "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": "76169da0e84b0fcf621aeac6141af3ee85bc7c1e",
      "tree": "f1d58c4a189844408fc15b6c6dad1776c392031a",
      "parents": [
        "86ed86d2260932bdf2217b1d8431ac9e04d47534"
      ],
      "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": "b548dbb22595edc843f1d78ce97bafab1e626a89",
      "tree": "2b601bd8bc22ff4eb87db57fc1c624e8be12c2eb",
      "parents": [
        "90d1b745ec4a7ccd15cdcc185420bf2000b4f7a3"
      ],
      "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": "0019215fc395ef12c191049b1903eeabf70859cf",
      "tree": "f691468aed52d45ebd4e571a9ab09a11169aacc1",
      "parents": [
        "ae952b3bcc3eb744cceb5cd0ae65b2c7a83f9de7"
      ],
      "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": "00d0b54af1a6405366a659b34f0022dedf054ddf",
      "tree": "cd53e14a0a9770aa035ad0ffec6792908f3c7936",
      "parents": [
        "0a42b811aea490a9a605b75f0320101f6eafd283"
      ],
      "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": "d86beb99a7c9625daad01c4aaa5eaf4ca3ac2194",
      "tree": "b4bbba929ebc29b2ccb1aef1b7c44e115769e772",
      "parents": [
        "cc6ff2bc6011294367d9a8c644f811449e952eb7"
      ],
      "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": "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": "5469a4ac1c5073bde2c7caf8540a459c8fb759cd",
      "tree": "094c694a0ce3ac242554cbc6e5ef50c1ff987ec9",
      "parents": [
        "bb3bb57a6330f71323fcd7e93e88dbdab55daec3"
      ],
      "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": "bf0c320afbf6bf2441916755ecb443b64afbe73f",
      "tree": "3146d73b6db983d6c385dea14f70bab8a5f53135",
      "parents": [
        "16cc72bdef471ffeee3f61eba8262783de248b04"
      ],
      "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": "137dac6f10a1a727268bbea60955882baceeaaca",
      "tree": "e316635c53c6282f3d1d3ad256faedc790fdc070",
      "parents": [
        "74a331b5dd1d39da44b608743c36ab3523f598d2"
      ],
      "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": "4c29c9487e47c5f0a23790e670dc3dc7a215d04c",
      "tree": "b25d30c958fa14be7749a5453b471cd4535cc2eb",
      "parents": [
        "5994cd2898ad3c76d1f5068137a884024f521163"
      ],
      "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": "1c0bebbc9548dfe929f0f9db4473eb93af9339f5",
      "tree": "6a42ca05daf36ae91814f50c20ac6f101ca23a59",
      "parents": [
        "19e420c52dbe42e5b4b8b3580a5e7908cebec89d"
      ],
      "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": "830df4b16971527b07a829cf80a0c9e07a89b89a",
      "tree": "895d0c7a9734a5da6da54e8882e5c3462192c229",
      "parents": [
        "91e40e7838d183cb2a9e750edf0a6572f21da21d"
      ],
      "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": "90daccf3fd17553209b8951e4e80144f32ab7238",
      "tree": "76a2f42dbc6c2926fcee58a9a35be4904b2a0330",
      "parents": [
        "3e584fc944e3d694b4233450f386bd2a930420bf"
      ],
      "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": "36d0184e089831b74de6005f01da9e7b26679bb9",
      "tree": "8a6cb7b2f9e5c53db29bc818a403b26add0c66fe",
      "parents": [
        "989b76aadd92538c7ab4ca00c34508b42fda8cef"
      ],
      "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": "9baef73c9b2ea17a4eba997c45e944ac6b9af835",
      "tree": "8952ecb7c0fe6b116a751082387637f12241629f",
      "parents": [
        "d01767f8b7038108f9125cd2122b117db9919824",
        "d8b28e4fcddcacdbd2b69584a4e3aa12f52e8229"
      ],
      "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": "d01767f8b7038108f9125cd2122b117db9919824",
      "tree": "ec6353d79a856b6227eeeb474fd9c653cc142d95",
      "parents": [
        "f989c1140bbc84480498df38abec0fafff04e6ee",
        "0b0722f980f40e1ac0929a7f1a6e2df7af983478"
      ],
      "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": "f989c1140bbc84480498df38abec0fafff04e6ee",
      "tree": "88fa9b4256d04c5971c6652e04d8bdf9eeea26a9",
      "parents": [
        "1864d01f2be0e82da7d8844fa91bee8880282041",
        "f007a2faa1d765e9b53553a8214179b253e3cbbd"
      ],
      "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": "0b0722f980f40e1ac0929a7f1a6e2df7af983478",
      "tree": "f420562ab6642a7a4fa82e7db0443d10280ef4f2",
      "parents": [
        "f007a2faa1d765e9b53553a8214179b253e3cbbd"
      ],
      "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": "08c19beee4c8a2fce3f9d2baa78c9d436bedf65d",
      "tree": "11dc0de528135805a14cd6e63ec4c574160eb101",
      "parents": [
        "824838d74eb0316f6987a1d98d2d9e9fa8d4e15b"
      ],
      "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": "d8b28e4fcddcacdbd2b69584a4e3aa12f52e8229",
      "tree": "2be58bf1eca9c94caeb66a388ef1747d52b94005",
      "parents": [
        "ec1f1e3df1ca5e73e262df479bf91a92f3ccafde"
      ],
      "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": "f007a2faa1d765e9b53553a8214179b253e3cbbd",
      "tree": "7928e89551e22c634ab697673072128e2a2444ff",
      "parents": [
        "ec1f1e3df1ca5e73e262df479bf91a92f3ccafde"
      ],
      "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": "9042b4564de5477b18e680c7dce13b587a681dd9",
      "tree": "04872061371527ef76dbfff6ee0d6c8fdadb99bc",
      "parents": [
        "678cdbe55e0de71436f8aad5f139eafc2ab6f937"
      ],
      "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": "382e17d46fc54396a303593f2db3abe1fb911411",
      "tree": "718e2186139053ae9b3cf5dc07c7cbffb6b7cb5d",
      "parents": [
        "dd28d56368441537ec5eb42150516416fdbf10ad"
      ],
      "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": "46b2df153fccf7f918ee5d7d747c208bdd2d55f4",
      "tree": "1e3121c3916f0a23d15adf8bd10445db629b6ee4",
      "parents": [
        "a2de8e31c2693d009db1f9386406758874dd1d40"
      ],
      "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": "e05f07dffa196d6403733b26317faa9f267d518f",
      "tree": "24b7b263644927adbf8203da019f606d86a267c5",
      "parents": [
        "64dd5be583bab8218e54068bbf70edc5fc6087c8"
      ],
      "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": "460b60c9b064ef02e9eaf56ecf2f266fd7c4089c",
      "tree": "be7f73c6d0b1d0f22cfb171bff02c153ad5a14cd",
      "parents": [
        "773fd13130948397cac5178e16d17975a06a738b"
      ],
      "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": "26fe45dcb3df12eda94d93f1473cd6a2f5f345c7",
      "tree": "90e3487050e9ae74e3d5e8922cfd21c70d2f7082",
      "parents": [
        "62443f5f4517ba17d911975e695f1ab75bfdbf77",
        "4961c959aebac31991fd7653853d47dfd79d3472"
      ],
      "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": "4961c959aebac31991fd7653853d47dfd79d3472",
      "tree": "5d2837183bf21c756e84fd28a231a8e0674b76c5",
      "parents": [
        "9d6a685ba939f413a8d3e1e97627593aa1cdf6cb"
      ],
      "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": "c131c5671965b69b0dee3e4afa3b3dd5e3c0c405",
      "tree": "dc600befbe6c77a53b7be2337f6e7d85b4cf1a47",
      "parents": [
        "9d6a685ba939f413a8d3e1e97627593aa1cdf6cb"
      ],
      "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": "351a7073fb60eb3534ec8c69ab263f057a124500",
      "tree": "a054ba17c87524486ec48c6ac70854a5a5f64240",
      "parents": [
        "6f5f5a095a5a4d42fc656cf8c1e6d0f67594f88d"
      ],
      "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": "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": "bd23e30de410761af8c68afd8c4b27990e7a099a",
      "tree": "e895c2ed7e53b1a8dd636212f1aeb8128aff7f9f",
      "parents": [
        "70cab91229c3c2ca4bb75ab63b552ac7d1a6a8bb"
      ],
      "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": "70cab91229c3c2ca4bb75ab63b552ac7d1a6a8bb",
      "tree": "09cfd67a7edd7be37754e5ce5fe6d01b3ffd9f5d",
      "parents": [
        "e1b6f24423d61b7892e4a59f5a65b04231526712"
      ],
      "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": "e1b6f24423d61b7892e4a59f5a65b04231526712",
      "tree": "13ee13a164bea9004a05a76a0d751cbc66b226e7",
      "parents": [
        "8851617aea7d2cd61fd8a8585bd4414a14d71653"
      ],
      "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": "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": "45094a34f014fa79e78eea8ee2091021bf1de209",
      "tree": "bf30d341e493fcdd5a5f3b1ecd7169be7616bb06",
      "parents": [
        "a39f9188d6c1cdcacef2ab468fd78376171a3447"
      ],
      "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": "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": "c4646e654a18543be4e2f7d98f63bc4e603128e1",
      "tree": "334ee9d38c238da62365b10ef6e8a9f83f4a8244",
      "parents": [
        "954e98e023568b354aeec0a54668155ad9083398"
      ],
      "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": "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"
    },
    {
      "commit": "44cac134655d5c3b2eeab2e42792c70a7aa8b92f",
      "tree": "517d1519e56a14c4ebec42037af458c09b0c2b28",
      "parents": [
        "8434c5369304e639efe8eab368ca410c589d87c2"
      ],
      "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": "2e4b68d57bb64d7e93139238c5a8be91ff956c2a",
      "tree": "7604a70e3ed76b71cd472c8f1320719cd5bbc835",
      "parents": [
        "bc7261130a51dc9f3461d3970eee1b923bcbf193"
      ],
      "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": "fa0a4bde3fa520aa10de88239af04b45a3e28da0",
      "tree": "266be60c60e453239bdb356c854e419e129b259b",
      "parents": [
        "77fa24a5ef3ee3bc108d4bf3c77b7b4c7d0d5451"
      ],
      "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": "4a06bb4f3355b0ef2b76aa883704da9d154c44ae",
      "tree": "190a580772bf1cf941bde1bb924ba6a6f54f7619",
      "parents": [
        "0647b580aa7874311fc77b659e4f646750ddd74e"
      ],
      "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": "ac7f13bc1ac8af99093987ebcb811f3892b49296",
      "tree": "e2cd07d253de353a68db17ab2820710f8ccbe2aa",
      "parents": [
        "cd25c56ad442fd5574c1fa49e0d443a80551ee1f"
      ],
      "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": "b1a1874625a6aca967601fcda53a82d8d712df45",
      "tree": "3cf96bf9cc4bf734da47e58cab3c5421e7698139",
      "parents": [
        "d55de40481c6ec7d8fbd1a38c80a6c66bf462a71"
      ],
      "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": "bcef9ac35da08b9f7f8a4728af94c23a7a010669",
      "tree": "c13c342c0265bc0b94608695d90e3edb6f54a918",
      "parents": [
        "76f0111845f0886f522cfe1eb5ec1dee34181f7c"
      ],
      "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": "e38212a22f900468cc4a888b896bee99e1c29a1d",
      "tree": "c7a67eead4e701e8cc719a44f9163d735500b468",
      "parents": [
        "a6aca3e094719b181c9858aa57d6c2160c5cb16a"
      ],
      "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": "af369f6280c9eec0caa3f53f8e27f3713e1a7d25",
      "tree": "8021b39056c7e3e0ce50d8a6b26a4b6459aecbfa",
      "parents": [
        "75c4d498776a189f37e3d0294c9eda9ed51f6534"
      ],
      "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": "7cf03bace826631259aaa5ddc87a517e13bdee17",
      "tree": "48833f33eac1c4549761cc878f7945ae1cf2bbf0",
      "parents": [
        "2c68dd0483dd4f7b211bea32652d42c3c7cd602c"
      ],
      "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": "2c68dd0483dd4f7b211bea32652d42c3c7cd602c",
      "tree": "9474980fa006d2366d6b37b4772944ab8b28f698",
      "parents": [
        "9092ab4d458ad60b459d5fad52368bde5d25f665"
      ],
      "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": "8ae0384a78ee2b66a91a13fe1c2a80f0642feacd",
      "tree": "05310c9e19505fa0e5ac94ed28d246e59bcb0fa4",
      "parents": [
        "e611a6ed33d157b7ae15bdfe4e1873dc20ce7d48"
      ],
      "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": "64a7c6bf5b73c1a401cb2aa8dfad3898166ae326",
      "tree": "fe2f128d94e4576d7b353df06ef816cf3ceb181c",
      "parents": [
        "e7f47f50ad0a97e32c87104e56f311db910e98f1"
      ],
      "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": "53973fda84d3e19642373f50fc33f646e5673584",
      "tree": "7e8157febb5585db1b97d87ca1a1c309396ec186",
      "parents": [
        "bd8527110caa5427ade0edd7ce0d00e63f15ccbc"
      ],
      "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": "248b5bd51e325107f8119b564db6a06ac51c232a",
      "tree": "9a059822a1817d5ffb68d471f6e83ec20f583a89",
      "parents": [
        "436c627ca4228284caf363f0cb35947e58b841b9"
      ],
      "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": "24d237db943051942b5966f5e788d67050ec0ba5",
      "tree": "2a11231583c10a41798544bc14944ee38a9fbc2b",
      "parents": [
        "bbe14a1758a5b99689b7aa13a6d4f58e61705ebf"
      ],
      "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": "e7c11d770ab44656d32330ba585489bd284b4a47",
      "tree": "f3db961a4fadec5bb7cd9157d20a65192f2e3f41",
      "parents": [
        "16b72bbbc985cba7c59f52bf6969b4015f185830"
      ],
      "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": "a280496bd2ce04d6beff4536f2115a9a4d7568e4",
      "tree": "d796ce8eae898c35617bd3501b44c778e129fbfa",
      "parents": [
        "b34d143bce3905c23aa5c1b2b147ec6df48cf9d7"
      ],
      "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": "b34d143bce3905c23aa5c1b2b147ec6df48cf9d7",
      "tree": "eebed55688017c50a57955195c6bb03235a6855c",
      "parents": [
        "948ef29ebacde30bc2f1283b5e6d86f2413698c4"
      ],
      "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": "dc54f416a43cc1cb68bf9e81003fd200ea2dc648",
      "tree": "cf41b20c08c3e683dcc3df134399576c42c0799f",
      "parents": [
        "9779b221e999583ff89e0dfc40e56398737adbb3"
      ],
      "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": "9779b221e999583ff89e0dfc40e56398737adbb3",
      "tree": "76b185d252b95b05e8d74e7a1644b843f8839725",
      "parents": [
        "a4eb91da03bd785bc91bed0d25a9efaa9baba1c1"
      ],
      "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": "ffae4fcc78d0f280da6052d102b11962fb8041b7",
      "tree": "84620e6958dd21be6852de4b81fa87de50d5f5d9",
      "parents": [
        "9cc1817d46d8092865d8f1e7a6391dcae197a26a"
      ],
      "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": "7164b8d645f9463e36eda5eac3dd085e26427bda",
      "tree": "586d651992ef50d5e88d34f05afb706e4e927e57",
      "parents": [
        "c2042f5e4910c4f7c5b812787ad2b025d93da497"
      ],
      "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": "c8546781ff6fa26b3a7f2d1483db363f299a3898",
      "tree": "fc5fb4170153e3d0fc71a8b8f1753d6fb1a7a998",
      "parents": [
        "5e2a385c0d95f4a99dd8c562c6d2d79aa8546030"
      ],
      "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": "a8d49178f94e025be8be00460739315b9c273e4c",
      "tree": "7ccc645e6f9acb14a1e92b6d6163b641fe72937b",
      "parents": [
        "b89c9d422781d10c614af61b1519daed2b9086e2"
      ],
      "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": "18b6b49ea5235fb6c0802db9a0cc2c6dd20646cb",
      "tree": "99d8c9f592a961c1af7f583792f4178bce2cc89f",
      "parents": [
        "b2f8450db8dfbc05724624f93d9ec5e65f0b7e54"
      ],
      "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": "b2f8450db8dfbc05724624f93d9ec5e65f0b7e54",
      "tree": "f3e8c8c15de695ac033283e37acb0999b7502c3f",
      "parents": [
        "07782e079f4410090f87dca109e24e9436653654"
      ],
      "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": "c4915de8bb9454b8f10b0c9b7ac21e2bb7f65202",
      "tree": "b3d975906a93fdbbaad47334c867d0be768f07c7",
      "parents": [
        "f233915016a9053c23af6e4bceb319e7140f71bc"
      ],
      "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": "317a6280cc109e873646e4652be1582d870eedfd",
      "tree": "3b6d41d465282970f498e172b81ed0ee83e3183e",
      "parents": [
        "81655243a6a373cfde1e689970eeb62af19622d1"
      ],
      "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": "42fd8050ba2dafe0a697fb5a6929ba086ce80426",
      "tree": "38a8806a8042a67a87113d59f4e700f9fb667b30",
      "parents": [
        "88e3e6bd04dcf166ddd92ce3a84e1f9f54ac2f66"
      ],
      "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": "88e3e6bd04dcf166ddd92ce3a84e1f9f54ac2f66",
      "tree": "3bf9bea84e290f9fcadd914f366196f0e66adc3f",
      "parents": [
        "b5a72b0e14aefb658695bed8d2b598b701abaf3d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:18:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 12 21:18:15 2009 -0700"
      },
      "message": "Better error handling in EGL extensions\n"
    },
    {
      "commit": "2ec8458c5fd5b1bfad2d6e16b606f5acbcfa34cc",
      "tree": "2b81d3ecbac6fa27ca3c232f695445982d3727f0",
      "parents": [
        "5cec4742b3a1d7448bd32ae57cb4cf70b484c64c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 22:34:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 23:44:13 2009 -0700"
      },
      "message": "second take, hopefully this time it doesn\u0027t break one of the builds: \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n"
    },
    {
      "commit": "5cec4742b3a1d7448bd32ae57cb4cf70b484c64c",
      "tree": "9a3d6adb933fd0947ffc643e3d11f432a4baec4b",
      "parents": [
        "064dbd076d431a7508b864aa0993cd59ef743e4e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 22:34:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 23:32:29 2009 -0700"
      },
      "message": "second take, hopefully this time it doesn\u0027t break one of the builds: \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n"
    },
    {
      "commit": "64e89a8aff9a45a491f1d7064a655b9021fe644a",
      "tree": "5cad5d20370d2d77335324e55551ce2a2fe8b903",
      "parents": [
        "50cb54ff5cdb233d01e1dd94b355cbfe0a371520"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "message": "Revert \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n\nThis reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.\n"
    },
    {
      "commit": "8b76a0ac6fbf07254629ed1ea86af014d5abe050",
      "tree": "e492e09655269fff3ca14b6a62f9b07f2d484038",
      "parents": [
        "c5ea43920919eeaec4ec0686de9fa3d034d82337"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:59:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 16:12:56 2009 -0700"
      },
      "message": "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\n\nThis change makes SurfaceHolder.setType(GPU) obsolete (it\u0027s now ignored).\nAdded an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.\n"
    },
    {
      "commit": "4523b76803e1269171003a950fa3d5237ea2cdcb",
      "tree": "4802457b9a3d86d85117e08cbff273ec0641a411",
      "parents": [
        "e6f0f5c8fb4b6d249de5995545350fd95b2012f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:13:06 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:13:06 2009 -0700"
      },
      "message": "enable HW acceleration for the Dim Surface on 8k devices\n"
    },
    {
      "commit": "1d40f50de5a207351d5fe3f0eada2c8bf74dcd82",
      "tree": "69365f4cd6f797f3de6aa61d5c2026864a9c859b",
      "parents": [
        "db704e28aea24f86c62bb21a26225e9542c66c03"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 19:08:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 19:08:18 2009 -0700"
      },
      "message": "remove unused and confusing comment\n"
    },
    {
      "commit": "9ca4dd6011e30cbb3bc40cf0bba7d11362b8bc38",
      "tree": "99f450ba9637fdaa1a52d3b5a09a4d8d9bd42d5a",
      "parents": [
        "509dae53c54437eebd5291226e76c5456646f560"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:38:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:38:10 2009 -0700"
      },
      "message": "minor code clean-up\n"
    },
    {
      "commit": "265d9c076a588cf4cd811fbafd999c7ffe36641b",
      "tree": "8e4b8a390de2d36c8bd0e2a92d1907bdcbb99f04",
      "parents": [
        "25ec00fd13a6310d80a726cc9493a4b394056063"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "message": "added two EGL helpers for selecting a config matching a certain pixelformat or native window type\n"
    },
    {
      "commit": "cb21c37853cf67ab91ae324e7887a1561f879056",
      "tree": "d99f6560b7b3a25ba59c7972cfdc92911aa2ce2e",
      "parents": [
        "d186ef12b352c0e62fccd3243ed59a430b07837a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 16:44:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 03 15:08:16 2009 -0700"
      },
      "message": "free surface buffers before trying to allocate new ones, so we have more chance of success\n"
    },
    {
      "commit": "f293b2ff78ce4adac28962d020a0313fdb509cd2",
      "tree": "7015ecaa60d63957ca56e340d982de6301f47023",
      "parents": [
        "bad80e0dccdeaeea97991f7d092678ff0df1bc84"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 12:19:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 12:19:10 2009 -0700"
      },
      "message": "NPOT EGLimage without GL_ARB_texture_non_power_of_two would be improperly scalled\n\nThe current gralloc allocates buffer memory for render targets that will typically have NPOT dimensions. Assuming that the vendor driver supports converting the resulting NPOT android_native_buffer_t to a NPOT EGLImage, SurfaceFlinger calls glEGLImageTargetTexture2DOES(), and uses glGetError() to test whether the GL can support creating an EGL target texture with the specified NPOT EGLImage. If it is supported, the DIRECT_TEXTURE flag remains set, otherwise it is cleared.\n\nTangentially, if the driver advertises the GL_ARB_texture_non_power_of_two extension, the NPOT_EXTENSION flag is set, otherwise it is cleared.\n\nIf the driver supported creating an EGL target texture from a NPOT source EGLImage, it implicitly creates a NPOT texture. This does not need any glScalef() texture coordinate correction in LayerBase::drawWithOpenGL(). However, the same driver may not advertise the GL_ARB_texture_non_power_of_two extension nor generally support NPOT textures that were not derived from EGLImages. So SurfaceFlinger may flag only DIRECT_TEXTURE, not NPOT_EXTENSION.\n\nTherefore, the test in LayerBase::drawWithOpenGL() should only perform the glScalef() if neither NPOT_EXTENSION or DIRECT_TEXTURE are flagged. Otherwise scaling is applied to NPOT EGL target textures when none is required.\n"
    },
    {
      "commit": "b2b28f31228139395c6f4930c3374f758f68f501",
      "tree": "a9aac3fc2055f672502767e91410c9ed1bf4f948",
      "parents": [
        "afa7d85b43c6c2058cbde61ff287ff5776d76d2a",
        "1521cd6e657ba4efa9382ab73d3cbba3bdf50ead"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 29 14:47:41 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 29 14:47:41 2009 -0700"
      },
      "message": "am 1521cd6e: Merge change 8015 into donut\n\nMerge commit \u00271521cd6e657ba4efa9382ab73d3cbba3bdf50ead\u0027\n\n* commit \u00271521cd6e657ba4efa9382ab73d3cbba3bdf50ead\u0027:\n  Reset the mDpiX and mDpiY values when qemu.sf.lcd_density is defined.\n"
    },
    {
      "commit": "c915d0a33cda6cc16bf1685ccc0389787119a213",
      "tree": "e0d9f123a8187f9467517b20d35eaefe9178a6db",
      "parents": [
        "a0d128c8c601750dcbcf97342ffca7865b8a6f9e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 19:17:54 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 19:17:54 2009 -0700"
      },
      "message": "fix [1985856] Seg fault when using the soft keyboard in the Messaging app\n"
    },
    {
      "commit": "1521cd6e657ba4efa9382ab73d3cbba3bdf50ead",
      "tree": "ae3f7ad0e2152958f8d731354e08a3c49585d3fc",
      "parents": [
        "159e1a9a13ccfa4d99941e21068994366e2bbc7b",
        "d75fe9aa835b0811911e1727de8e15b329dafd49"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 16:16:38 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jul 28 16:16:38 2009 -0700"
      },
      "message": "Merge change 8015 into donut\n\n* changes:\n  Reset the mDpiX and mDpiY values when qemu.sf.lcd_density is defined.\n"
    },
    {
      "commit": "d75fe9aa835b0811911e1727de8e15b329dafd49",
      "tree": "baf987844168a4a4af49c1197c3d3587d3ad2ae5",
      "parents": [
        "9377738cdbb7eb0a1267cb536443cbed700ff5e9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 29 00:38:58 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 29 00:38:58 2009 +0200"
      },
      "message": "Reset the mDpiX and mDpiY values when qemu.sf.lcd_density is defined.\n\nThis will make android.view.Display return corresponding values for\nthe screen\u0027s DPI.\n"
    },
    {
      "commit": "33863dd9e1005478d20b70fad42e447ac97f5abf",
      "tree": "0092bdf625c8102ee649e4ebd41319b744b1cc86",
      "parents": [
        "5e7d68223a1061b296871cd157b4d9e81a1777ec",
        "ac38dfc5435b57281c97165e4de5b5a12af98a20"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 14:20:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 14:20:21 2009 -0700"
      },
      "message": "resolved conflicts for merge of ac38dfc5 to master\n"
    },
    {
      "commit": "12cedff50ca229a5d025e1011f1518c32e858138",
      "tree": "6ad4275e5195753480c5f04b84208b3a6245e6a6",
      "parents": [
        "ba989ad0ed91beda010d44945fa015d75d99cf67"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 10:57:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 10:57:27 2009 -0700"
      },
      "message": "fix [2017532] Partial Update leaves residual image.\n"
    },
    {
      "commit": "43ab76389ead0ef90e3d4fa883d5a58c34a6801b",
      "tree": "0646d5b10bf9a386fc95e87427ab027cab13a124",
      "parents": [
        "7ac5e698b216a1b1af97405b43adf2ad5bc40e7d"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Tue Jul 21 16:17:59 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Wed Jul 22 17:17:46 2009 -0700"
      },
      "message": "Add a flag to set whether the overlay has been initialized.  Commit needs to be called at least once on each overlay, and it appears that sometimes this\ndoesn\u0027t happen because the visibility never changes.  With this change\nthe overlay parameter and position will be committed when either the visibility\nof the window changes, or on the first call to visibility resolved, if it\nhasn\u0027t already been done.\n\nSigned-off-by: Rebecca Schultz Zavin \u003crebecca@android.com\u003e\n"
    },
    {
      "commit": "7ac5e698b216a1b1af97405b43adf2ad5bc40e7d",
      "tree": "fa2d7744aa16220e1dac8cb56e3effded22590a6",
      "parents": [
        "2f140bdb8a22a6328023a5cd7d19ecd57e6662d9"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Mon Jul 20 21:18:04 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Tue Jul 21 11:07:23 2009 -0700"
      },
      "message": "Fix hardware overlay so all changes are commited when done.\n"
    },
    {
      "commit": "ac2dd4d82f14b23387ec95b52663a1943fc5157d",
      "tree": "b26cba0691f2bc7c32b77a2aaa83b25763bbb77f",
      "parents": [
        "3a5351e4437fc2c220bc68a431bd4a1a00a653fa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 22:58:25 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 22:58:25 2009 -0700"
      },
      "message": "first attempt to fix the sim\n"
    },
    {
      "commit": "b1c4ca5ad21ae63cd5af2cfc1be82ba176d25195",
      "tree": "5a70f426d9b4cd75638a1b17ae2abd264c59eb55",
      "parents": [
        "56e7c2d6ebbde59555041e3550cbba6824486db1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jul 12 23:11:20 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 15:14:23 2009 -0700"
      },
      "message": "implement Mutex and Condition with pthread instead of calling futex directly.\n\ninternally pthread uses futex. the implementation consists of simple inlines\nthere are no implementation files anymore.\n"
    },
    {
      "commit": "f31d407ab849b7ac148b9d3a3f42100a2ecaa64c",
      "tree": "16ea068f322932dbc491f69422d0b637d376c0ca",
      "parents": [
        "7cd43797ae41406792f70a5623bb6d207e575526"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 10 17:00:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 10 17:00:00 2009 -0700"
      },
      "message": "fix [1967226] Donut orientation animation (dimming and blur) is slower than Cupcake\n"
    },
    {
      "commit": "b5af325fb1d21a9295bf3009cc95e5ead4999247",
      "tree": "27b45cfa3726041d8e7b3a9b89d41660847b86b5",
      "parents": [
        "88588d137baeaa657d95d9c00b1680f386b1ae83"
      ],
      "author": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Fri Jul 10 15:33:21 2009 -0400"
      },
      "committer": {
        "name": "Mike Reed",
        "email": "reed@google.com",
        "time": "Fri Jul 10 15:33:21 2009 -0400"
      },
      "message": "rename libsgl/libcorecg to libskia\n"
    },
    {
      "commit": "679353dab934e3d2ad203f136a3738798e2f3b59",
      "tree": "a24acd6f3b1afdc38a7423e733c5afda1c4bc9aa",
      "parents": [
        "07e456d871749c256ba94a7333d029344eafbdfb",
        "cafec0325010926130b03ce7ba50b2b180905e37"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 09 22:12:36 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 09 22:12:36 2009 -0700"
      },
      "message": "Merge change 6742\n\n* changes:\n  fix [1969200] Uninitialized double passed to Math.sqrt()\n"
    },
    {
      "commit": "cafec0325010926130b03ce7ba50b2b180905e37",
      "tree": "a0b400d443c679296076a85e11a8972450bc8b8f",
      "parents": [
        "e7622f3901234f238677c696a31c37838d315e6d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 22:11:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 22:11:57 2009 -0700"
      },
      "message": "fix [1969200] Uninitialized double passed to Math.sqrt()\n"
    },
    {
      "commit": "07e456d871749c256ba94a7333d029344eafbdfb",
      "tree": "128c5dd32ddf42f166b0dea709ba67d52a249b11",
      "parents": [
        "320a34aa4f591a1b1b5a3f9e6418e97045ded270",
        "4d2dbebf3d08209f751585d8cc367369e2f6e32f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 20:05:11 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 09 20:05:11 2009 -0700"
      },
      "message": "am 4d2dbebf: fix for [1885684] E/SurfaceFlinger( 60): not enough memory for layer bitmap size\u003d4294938624\n\nMerge commit \u00274d2dbebf3d08209f751585d8cc367369e2f6e32f\u0027\n\n* commit \u00274d2dbebf3d08209f751585d8cc367369e2f6e32f\u0027:\n  fix for [1885684] E/SurfaceFlinger( 60): not enough memory for layer bitmap size\u003d4294938624\n"
    }
  ],
  "next": "4d2dbebf3d08209f751585d8cc367369e2f6e32f"
}
