)]}'
{
  "log": [
    {
      "commit": "f3503c2c30dc0b7eb7603998469f437136497c5c",
      "tree": "934ebd5f0c8da99a02cb7a4df77d908c54d34f02",
      "parents": [
        "9a817a35f11cb118209a3238451603258ae7f105"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 25 19:56:08 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 25 20:03:43 2011 -0700"
      },
      "message": "remove dead code and member variables.\n\nalso fix some comments and improve debugging logs.\n\nChange-Id: I83e55309f306332b59e1ec46104c4a7fffbf3c97\n"
    },
    {
      "commit": "9a817a35f11cb118209a3238451603258ae7f105",
      "tree": "eed99cf37fc29fe29b45a4635c1063ef60f903d5",
      "parents": [
        "c69aea2409ba4ec4db17a30357568dd31ced1516"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 25 13:57:16 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 25 13:57:16 2011 -0700"
      },
      "message": "fix a typo that prevented preserveRects() to work properly\n\nthis caused drawing artifacts during the screen rotation\nanimation of SurfaceView.\n\nChange-Id: Idcc996b6ca2e346135dd2264959670c0b086d4cb\n"
    },
    {
      "commit": "a5ed1454c469370ee0d0bb0221eba842c30e3ec1",
      "tree": "57bf441314fbde2ef3daad628c5111ecda8f0a11",
      "parents": [
        "45b63dd11c10927122e3eb3eae5ac702cb24f5b8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 22 15:25:20 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 22 15:25:20 2011 -0700"
      },
      "message": "Fix typo which caused invalid rotations to be returned with NATIVE_WINDOW_TRANSFORM_HINT\n\nBug: 4487161\nChange-Id: Ib2dfbbef15397b6d90695bd27f25849ca20704f1\n"
    },
    {
      "commit": "45b63dd11c10927122e3eb3eae5ac702cb24f5b8",
      "tree": "e9ced0732f120c5bf4d2d52a1221c1375e04e90e",
      "parents": [
        "0eecc27714d10b640bd8d40af8d1fb20aa3d29a0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 21 14:50:29 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 21 14:50:29 2011 -0700"
      },
      "message": "Fix a few issues with NATIVE_WINDOW_TRANSFORM_HINT\n\n- fixed uninitialized variable\n- set hint to indentity when transform is too complex\n- make sure FrameBufferNativeWindow doesn\u0027t fail on needed perform commands\n\nBug: 4487161\nChange-Id: I7cb2b0869b72404732eca7cb2d145ff669e2ed9b\n"
    },
    {
      "commit": "50c24a2000c785f8be2367e1fc7938a5eda5c9e8",
      "tree": "4f6b33dae6fad115e014290b2535c0b931c9d0a1",
      "parents": [
        "f07b8a3f691be39083fb5163f9456bcfa566f93f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 20 16:46:11 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 20 16:53:13 2011 -0700"
      },
      "message": "clean-up. get rid ofunused code and members in Surface[Control].cpp\n\nChange-Id: Ia7790ae28af2c2ac99eae01c2c5044ace4a490a4\n"
    },
    {
      "commit": "f07b8a3f691be39083fb5163f9456bcfa566f93f",
      "tree": "885f9fcbb020c630c2b0ea20b13ca2ee850e5f3b",
      "parents": [
        "ff86f37b95327538b97b6b8ef5d3c6ed0cd7f902"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 19 15:24:46 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 19 15:24:46 2011 -0700"
      },
      "message": "implement: \"Add an ANativeWindow API for SurfaceFlinger to suggest an optimal buffer orientation\"\n\nBug: 4487161\nChange-Id: I883f34efe542c2a566d04966f873374f40c50092\n"
    },
    {
      "commit": "ff86f37b95327538b97b6b8ef5d3c6ed0cd7f902",
      "tree": "59deccf2daa7d8c8167574cacf878a4ee279f149",
      "parents": [
        "09d7ed7b395d66be97c6bcb052039f5c0dce646c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 18 16:15:08 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 19 13:05:12 2011 -0700"
      },
      "message": "use SurfaceTexture new scaling mode in SF\n\nSF now obeys SurfaceTexture\u0027s scaling mode instead\nof inferring it from the buffer\u0027s size\n\nChange-Id: I4d50e9851abedd7e64bfcfc8af9eefb9fb668529\n"
    },
    {
      "commit": "ab95117be00ea8a207aaeefb4cb328db7d0f8848",
      "tree": "e8ee1cd2af962ce1a651664e1b7ee740ba4f14d3",
      "parents": [
        "4838151d181a5989d51a42e6dcbba6d66d7b5165"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 14 18:01:49 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 15 14:29:25 2011 -0700"
      },
      "message": "dump GLES strings in SF dumpsys log\n\nChange-Id: I438d511159b2bd915c84954f30574340017d4f47\n"
    },
    {
      "commit": "9e37abb636adbfce63e4b47f3148bd4b403eeb9b",
      "tree": "d355404da74e5c956a588ad9a7c1fc24c5ba8ee5",
      "parents": [
        "ad3f935ce9f3308edc62d56a0059e0761c720077"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 12 14:51:45 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 12 14:51:45 2011 -0700"
      },
      "message": "take the state transform into account with h/w composer hal\n\nif the state transform didn\u0027t preserve rectangles, we\nwould still try to use h/w composer hal using the bounds\nof the transformed rect, which isn\u0027t correct.\n\nnow we correctly fall back to composition.\n\nChange-Id: Iff78f4339ece415d4987e95a5717b04934d370ab\n"
    },
    {
      "commit": "bd882b1c8708686d373c56e07e6bb8b1cb6ffd9e",
      "tree": "b17fbae7a6ff475ab37be48046d0540d594f84fb",
      "parents": [
        "3f9dd287b99340efaaa257759e71a8f81b2ed113"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 11 22:12:16 2011 -0700"
      },
      "message": "Remove the simulator target from all makefiles.\nBug: 5010576\n\nChange-Id: I04d722f258951a3078fe07899f5bbe8aac02a8e8\n"
    },
    {
      "commit": "3a831d24e9147d737c6aaed72d84c1126c232368",
      "tree": "e4a12999afafab76b19be194ab17eb52ed89f33b",
      "parents": [
        "1861786a97209ed75010a54cca5167593dbfec21"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 07 17:30:31 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 08 14:37:06 2011 -0700"
      },
      "message": "fix screen on/off animation (again)\n\n- surfaceflinger now uses the GL-convention of\n  placing the origin in the left-bottom corner\n\n- map texture coordinates of the screen capture\n  properly\n\n- add the ability to control the animation\n  speed through a debug property\n\nBug: 4989276\n\nChange-Id: Ifb3297bb578078b47146fff666c01f85417e0d6f\n"
    },
    {
      "commit": "1861786a97209ed75010a54cca5167593dbfec21",
      "tree": "42aab3fccc20cd655d1d9ac4c1e6ad6108766ffa",
      "parents": [
        "0aaa30dc4859a8f181809eca13a6ec6ed61f3a9e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 06 16:35:30 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 08 14:37:05 2011 -0700"
      },
      "message": "Fix EGLUtils::selectConfigForPixelFormat()\n\n- renderscript now calls EGL directly instead of relying on this function\n- surfaceflinger also does its own EGLConfig selection\n- selectConfigForPixelFormat stays for legacy reason (many tests use it) but\nit now only tries to match the alpha channel of the format rather than the\nformat itself.\n\nthis will allow implementations who don\u0027t support the exact formats\ndefined in the HAL to work properly.\n\nBug: 4998223\n\nChange-Id: Ic664dfc14d5072a514b6f77a115d1521bfc1578f\n"
    },
    {
      "commit": "55aaccd7e8e3f5a4b0f4333c6bd2404eeac7bbb1",
      "tree": "6976d54969916a9a68872d2818c24475277ed8aa",
      "parents": [
        "7893c5e83c72566a049bb25f633bb7e361801342",
        "0c63ef5091def41e91a2202560c57b2f6caabfbe"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 06 11:10:31 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 06 11:10:31 2011 -0700"
      },
      "message": "Merge \"don\u0027t kill surfaceflinger when system process dies\""
    },
    {
      "commit": "0c63ef5091def41e91a2202560c57b2f6caabfbe",
      "tree": "afd2477bdbd864d00fe5d7c9d8068686b6f11c61",
      "parents": [
        "23b444a2e4e808262c22fa5254db9861eb961879"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 17:08:43 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 17:09:24 2011 -0700"
      },
      "message": "don\u0027t kill surfaceflinger when system process dies\n\nChange-Id: I2d3ed87b590f9ccea3fa4af41d92911de070b315\n"
    },
    {
      "commit": "eec0f7ebac85d3d1b1151e62b2ed0f25c138d447",
      "tree": "51e127d4082b8f5aaee347fbc195b74789762450",
      "parents": [
        "23b444a2e4e808262c22fa5254db9861eb961879"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 14:53:49 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 01 14:53:49 2011 -0700"
      },
      "message": "return an error code with gralloc buffer allocation failures\n\nChange-Id: I471e5d37ea7a42fc8a0f93446ee3b4229da37807\n"
    },
    {
      "commit": "753db22423bedf3a2d1b1f892da230a818ab60ac",
      "tree": "fd1101b75791b2ca92cea46789cb82e01178a51e",
      "parents": [
        "ace263902e6b8437fa1135cb9242e9c1c309cdf9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 30 16:23:39 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 30 16:23:39 2011 -0700"
      },
      "message": "fix screen on/off animation, which was flipped\n\nBug: 4673549\nChange-Id: Ia9766754687b89c1ee24b2dbe918c11290ebe038\n"
    },
    {
      "commit": "439863f3b3e725b5de1cba4940a21900369961c0",
      "tree": "90ab56432c2436c3392b02ba08876c86796a36ef",
      "parents": [
        "f1bfa84ccf61cad2b6ea9f2e6a612a54a38b79bc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 28 19:09:31 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 29 15:05:41 2011 -0700"
      },
      "message": "SF transactions are now O(1) wrt IPC instead of O(N).\n\nChange-Id: I57669852cbf6aabae244ea86940a08a5a27ffc43\n"
    },
    {
      "commit": "3cf7cf575138bcbe5b49c32eb4ae401f92e4c8f7",
      "tree": "f4712df1099d1cfa1ccf9f98825a9e84b1e7d258",
      "parents": [
        "d11eccf3a861fdaa754907a28cc0da554b9aa7b7",
        "9fb5976367911d0ab42d296238f0f06d517e867d"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jun 28 12:55:03 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 28 12:55:03 2011 -0700"
      },
      "message": "Merge changes I9fb59763,I8b2c6e00\n\n* changes:\n  SurfaceTexture: consume buffers after err checks\n  SurfaceTexture: change onFrameAvailable behavior\n"
    },
    {
      "commit": "0dd593f22352a0863223fa4ea7e37e926b99282e",
      "tree": "58d445ed41c6aea8184848490a9f47a2aa31a876",
      "parents": [
        "abb04eec06bce358826e4cb6b5f852424ece8005"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 27 16:05:52 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 27 17:42:15 2011 -0700"
      },
      "message": "PermissionCache caches permission checks\n\nThis is intended to absorb the cost of the IPC\nto the permission controller.\nCached permission checks cost about 3us, while\nfull blown ones are two orders of magnitude slower.\n\nCAVEAT: PermissionCache can only handle system\npermissions safely for now, because the cache is\nnot purged upon global permission changes.\n\nChange-Id: I8b8a5e71e191e3c01e8f792f253c379190eee62e\n"
    },
    {
      "commit": "bd5404d0312752e7c8946e8540129f0d2d97bcd7",
      "tree": "abdb05720d7149f0adee32a0f4ae9712cb57d78e",
      "parents": [
        "932e4e613987658383e23fa151c3f5b87d07f028"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jun 26 18:27:47 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Jun 27 15:45:39 2011 -0700"
      },
      "message": "SurfaceTexture: change onFrameAvailable behavior\n\nThis change alters the conditions under which the onFrameAvailable\ncallback gets called by the C++ SurfaceTexture class.  The new behavior\nis to call the callback whenever a frame gets queued that will be\nvisible to the buffer consumer.  This means that buffers queued in\nsynchronous mode always trigger the callback, as those buffers will\nremain pending until they are consumed.  Buffers queued in asynchronous\nmode will only trigger the callback if there was not previously an\nunconsumed buffer pending.\n\nThe new behavior means that a consumer should perform a draw operation\nexactly once for every onFrameAvailable call that it recieves.  This\nchange also modifies SurfaceFlinger and the SurfaceTexture JNI to\nsupport of the new behavior.\n\nChange-Id: I8b2c6e00961d3d58b11c6af50b555b6e4c5f5b40\n"
    },
    {
      "commit": "eb99f0d9f05dd37f988a815e6bc01bbd7152c31a",
      "tree": "eab0217d74f5887e680f0dbc57aca49acba2913a",
      "parents": [
        "a934219ca8d23a63e5a9f443fafd6d4ac9847c71"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jun 12 18:05:53 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 13 18:39:45 2011 -0700"
      },
      "message": "fix RefBase so it retains binary-compatibility with gingerbread\n\nBug: 4595257\nChange-Id: I0d5e10f497e3f39868bff58f6ded510c38b44b12\n"
    },
    {
      "commit": "7bb843ca0777111dae7daf8f1b0705817cf523c4",
      "tree": "10545edc3ce21f38282d5e67e5bc08ff729884b3",
      "parents": [
        "dfc7958a2eafba52db90743a4707eed1d780b63b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:20:59 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 13 15:51:35 2011 -0700"
      },
      "message": "unify SurfaceTexture and Surface\n\nAdd the concept of synchronous dequeueBuffer in SurfaceTexture\nImplement {Surface|SurfaceTextureClient}::setSwapInterval()\nAdd SurfaceTexture logging\nfix onFrameAvailable\n"
    },
    {
      "commit": "9e735541beed238d3b99d4bd284af1fc953c3775",
      "tree": "daf976d790b1737e9d3e23b1cd69c7d18cdeeeec",
      "parents": [
        "16fa5aae96ec7bb0ecf1578197b64d477bb6946e",
        "6960811d15eb66e8469330d3bc574c32c481db05"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 19 19:42:20 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 19 19:42:20 2011 -0700"
      },
      "message": "Merge \"Fix a race that could cause GL commands to be executed from the wrong thread.\""
    },
    {
      "commit": "6960811d15eb66e8469330d3bc574c32c481db05",
      "tree": "54cacea2d152ffa2035a9753638994c0815e43cb",
      "parents": [
        "6db8c505398a0979853f6c166e0a8bcafd9268f8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 19 15:38:14 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 19 19:40:02 2011 -0700"
      },
      "message": "Fix a race that could cause GL commands to be executed from the wrong thread.\n\nChange-Id: Ia3d407f7bf2f5553f46cfdade70b7b0badb35beb\n"
    },
    {
      "commit": "e69b2634d2486d8ee98727bdda105e1cd39623b8",
      "tree": "dec8bb061a140a545f75816b29cb8590f044c034",
      "parents": [
        "8318561e9a69f692531647fe28deecfee303a1dc"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon May 16 16:55:03 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon May 16 16:59:04 2011 -0700"
      },
      "message": "SurfaceFlinger: unfreeze windows for fixed size buffers.\n\nThis change makes SurfaceFlinger unfreeze a window if it ever gets a\nbuffer that is fixed-size.  Normally the window would not be frozen if\nits in fixed-size mode, but if the window was frozen before entering\nfixed-size mode then it should be unfrozen.\n\nChange-Id: I6bc822d4b02ae51fa8914c1f60f5d24b2002b38d\n"
    },
    {
      "commit": "6dcb1557efc546b74323b4367d9b7f674821e1e9",
      "tree": "5b4cdee8983139dbdf5857e55708c97570e3e373",
      "parents": [
        "e409851954f37c5411eb93565146ebb8cfd21bbd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 17:04:02 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 20:44:51 2011 -0700"
      },
      "message": "Fix a race in SurfaceFlinger that could cause layers to be leaked forever.\n\nThe transaction flags were atomically read-and-cleared to determine if\na transaction was needed, in the later case, mStateLock was taken to\nkeep the current state still during the transaction. This left a small\nwindow open, where a layer could be removed after the transaction flags\nwere checked but before the transaction was started holding the lock.\nIn that situation eTraversalNeeded would be set but only seen during the\nnext transaction cycle; however, because we\u0027re handling this transaction\n(because of another flag) it will be commited, \"loosing\" the information\nabout the layer being removed -- so when the next transaction cycle due\nto eTraversalNeeded starts, it won\u0027t notice that layers have been removed\nand won\u0027t populated the ditchedLayers array.\n\nChange-Id: Iedea9e25fee8dd98a0c5bd5ad41a20fcadf75b47\n"
    },
    {
      "commit": "b2a153adc9860616acdb96d7cdd64494d5a2a0f2",
      "tree": "3e87a5d9681d86ad68c14222774f77bc4bd3ae4a",
      "parents": [
        "be0cc36525f090032d1b84d95e1d8ba5fc714fc2"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sun May 01 11:33:26 2011 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 03 16:40:14 2011 -0700"
      },
      "message": "frameworks/base: android_native_buffer_t -\u003e ANativeWindowBuffer\n\nChange-Id: Idc2eabaa805bb6d308ebb315872623f28d428417\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "50a2f8f66173ebafdfe961c73aad4fd22e164b52",
      "tree": "6d5a85a6d8da123167c33ccd5cc76170a06f1766",
      "parents": [
        "1c6afcbf1f0daf3fb5eb3501656963e3a8a99e3b",
        "5fa7ad6fa1316036819ec506205888eac5512f68"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 16:34:06 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 03 16:34:06 2011 -0700"
      },
      "message": "Merge \"Fix a race-condtion in SurfaceFlinger that could lead to a crash.\""
    },
    {
      "commit": "5fa7ad6fa1316036819ec506205888eac5512f68",
      "tree": "9e2a6a9cb7c4dff7d9c28813cebee2f08435e396",
      "parents": [
        "939ccad344c5f32bc9e7dbfa80648c1e75cac62a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 16:21:41 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 03 16:21:41 2011 -0700"
      },
      "message": "Fix a race-condtion in SurfaceFlinger that could lead to a crash.\n\nClient::mLayers could be accessed from different threads.\nOn one side from Client::attachLayer() which is currently\ncalled from a binder thread; on the other side from\nClient::detachLayer() which is always called from the main\nthread.\n\nThis could lead to a corruption of Client::mLayers.\n\nWe fix this issue by adding an internal lock to Client.\n\nChange-Id: Ib1317d7750ed5030e6f577efe34b69fc10198bd3\n"
    },
    {
      "commit": "a31b3f2650dedf3cac596ed4763466ec605303e8",
      "tree": "dda820a8bb272033ac032b0f403529eed55e5ff3",
      "parents": [
        "981db85bf2a204f681c845f21332e5327f464a75",
        "08acaec6df66bd6a12b1e63016ed998abff4afdc"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Mon May 02 10:12:00 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 02 10:12:00 2011 -0700"
      },
      "message": "am 08acaec6: am a47c0d29: am 58e4a5e2: Merge \"Fixed to draw texture when loadTexture() is called at first time\"\n\n* commit \u002708acaec6df66bd6a12b1e63016ed998abff4afdc\u0027:\n  Fixed to draw texture when loadTexture() is called at first time\n"
    },
    {
      "commit": "08acaec6df66bd6a12b1e63016ed998abff4afdc",
      "tree": "b137a05d546d369c8a5243ec8c70e1ce22789b5e",
      "parents": [
        "737b5c58c9094e5759bd4162f23f73be2b71faaf",
        "a47c0d29bec7c242fb8d5ffe206c4c6ff85a178a"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Apr 29 17:15:35 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 29 17:15:35 2011 -0700"
      },
      "message": "am a47c0d29: am 58e4a5e2: Merge \"Fixed to draw texture when loadTexture() is called at first time\"\n\n* commit \u0027a47c0d29bec7c242fb8d5ffe206c4c6ff85a178a\u0027:\n  Fixed to draw texture when loadTexture() is called at first time\n"
    },
    {
      "commit": "58e4a5e2094c5003225fc715ee1a53b2461e71b1",
      "tree": "9aeccabda8af738ff0dda7489e5b62e938c7f016",
      "parents": [
        "9355a24af2a4985902f1e9ab4233df3fb831ef72",
        "222c221a1a0a848a1376b348cdfc8e28806857d7"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Apr 29 10:00:12 2011 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Fri Apr 29 10:00:12 2011 -0700"
      },
      "message": "Merge \"Fixed to draw texture when loadTexture() is called at first time\""
    },
    {
      "commit": "7ae9f08a179fa3b312b80826cfc3c6dc97b792ec",
      "tree": "7d9b8e8544afeb053adcae6f6237743ce87d4147",
      "parents": [
        "03daee6380772b0ab167a7b28e37d7a21ec89c86",
        "fbce6ac4cb9aebd795603fc2e315f6934bdabda7"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Fri Apr 29 09:59:30 2011 -0700"
      },
      "committer": {
        "name": "Android Code Review",
        "email": "code-review@android.com",
        "time": "Fri Apr 29 09:59:30 2011 -0700"
      },
      "message": "Merge \"Fixed to call computeVisibleRegions() when transparent value changed\""
    },
    {
      "commit": "b4a56f10d875dc62a9c73008f98596c7e32fc249",
      "tree": "5258eff2bba73aad718a47790270671e511f5f44",
      "parents": [
        "36f873c765fee84ec26b0e21021ef4c6edc78123",
        "ba5aebd106c61567ad6be905efd18902025735aa"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 27 13:54:08 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 27 13:54:08 2011 -0700"
      },
      "message": "am ba5aebd1: am ac505b86: am f0556bb9: am 86d1d747: Merge \"Add lock before calling initEglImage\"\n\n* commit \u0027ba5aebd106c61567ad6be905efd18902025735aa\u0027:\n  Add lock before calling initEglImage\n"
    },
    {
      "commit": "ba5aebd106c61567ad6be905efd18902025735aa",
      "tree": "af526858c576d9fb289a875a318057470761f19b",
      "parents": [
        "d84df05490e8b102e81cca848f65c174398be1b6",
        "ac505b86b45462d9883f9c36fad0ef85e0885ee4"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 27 13:41:12 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 27 13:41:12 2011 -0700"
      },
      "message": "am ac505b86: am f0556bb9: am 86d1d747: Merge \"Add lock before calling initEglImage\"\n\n* commit \u0027ac505b86b45462d9883f9c36fad0ef85e0885ee4\u0027:\n  Add lock before calling initEglImage\n"
    },
    {
      "commit": "f0556bb90ff38be96c6099f5efafe386cd7f1083",
      "tree": "4cd192fe57c542e31d2206117414d0c0ab972c88",
      "parents": [
        "30d59fa90ffa1f19674f21596175ccb5fd8febd2",
        "86d1d74762e65b6f64c2d4758aa5fd4af6275696"
      ],
      "author": {
        "name": "Conley Owens",
        "email": "cco3@android.com",
        "time": "Wed Apr 27 12:43:19 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Apr 27 12:43:19 2011 -0700"
      },
      "message": "am 86d1d747: Merge \"Add lock before calling initEglImage\"\n\n* commit \u002786d1d74762e65b6f64c2d4758aa5fd4af6275696\u0027:\n  Add lock before calling initEglImage\n"
    },
    {
      "commit": "9638e5c167be321643bf3f3ee39e3fb45541fb3b",
      "tree": "ec79a54e7f44db04b4b5cc7f09ba944f6836a258",
      "parents": [
        "2a231f8435dba525c838779e0fd44710ea23cd98"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:19:32 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 20 14:26:11 2011 -0700"
      },
      "message": "Get rid of the \"pid\" parameter from createSurface\n\nChange-Id: I28635e3f803e6abe965d79998e305f54a202465d\n"
    },
    {
      "commit": "9cc5a4e97c69bfb6ab5a8b80d61b30680a20d3d6",
      "tree": "e84673241d1aa4c50f9a98ff26f04078f685df83",
      "parents": [
        "57127bd7c8e133a1dbdfdd7935f39af7da7c5a59",
        "1a338b35be31775a581c4dd4aab99b212d948cc8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 19 18:19:15 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Apr 19 18:19:15 2011 -0700"
      },
      "message": "Merge \"remove support for console in SurfaceFlinger\""
    },
    {
      "commit": "1a338b35be31775a581c4dd4aab99b212d948cc8",
      "tree": "56fff98bf8bfca525a290cae364a04e089aee203",
      "parents": [
        "16f61049a872e80628c0004d75e184a6ddf73b02"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 18 16:25:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 18 18:09:53 2011 -0700"
      },
      "message": "remove support for console in SurfaceFlinger\n\nthe only supported screen management api now is\n/sys/power/wait_for_fb_{sleep|wake}\n\nChange-Id: I6c7d8d54843da4980b1b38ee3d46cf19be275240\n"
    },
    {
      "commit": "c94dce521b57763c6ace6cee206214fd476fe8f9",
      "tree": "4b756f471d09abf5ec88531935b2db0837d6a18a",
      "parents": [
        "16f61049a872e80628c0004d75e184a6ddf73b02"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 18 15:59:24 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 18 15:59:24 2011 -0700"
      },
      "message": "fix memory corruption when retriving GL_MAX_VIEWPORT_DIMS\n\nChange-Id: I2e0b1eac6dbc6a4ecbbaf31013aa02cf2369fce2\n"
    },
    {
      "commit": "8ecc90d00df9ca90dfbf505daa051eb2a05a14de",
      "tree": "c91635f737ccf9f2387ff63c64b53a3140e6b8e6",
      "parents": [
        "08d9d9a46250c4fad66e9b637e8898a3524c4286"
      ],
      "author": {
        "name": "Kobi Cohen Arazi",
        "email": "kobic@codeaurora.org",
        "time": "Fri Apr 15 10:38:33 2011 -0700"
      },
      "committer": {
        "name": "Kobi Cohen Arazi",
        "email": "kobic@codeaurora.org",
        "time": "Fri Apr 15 10:38:33 2011 -0700"
      },
      "message": "Add lock before calling initEglImage\n\nWithout that lock, there is a chance of race condition\nwhere while composing a specific index, requestBuf with\nthe same index can be executed and touch the\nsame data that is being used in initEglImage.\n(e.g. dirty flag in texture)\n"
    },
    {
      "commit": "5f05f99aaedaba18c426fac287bcb18d56dbe881",
      "tree": "791dab7fb51fb0e49663e9af9f8ac9f44f9242ec",
      "parents": [
        "7797e647fc8fcd5091b9449c0044f5cb70db5b47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 08 19:10:43 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 08 19:28:04 2011 -0700"
      },
      "message": "Fix a GraphicBuffer leak in SurfaceTexture\n\nThis leak was intentional, it was there to deal with the fact that\nsome gralloc implementations don\u0027t track buffer handles with\nfile-descriptors so buffers needed to stay alive until there were\nregistered, which is not guaranteed by binder transactions.\n\nIn this new implementation, we use a small BBinder holding a\nreference to the buffer, which with tuck into the parcel. This forces\nthe reference to stay alive until the parcel is destroyed, which\nis guaranteed (by construction) to happen after the buffer is\nregistered.\n\nthis allows the public facing API to not expose the previous hack.\n\nChange-Id: I1dd6cd83679a2b7457ad628169e2851acc027143\n"
    },
    {
      "commit": "c8a04b536bb8ad12a87e6dd68d66cff1e7fcd7e7",
      "tree": "8e8018a9898f9785eeef5e8484c93d51cee4f052",
      "parents": [
        "fb96b5ece35ed3c0f3e682d1f9864d7700fe63fc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 05 15:44:20 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 05 20:11:55 2011 -0700"
      },
      "message": "remove more unused references to ISurface\n\nChange-Id: I2201f1ca2bb8f203a081d94a0134f798778dfbef\n"
    },
    {
      "commit": "222c221a1a0a848a1376b348cdfc8e28806857d7",
      "tree": "f5b4ff4d223a747d29538793ecfa15c2e6384761",
      "parents": [
        "c6b22e2727bd3730edd5ad72831a9bb4670d00f3"
      ],
      "author": {
        "name": "Ichitaro Kohara",
        "email": "ichitaro.kohara@sonyericsson.com",
        "time": "Fri Feb 18 13:15:04 2011 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Tue Apr 05 08:58:44 2011 +0200"
      },
      "message": "Fixed to draw texture when loadTexture() is called at first time\n\nSW renderer of Stagefright reaches loadTexture() to draw image.\nThe first time loadTexture() is called, it just initializes OGL\ntexture, then returns. Thus, the first time call doesn\u0027t draw.\nThis patch fixes to move on to draw stage after the initialization.\n\nChange-Id: I3ec1ad68fb8d376a4ad7aefded1c18a002d175c4\n"
    },
    {
      "commit": "696257ccf315a1da042787c5b2d1f80c7146fc94",
      "tree": "39c185c6f97540243e5d071e545343822f46f2cc",
      "parents": [
        "1be6cce70175bd90744498d5fca95e3f9eec1cf6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 25 18:42:40 2011 -0700"
      },
      "message": "merge libsurfaceflinger_client into libgui\n\nthis is the first step in unifying surfacetexture and surface.\nfor this reason the header files were not moved, as most of them\nwill eventually go away.\n\nNOTE: currently we keep libsurfaceflinger_client.so as an empty\nlibrary to workaround prebuilt binaries wrongly linking against\nit.\n\nChange-Id: I130f0de2428e8579033dc41394d093f4e1431a00\n"
    },
    {
      "commit": "2ada5b865d7877ed854fe43c67df96c2d9c73596",
      "tree": "89d5e0d8d0753b4f974924390fca1e43cbb91036",
      "parents": [
        "a3d17a753d073b1f7425a495a17dec438c6894cd",
        "bd340c7b492fcf7d0a6cccab8825e710c83fe76d"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Mar 18 17:38:37 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Mar 18 17:38:37 2011 -0700"
      },
      "message": "am bd340c7b: am b368f4d8: am 38caff23: Merge \"SurfaceFlinger: Fix a typo.\" into honeycomb-mr1\n\n* commit \u0027bd340c7b492fcf7d0a6cccab8825e710c83fe76d\u0027:\n  SurfaceFlinger: Fix a typo.\n"
    },
    {
      "commit": "38caff230d1ee52701cc8cffde0309b91c2016d6",
      "tree": "65d8a23e917c73bba2ae885e7daa2980f17aafd0",
      "parents": [
        "a0dc8da2ab0a084432c7094e434b7957dd2eaf5c",
        "6912daf5fa5f07a0dd2738d6b21e04de066094b6"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Mar 18 17:32:25 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 18 17:32:25 2011 -0700"
      },
      "message": "Merge \"SurfaceFlinger: Fix a typo.\" into honeycomb-mr1"
    },
    {
      "commit": "6912daf5fa5f07a0dd2738d6b21e04de066094b6",
      "tree": "7824d70c4d7415041130b61dc80628bc8ee95b7f",
      "parents": [
        "73091273bb5160567f2230e1e7fcde5b0218ad9d"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Mar 18 16:35:13 2011 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Mar 18 16:35:13 2011 -0700"
      },
      "message": "SurfaceFlinger: Fix a typo.\n\nThis change makes Layer skip its cleanup of its old shared memory region\nwhen the UserClient object that owned the memory has been freed.\n\nBug: 3429357\nChange-Id: I9e4d8eb190f6914dc043674b9bb8dd28e959901b\n"
    },
    {
      "commit": "2120617f2fb10035022d1a3e76836a278a0e6a18",
      "tree": "f5de58fa47f2b0f50133a9a5b8d16e83e5746e91",
      "parents": [
        "0f3340cf992f5a40a6011c15154d9c907bdf65ab",
        "14438b81a1fe4d7ebdf8977f3d80a1dd1867c5ad"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 18:06:51 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 17 18:06:51 2011 -0700"
      },
      "message": "am 14438b81: am 970bad67: am be368de7: Merge \"Fix missing AOSP copyright headers for more files\" into honeycomb-mr1\n\n* commit \u002714438b81a1fe4d7ebdf8977f3d80a1dd1867c5ad\u0027:\n  Fix missing AOSP copyright headers for more files\n"
    },
    {
      "commit": "199d1c131d29b5356f71fbd7826a592c1dd8575f",
      "tree": "b02c7ab5a0662020447a3324c7a09c1d4294c5e0",
      "parents": [
        "2f1f2248c8439adbd686810e306c55f9e6a5abc3"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 11:48:13 2011 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Mar 17 14:43:12 2011 -0700"
      },
      "message": "Fix missing AOSP copyright headers for more files\n\no Update the copyright date on InputDispatcher_test.cpp and InputReader_test.cpp\n  because these two files were moved from other places to the current location,\n  and were actually created in 2010.\n\nbug - 4119349\n\nChange-Id: Ic93b81ddafb58e9e72a2e9e02ca3d9f173d6dca7\n"
    },
    {
      "commit": "48e122891afec8bfadaa9d7fdf731b8f711b5b91",
      "tree": "0c103210fc83805f971426337a4adbdfcb59aa1d",
      "parents": [
        "607a10c5c94e1f7a657a54c9ee8a9a9f31b50e25",
        "e22aa62362a3007ee59ac62d4b5969e216987995"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 17 00:13:49 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Mar 17 00:13:49 2011 -0700"
      },
      "message": "am e22aa623: am 25594e19: am f40e638e: fix [4093196] Device lock up - log spam with SharedBufferStack: waitForCondition(LockCondition) timed out\n\n* commit \u0027e22aa62362a3007ee59ac62d4b5969e216987995\u0027:\n  fix [4093196] Device lock up - log spam with SharedBufferStack: waitForCondition(LockCondition) timed out\n"
    },
    {
      "commit": "f40e638ec62cd9e1a1851809b7c8bf5e4187fad2",
      "tree": "fce830323935d7c7171c501278fb6c7ea9fdf9c8",
      "parents": [
        "7af7e00b9112f15d1683ae93975a6fcd9dd34da8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 16 23:18:07 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 17 00:04:42 2011 -0700"
      },
      "message": "fix [4093196] Device lock up - log spam with SharedBufferStack: waitForCondition(LockCondition) timed out\n\na memory corruption happned when the buffer pool was resized\n(like when playing a video or using camera) and there was\nno current active buffer. In this case, the faulty code\nwould index into an array at position -1 which corrupted\n24 bytes of data.\n\nalso improved region validation code (ifdef\u0027ed out by default)\n\nBug: 4093196\nChange-Id: I915c581d131148959d720e00e3892e9186ab733d\n"
    },
    {
      "commit": "f0ff906fa427ddc3293dc061e2ee34ce39c1336e",
      "tree": "48799f91df0137807b1ab64c3877dd9bfde52cbd",
      "parents": [
        "ccf94df600f452189fcb6bad5600e1af180695ad"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 11 16:54:47 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 11 17:01:40 2011 -0800"
      },
      "message": "Fix some const-ness and comments\n\nmDrawingState doesn\u0027t need to be accessed by the\nmStateLock, because by definition it\u0027s only accessed\nfrom the main thread.\n\nSimilarily, the list of layers in the drawing state\ncannot change (ie: is const).\n\nChange-Id: I2e5da7f4d8caee7af7802b432cd45cc81c7c08b0\n"
    },
    {
      "commit": "ccf94df600f452189fcb6bad5600e1af180695ad",
      "tree": "9986e3dd4648b9ab8fd902797357fd015f048fd3",
      "parents": [
        "9a3595c2c8895c1b158c91bf58ed2389dde8c66b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 11 17:01:07 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Mar 11 17:01:40 2011 -0800"
      },
      "message": "Fix initialization order warning.\n\nChange-Id: I794dfaaa3a2f2645a89abc6c45de5f76e485f7d0\n"
    },
    {
      "commit": "f667740d28eec82dabe89cc6f3e5a67f63451952",
      "tree": "307ef48fe59d2d0b46c01492dccff5319dade936",
      "parents": [
        "4c1ac4e66560f53625de28663c67e81a5f8f4401",
        "b6c0f51d6a7b5f143428fd507d0a586bbd0a4a6e"
      ],
      "author": {
        "name": "Eric Hassold",
        "email": "hassold@google.com",
        "time": "Fri Mar 11 15:08:16 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 11 15:08:16 2011 -0800"
      },
      "message": "Merge \"Default to NONE format in Layer\""
    },
    {
      "commit": "b6c0f51d6a7b5f143428fd507d0a586bbd0a4a6e",
      "tree": "f3fc6d8504315b73493c3d2a125e6cc1a0ee818a",
      "parents": [
        "36f822a4d95c64dc978f3b338da1e2c464623b72"
      ],
      "author": {
        "name": "Eric Hassold",
        "email": "hassold@google.com",
        "time": "Fri Mar 11 12:24:23 2011 -0800"
      },
      "committer": {
        "name": "Eric Hassold",
        "email": "hassold@google.com",
        "time": "Fri Mar 11 12:24:23 2011 -0800"
      },
      "message": "Default to NONE format in Layer\n\nmFormat is not initialized with any value in Layer constructor, causing\na call to requestFormat() with no explicit format specified to fallback to\nsome uninitialized value. Such invalid path actually detected by valgrind.\n\nChange-Id: Ib7faabcd61eaa26fb0ae7a9a486d9e258ba31b63\n"
    },
    {
      "commit": "f72606ce3ea8cb787e5c71325f08b1898e0718d9",
      "tree": "e81f8fb6a932f9660d8c65bde57fed694a18aacc",
      "parents": [
        "87e8ab372bd722c5c1a00ff5262acccee5dae5e5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Mar 09 17:05:02 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Mar 10 16:25:48 2011 -0800"
      },
      "message": "SurfaceFlinger: Respect the PROTECTED gralloc bit.\n\nThis change makes SurfaceFlinger treat layers for which the active\nbuffer has the GRALLOC_USAGE_PROTECTED bit set as if they have the\n\u0027secure\u0027 flag set.\n\nChange-Id: Ic60b6513a63e4bb92ec6ce9fd12fd39b4ba5f674\nBug: 4081304\n"
    },
    {
      "commit": "a15b5290f5785031ec4813fd7e141a9fc39c18fa",
      "tree": "e43a90734f8fc8cfed362f9a0d963662563b2ff2",
      "parents": [
        "b4341ba69750cb71a949525bde4ba962c54908e5",
        "33029221619f14577bd0d0e7c2f815abc8f1b8ea"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 09 17:11:10 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 09 17:11:10 2011 -0800"
      },
      "message": "am 33029221: Merge \"revert the surface purgatory list and dependent changes.\" into gingerbread\n\n* commit \u002733029221619f14577bd0d0e7c2f815abc8f1b8ea\u0027:\n  revert the surface purgatory list and dependent changes.\n"
    },
    {
      "commit": "cf8b94562c7cbd5c7ced01dca9bbca25011a04e8",
      "tree": "43b7b503da3806b5f9318a577ac1bca70bb9872f",
      "parents": [
        "bd0e806a61df9b67890dc3b1390db554e7468b4a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 09 16:13:31 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 09 17:00:41 2011 -0800"
      },
      "message": "revert the surface purgatory list and dependent changes.\n\n6d0f6cb Revert \"Fix [3513017] in lockscreen but showing empty launcher (live wallpaper) only\"\n6154412 Revert \"partially fix [3306150] HTML5 video with H/W acceleration blackout (DO NOT MERGE)\"\n37c2a37 fix [3408713] Dialog window invisible sometimes\n\nIt looks like there is a surface leak, it\u0027s unclear where it is.\nWithout those reverts, this would cause a leak of the associated buffers\nwhich is far more problematic. this change might hide the surface leak.\n\nBug: 4078032\nChange-Id: Iedcda3ffcdd2f69d41047b5c3134c1e867ff90d7\n"
    },
    {
      "commit": "d2acedf18c9a3527f6e3dc5d578a85fdc0ad4338",
      "tree": "06a23415d1486f5d7fb3e6d64640a1977f65dd86",
      "parents": [
        "6cc2bbe5cf8c959239d35972c0acac494e5c1559"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Mar 08 12:18:54 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Mar 08 16:49:51 2011 -0800"
      },
      "message": "ANativeWindow: add queues-to-window-composer check.\n\nThis change adds a new \u0027method\u0027 to the ANativeWindow interface to check\nwhether buffers queued to the window will be sent directly to the system\nwindow compositor.\n\nChange-Id: I4d4b199e328c110b68b250029aea650f03c8724d\nBug: 3495535\n"
    },
    {
      "commit": "de6a47a3e9d1a8cb5722b9785f5ffb9046c23918",
      "tree": "65d534f3ed68fc9110ea4bb3910fcf865ffb984b",
      "parents": [
        "10993b2d1e3614073970aad119ffb2cc9bc8f73f",
        "df6410dce3dae0bdb7e13118b3878079a1dcce03"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 07 18:04:06 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 07 18:04:06 2011 -0800"
      },
      "message": "am df6410dc: Merge \"Fix [3513017] in lockscreen but showing empty launcher (live wallpaper) only\" into gingerbread\n\n* commit \u0027df6410dce3dae0bdb7e13118b3878079a1dcce03\u0027:\n  Fix [3513017] in lockscreen but showing empty launcher (live wallpaper) only\n"
    },
    {
      "commit": "951d3fec41c8c77f5ce86a5394573e8180d93927",
      "tree": "49a8ec1a8241ba35781627b7562252e27efc2505",
      "parents": [
        "ff5a09904fb05f2776f1bbf1dd3915f38031190c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 09 18:38:55 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 07 16:56:16 2011 -0800"
      },
      "message": "Fix [3513017] in lockscreen but showing empty launcher (live wallpaper) only\n\n37c2a37 fix [3408713] Dialog window invisible sometimes\nd35c666 fix [3385504] Surface flinger hang when adding dim surface\n1723b04 fix [3389263] OMX.Nvidia.h264.decode fails to shutdown\n1b0114f fix a surface leak in SurfaceFlinger\n\nBug: 3513017\n\nChange-Id: Ia13ed8c9cdcb1f484e177cdcaff687e7c88a10c3\n"
    },
    {
      "commit": "32ae094d87cbb35f8b31acb7b83b430db62d5925",
      "tree": "5dd87a38a1afaa31170eb4f8fa2313fd97e2cb8c",
      "parents": [
        "7c4beadf57c893f17efc0550b13498a06958f90c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 02 18:45:50 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Mar 02 18:45:50 2011 -0800"
      },
      "message": "remove some logs\n\nChange-Id: Ia476184048ee419e19330a56dc8e6553189f6a24\n"
    },
    {
      "commit": "f272ad210c6834d92b4b4ddaacd069baedf90dcf",
      "tree": "439e94ac6d6017371b7a14797588b0f0273a83b7",
      "parents": [
        "47b500385196d11dcc68cf8c541f427d8459dad7",
        "0dc5fdb9b2fd3b3e2ede5e9607bc21423f357a01"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Feb 27 16:04:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Feb 27 16:04:42 2011 -0800"
      },
      "message": "am 0dc5fdb9: am e630e5f4: am 919853ce: Merge \"Prevent SurfaceFlinger from using layer token 31.\" into gingerbread\n\n* commit \u00270dc5fdb9b2fd3b3e2ede5e9607bc21423f357a01\u0027:\n  Prevent SurfaceFlinger from using layer token 31.\n"
    },
    {
      "commit": "0dc5fdb9b2fd3b3e2ede5e9607bc21423f357a01",
      "tree": "ac13c0be9758579d467da88f8e7675daee85146a",
      "parents": [
        "710c510b36a2d260736ca6d036365b18c86b1774",
        "e630e5f49ba15005172dceeda7299569b2d2351f"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Feb 27 15:55:21 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Feb 27 15:55:21 2011 -0800"
      },
      "message": "am e630e5f4: am 919853ce: Merge \"Prevent SurfaceFlinger from using layer token 31.\" into gingerbread\n\n* commit \u0027e630e5f49ba15005172dceeda7299569b2d2351f\u0027:\n  Prevent SurfaceFlinger from using layer token 31.\n"
    },
    {
      "commit": "e630e5f49ba15005172dceeda7299569b2d2351f",
      "tree": "891d6bd6a98c70e37e3993fec0ae906df6ac3bc3",
      "parents": [
        "6c5d9a0622ed33be8549f8d4dcdf597b0dc499cf",
        "919853ce244f853966817d4adb2f3b7b6e4bbe74"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Feb 27 15:44:36 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Feb 27 15:44:36 2011 -0800"
      },
      "message": "am 919853ce: Merge \"Prevent SurfaceFlinger from using layer token 31.\" into gingerbread\n\n* commit \u0027919853ce244f853966817d4adb2f3b7b6e4bbe74\u0027:\n  Prevent SurfaceFlinger from using layer token 31.\n"
    },
    {
      "commit": "d9896edfa3f523ba5fd80506e73b8c509b02db43",
      "tree": "4f4764f3fea0a172780762276616832ed67dd285",
      "parents": [
        "1beb48055208bca57c6bf9d26676f86386e3a5dc",
        "2ae32bdd7579ca6a9a336c74613185b21d39c8d4"
      ],
      "author": {
        "name": "Eric Hassold",
        "email": "hassold@google.com",
        "time": "Wed Feb 23 14:10:04 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 23 14:10:04 2011 -0800"
      },
      "message": "Merge \"Correctly handle translucency of device-specific pixel formats\""
    },
    {
      "commit": "fbce6ac4cb9aebd795603fc2e315f6934bdabda7",
      "tree": "781ce782d63380b5b5bc0c2d7cd461671975c5a1",
      "parents": [
        "93552de8e305027fb003401e347b9493c64c981f"
      ],
      "author": {
        "name": "Ichitaro Kohara",
        "email": "ichitaro.kohara@sonyericsson.com",
        "time": "Thu Feb 17 12:31:23 2011 +0100"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonyericsson.com",
        "time": "Thu Feb 17 12:31:23 2011 +0100"
      },
      "message": "Fixed to call computeVisibleRegions() when transparent value changed\n\nWhen some Surfaces are overlapping and one of them changed to\ntransparent or opaque, the back Surfaces should appear or\ndisappear. This patch calls SurfaceFlinger::computeVisibleRegions()\nto re-calculate region of each Surface to implement the behavior.\n\nChange-Id: Iffb1caf1b4ce28dff252e114fe5b9b07d9c84a6f\n"
    },
    {
      "commit": "1b0114f5db78c46b1f4c6a83e6d219bbe1e838e4",
      "tree": "7a25ab652de8dea11daaa3decf917fafd74d7cd6",
      "parents": [
        "0432ab44f37ac5abb5998cf9c3028ce20ecb8e6b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 15 19:01:06 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 16 15:31:07 2011 -0800"
      },
      "message": "fix a surface leak in SurfaceFlinger\n\nSF kept a strong reference to ISurface until the\nwindow manager removed the surface from the screen.\nThis fell appart when running standalone tests, that is\nwhen the window manager wasn\u0027t involved.\n\nWhen the window manager is around, it would clean-up surfaces\neven when an application died.\n\nwith this change, SF is able to do its own cleanup without\nrelying on the window manager.\n\nthe change is very simple, we simply don\u0027t keep a reference\nto ISurface and make sure no more than one of them can\nbe created.\n\nChange-Id: I61f2d7473bf8d4aa651549a846c34cdbb0d0c85a\n"
    },
    {
      "commit": "2ae32bdd7579ca6a9a336c74613185b21d39c8d4",
      "tree": "54057737faafcd5afb7c1d2469b697b9a242a5af",
      "parents": [
        "302b9884b3f0ecc96cc618643835d415e474cac3"
      ],
      "author": {
        "name": "Eric Hassold",
        "email": "hassold@google.com",
        "time": "Thu Feb 10 14:41:26 2011 -0800"
      },
      "committer": {
        "name": "Eric Hassold",
        "email": "hassold@google.com",
        "time": "Tue Feb 15 16:20:03 2011 -0800"
      },
      "message": "Correctly handle translucency of device-specific pixel formats\n\nCheck requested format for device-specific formats, and assume (as\ndocumented in libhardware/include/hardware/hardware.h) this is opaque\nlayer so no blending is necessary.\n\nBug: 3215931\nChange-Id: Ib4dff8060ac522d201ff1e74807ac340c17d3fa7\n"
    },
    {
      "commit": "c86d904b71be950ad973d803d1a19c6cd13be669",
      "tree": "bff2e5ca7e0e4972dab6da13f721ab79309a2242",
      "parents": [
        "58c9d4726ebf3165b0dbbcebb1130dfc5502bfe9"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Feb 10 16:18:36 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Feb 10 16:18:36 2011 -0800"
      },
      "message": "Prevent SurfaceFlinger from using layer token 31.\n\nBug: 2964479\nChange-Id: I81e948924bff35b8b300d409f2c09f3779bcdeec\n"
    },
    {
      "commit": "721f3a6ea3df863655b5b4d7af8c2049d35fb77a",
      "tree": "c111a47647ae4730a16a0a82d0e0521c7f1c1c02",
      "parents": [
        "4d8a596665dd73105b79081665df02f36ba53f27",
        "50b029d578fa06cd0733dcc7c69cb94f5f824908"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 02 16:46:46 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Feb 02 16:46:46 2011 -0800"
      },
      "message": "am 50b029d5: am 7ba35f5a: Merge \"[3418265] apply layer transformations to the DimLayer.\" into honeycomb\n\n* commit \u002750b029d578fa06cd0733dcc7c69cb94f5f824908\u0027:\n  [3418265] apply layer transformations to the DimLayer.\n"
    },
    {
      "commit": "6e138fb682fb84bfebff7f4ae4b88cef1996708c",
      "tree": "def24d98e6cb612cba0a486cf7d49c3587f04334",
      "parents": [
        "54b0a7f3ff0411a215e7e23f1041d414a32147b5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 02 16:03:19 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 02 16:05:39 2011 -0800"
      },
      "message": "[3418265] apply layer transformations to the DimLayer.\n\nwith this change DimLayers will behave just like any other layer,\nin particular they\u0027ll respect the layer transformations.\n\nChange-Id: Icb4a1275e8bca9e3deb5f57c9f9219aaa69f9877\n"
    },
    {
      "commit": "4453b1a5b64e5926f987227660de8c8c62695697",
      "tree": "247e12e540ede87b9ce812023082bbf5a664543c",
      "parents": [
        "4b91b4b117a907288c73d44cbdb946142904877e",
        "09443aeb6470d66f5bc1938b70d74b3e2f9bbbb9"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 30 15:05:42 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jan 30 15:05:42 2011 -0800"
      },
      "message": "am 09443aeb: am 62884505: Merge \"Reset ANativeWindow crop on buffer geometry changes.\" into honeycomb\n\n* commit \u002709443aeb6470d66f5bc1938b70d74b3e2f9bbbb9\u0027:\n  Reset ANativeWindow crop on buffer geometry changes.\n"
    },
    {
      "commit": "628845056282a0c5b1a212ce5aeeaac092b91ec8",
      "tree": "eac60b66d962192fbbc81b1c8ea401675483668f",
      "parents": [
        "71a22b3bc7cb4a721378ef38d43bce94f5b0e5bd",
        "2ece4cdc3fd0f8a45a889c711dba7165729e8ca5"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Jan 30 15:00:44 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sun Jan 30 15:00:44 2011 -0800"
      },
      "message": "Merge \"Reset ANativeWindow crop on buffer geometry changes.\" into honeycomb"
    },
    {
      "commit": "694f3e9cff69019f654b4a89ef793cc019cf6fbb",
      "tree": "0e69335490ac13b6af4f626ae58208eadbe79c4c",
      "parents": [
        "d6496188145a37248f977836df0331e7f0ee96ce",
        "8d778b375ccb4945cdcd7cc93272a6d36466ad00"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 28 18:43:08 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 28 18:43:08 2011 -0800"
      },
      "message": "am 8d778b37: am 231da079: Merge \"fix [3389263] OMX.Nvidia.h264.decode fails to shutdown\" into honeycomb\n\n* commit \u00278d778b375ccb4945cdcd7cc93272a6d36466ad00\u0027:\n  fix [3389263] OMX.Nvidia.h264.decode fails to shutdown\n"
    },
    {
      "commit": "1723b049c60a298e9016f40bbbaa13ca8fe69b65",
      "tree": "d131eec0d780382c361a8164e214b4466e567a79",
      "parents": [
        "10e4148b62c9bfed945c1bcea9dd5eea2a17b0d0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 28 18:23:24 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 28 18:23:24 2011 -0800"
      },
      "message": "fix [3389263] OMX.Nvidia.h264.decode fails to shutdown\n\nWe were still destroying an ANativeWindow\u0027s buffer pretty soon\nafter it was removed from the window manager. This time\nwe really wait for the ISurace to go away.\n\nChange-Id: I329273fedaeef76ee92836f6180c2c3808389330\n"
    },
    {
      "commit": "2ece4cdc3fd0f8a45a889c711dba7165729e8ca5",
      "tree": "a76c7f3eed692edcce369a6ae198202fdd1c7500",
      "parents": [
        "0982dc6488a921d9d54d23b9180a9acf33c61526"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jan 28 18:21:54 2011 -0800"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Jan 28 18:21:54 2011 -0800"
      },
      "message": "Reset ANativeWindow crop on buffer geometry changes.\n\nThis changes the ANativeWindow API and the two implementations to reset\nthe window\u0027s crop rectangle to be uncropped when the window\u0027s buffer\ngeometry is changed.\n\nBug: 3359604\nChange-Id: I64283dc8382ae687787ec0bebe6a5d5b4a0dcd6b\n"
    },
    {
      "commit": "d6f5bde96b2fe82bc7e5d4e64266d585108c4648",
      "tree": "323f31caa5ff13610218cfaca6ee69a0a2588227",
      "parents": [
        "bc2e3fe480f1c670e483eaa9b8092902dd78ddf7"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Wed Jan 19 15:27:27 2011 -0800"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Jan 28 08:04:00 2011 -0800"
      },
      "message": "Protected surface API\n\nTo be used by DRM framework, implemented by display HAL\n\nChange-Id: I054a07a94f4d5dbe792f3a597e2e49a100d90eb2\n"
    },
    {
      "commit": "d35c6667c8233385f31aa203f486b2cb826bf6be",
      "tree": "7e565ff5bc3df082b597ecd9d8f94bbff6a374e9",
      "parents": [
        "2aaa776429f58069e25c8160a9e5b9a969f6e993"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 20:17:45 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 20:52:46 2011 -0800"
      },
      "message": "fix [3385504] Surface flinger hang when adding dim surface\n\nChange-Id: I8e0cda414bcad5854d2ca5dde8370bfd8b2e5ea4\n"
    },
    {
      "commit": "df8368925acd4593a309e06548d7f900bf8d94df",
      "tree": "39c092306bd33c66952aa4be033f86f1318b5cb1",
      "parents": [
        "af4fa5d83d70a9af9ede67c47eae72d1db0d6d74",
        "239fd805ef7c0e4116b0a89e20caaf287e91f017"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:40 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:40 2011 -0800"
      },
      "message": "am 239fd805: Merge \"fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\" into gingerbread\n\n* commit \u0027239fd805ef7c0e4116b0a89e20caaf287e91f017\u0027:\n  fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\n"
    },
    {
      "commit": "af4fa5d83d70a9af9ede67c47eae72d1db0d6d74",
      "tree": "593550a0af25762d439edc984a78d4f724f02fd0",
      "parents": [
        "6b72702f305cf3aad80ed6e9f962280be745b588",
        "1955a5c9da421dc89bb1a1dd3d3193159192cde9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:35 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:35 2011 -0800"
      },
      "message": "am 1955a5c9: Merge \"partially fix [3306150] HTML5 video with H/W acceleration blackout (DO NOT MERGE)\" into gingerbread\n\n* commit \u00271955a5c9da421dc89bb1a1dd3d3193159192cde9\u0027:\n  partially fix [3306150] HTML5 video with H/W acceleration blackout (DO NOT MERGE)\n"
    },
    {
      "commit": "6b72702f305cf3aad80ed6e9f962280be745b588",
      "tree": "dc0c88645e3246728d26dfe3d20164765e95e2eb",
      "parents": [
        "2d665dd37a6677a1e8f3f753e1656780286cfa29",
        "d0441f921b2b1879fb44041f521d9bfaa5a547d0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:31 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:31 2011 -0800"
      },
      "message": "am d0441f92: Merge \"fix a small bug that caused screenshot to show garbage in some cases (DO NOT MERGE)\" into gingerbread\n\n* commit \u0027d0441f921b2b1879fb44041f521d9bfaa5a547d0\u0027:\n  fix a small bug that caused screenshot to show garbage in some cases (DO NOT MERGE)\n"
    },
    {
      "commit": "2d665dd37a6677a1e8f3f753e1656780286cfa29",
      "tree": "3de4f5a40c578aed9400da56c073f28ee01695c9",
      "parents": [
        "88bccab35c81907db09be3f511a2c1fd379a75b4",
        "043a3cddf67e2baf38711bcb125084599f8f9802"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:27 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:27 2011 -0800"
      },
      "message": "am 043a3cdd: Merge \"workaround [3201922] display not on: log full of gralloc errors (DO NOT MERGE)\" into gingerbread\n\n* commit \u0027043a3cddf67e2baf38711bcb125084599f8f9802\u0027:\n  workaround [3201922] display not on: log full of gralloc errors (DO NOT MERGE)\n"
    },
    {
      "commit": "88bccab35c81907db09be3f511a2c1fd379a75b4",
      "tree": "8482a2450b68473e7f00dbd92052a876e33b9a3b",
      "parents": [
        "eb645a15b95ba917ce360b135f92cbcb6df56104",
        "d3fcd0a1c923498921107bb44fbc8b24582a170a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:46:22 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jan 25 14:46:22 2011 -0800"
      },
      "message": "am d3fcd0a1: Merge \"minor clean-up. SurfaceFlinger doesn\\\u0027t need libpixelflinger.so. (DO NOT MERGE)\" into gingerbread\n\n* commit \u0027d3fcd0a1c923498921107bb44fbc8b24582a170a\u0027:\n  minor clean-up. SurfaceFlinger doesn\u0027t need libpixelflinger.so. (DO NOT MERGE)\n"
    },
    {
      "commit": "21956040a77808909ebda426fbd3cce6c8ed059f",
      "tree": "caef5eb4375780074435043e54323cd256c07dfc",
      "parents": [
        "68d3478860fecc9b8fbf256796a832a037434555"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 18 15:51:30 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:19:13 2011 -0800"
      },
      "message": "fix [3361121] hang in glClear() - device unresponsive, OTA fails (DO NOT MERGE)\n\nGenerally we never want to lock a buffer for write access if it is at\nthe \"head\" on the surfaceflinger side. The only exception (1) is when\nthe buffer is not currently in use AND there is at least one queued\nbuffer -- in which case, SurfaceFlinger will never use said buffer\nanymore, because on the next composition around, it will be able to\nretire the first queued buffer.\n\nThe logic above relies on SurfaceFlinger always retiring\nand locking a buffer before composition -- unfortunately this\ndidn\u0027t happen during a screenshot.\n\nThis could leave us in a situation where a buffer is locked by the\napplication for write, and used by SurfaceFlinger for texturing,\ncausing a hang.\n\nHere, we fix this issue by never assuming the exception (1), it was\nintended as an optimization allowing ANativeWindow::lockBuffer() to\nreturn sooner and was justified when most of SF composition was\ndone in software. The actual buffer locking is now ensured by\ngralloc. We could have handled screenshots in a similar way to\na regular composition, but it could have caused glitches on screen,\nessentially, taking a screenshot could cause to skip a frame.\n\nnow that we removed the notion of a \"inUse\" buffer in surfaceflinger\na lot of code can be simplified / removed.\n\nnoteworthy, the whole concept of \"unlockClient\" wrt. \"compositionComplete\"\nis also gone.\n"
    },
    {
      "commit": "68d3478860fecc9b8fbf256796a832a037434555",
      "tree": "1672d4b5edd7658c9a32b3bd2d933206e971a8b7",
      "parents": [
        "8aa11d82f33be8089a53feb3ba3c40fd8a33ad95"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 17:37:42 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:19:13 2011 -0800"
      },
      "message": "partially fix [3306150] HTML5 video with H/W acceleration blackout (DO NOT MERGE)\n\nWe used to guarantee that a layer in SurfaceFlinger would never be\ndestroyed before all references (to its ISurface) on the client\nside would be released. At some point, this guarantee got\nrelaxed to allow to free gralloc resources sooner. This last\nchange was incorrect, because:\n- in implementations with reference-counting the gralloc resources\nwouldn\u0027t be released anyways, until all the mapping were gone\n- in implementations without ref counting, the client side\nwould most likely crash or do something bad\n- it also caused the SharedBufferStack slot to be reallocated\nto another surface, which could be problematic if the client\ncontinued to use the surface after the window manager destroyed it.\n\nSo, we essentially reinstate the guarantee that layers won\u0027t be\ndestroyed until after all references to their ISurface are\nreleased.\n\nNOTE: This doesn\u0027t entirely fix 3306150 because there is another\nproblem there where the Browser continues to use a surface after it\nhas been destroyed.\n\nalso improve SurfaceFlinger \u0027dumpsys\u0027 log\n\nlist the purgatory, which shows windows that have been closed,\nbut for which the client still has references.\n"
    },
    {
      "commit": "8aa11d82f33be8089a53feb3ba3c40fd8a33ad95",
      "tree": "c29f00cc241a54b4f1eba03cdf23aab6982057a7",
      "parents": [
        "84c6f5a44c431a36a9e4395a7e23ab26480ba689"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Dec 16 18:46:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:18:58 2011 -0800"
      },
      "message": "fix a small bug that caused screenshot to show garbage in some cases (DO NOT MERGE)\n\nwe were not clearing the screen entirely, which caused garbage when\nthe screen wasn\u0027t entirely covered by windows.\n\nChange-Id: Ia7aa13c36a8a314e0e8427d419b16b9aa2165ddf\n"
    },
    {
      "commit": "84c6f5a44c431a36a9e4395a7e23ab26480ba689",
      "tree": "659eacdd03cc6e2b5d46c43db2333a4289faef43",
      "parents": [
        "728d849fc92bbf9b3bfd8c3903344ff58f3d5d06"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 15 14:41:59 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:18:29 2011 -0800"
      },
      "message": "workaround [3201922] display not on: log full of gralloc errors (DO NOT MERGE)\n\nwe make sure to call compositionComplete after everytime we do\ncomposition with the GPU (even for the screenshot case), which is\nwhere the buffer locks are released.\n\nChange-Id: I450430d1e4d1ee9ce1023970642378c42cdcfa4c\n"
    },
    {
      "commit": "728d849fc92bbf9b3bfd8c3903344ff58f3d5d06",
      "tree": "59811b37615d1e4d7c227b71cd3a378206449cb0",
      "parents": [
        "c929677e017759047d94599faa1b80ebe278fefb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Dec 13 16:47:31 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jan 25 14:18:15 2011 -0800"
      },
      "message": "minor clean-up. SurfaceFlinger doesn\u0027t need libpixelflinger.so. (DO NOT MERGE)\n\nChange-Id: I1ddbbbec4fa5b2521ef3787bc28efe1bc90d0060\n"
    },
    {
      "commit": "3431f47b47436210d441befb39f2d011b00bcdf2",
      "tree": "188e862b987b578b21d1f1b40a4301c2761a1080",
      "parents": [
        "d2d31dadb02b45bf938761bfb6264dc599d81b3d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 24 18:13:54 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jan 24 18:13:54 2011 -0800"
      },
      "message": "tone down the log spew regarding taking screenshots.\n\nChange-Id: I673806bda23eba6aab25f7505b7e0170afc9920b\n"
    },
    {
      "commit": "35e4a497f4463adb78d35a57f22847bec0eaab1a",
      "tree": "29e7cc807bdc1df38bbc9809533a75bbd37dfc5b",
      "parents": [
        "a423d868009b9961597365ce7f190aef23f4b1cc",
        "45491690d8f21d2648cad9247115720fa90046b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 12:25:33 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 20 12:25:33 2011 -0800"
      },
      "message": "Merge \"fix [3369743] SurfaceFlinger reads hardware composer hints before calling hwc.prepare()\" into honeycomb"
    },
    {
      "commit": "1d4549ab0312319a79fb37068a3fc63bbb0a3adc",
      "tree": "32a0c3dcb3fcae1354342ad938abb6a7d9c747e4",
      "parents": [
        "ed58d8ed8a50cbd8c5e01c4e51bcbbe4341d1dfd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 18:02:20 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 20 12:10:11 2011 -0800"
      },
      "message": "clean-up unneeded code\n\nnow that we removed the notion of a \"inUse\" buffer in surfaceflinger\na lot of code can be simplified / removed.\n\nnoteworthy, the whole concept of \"unlockClient\" wrt. \"compositionComplete\"\nis also gone.\n\nChange-Id: I210413d4c8c0998dae05c8620ebfc895d3e6233d\n"
    },
    {
      "commit": "06a61e2fa830fcd66c12741a52cc5d9b4b214f94",
      "tree": "896f71ee0d07174a573819a79ac9e0f15202ad1c",
      "parents": [
        "7a97ad421b50208dc2f484cc23fa3bb29331a713"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 16:15:53 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 16:15:53 2011 -0800"
      },
      "message": "improve SurfaceFlinger \u0027dumpsys\u0027 log\n\nlist the purgatory, which shows windows that have been closed,\nbut for which the client still has references.\n\nChange-Id: I5168bb88cb328d5d77d71d0871deb9190f493126\n"
    },
    {
      "commit": "45491690d8f21d2648cad9247115720fa90046b4",
      "tree": "7cfc78b00c20fc46fde954a5b57e3d64ab5176a0",
      "parents": [
        "7a97ad421b50208dc2f484cc23fa3bb29331a713"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 15:24:23 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 19 15:24:23 2011 -0800"
      },
      "message": "fix [3369743] SurfaceFlinger reads hardware composer hints before calling hwc.prepare()\n\nChange-Id: If3277c7b9d4cb8ef20d1706155fac7b87e64fb20\n"
    },
    {
      "commit": "cd2cfb6a15975af02a02c34783480eb858ee2928",
      "tree": "19ca52a6b7171352ab0b4df270878fb96dd2d846",
      "parents": [
        "6e72ff9082f82885d738f637d40bfe43d267107a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jan 16 14:05:02 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jan 16 17:25:26 2011 -0800"
      },
      "message": "Add logs when taking a screenshot to help tracking issue 3361121\n\nChange-Id: I61d1e072ebe7061ee1d7255f6121b684e2923d1b\n"
    },
    {
      "commit": "fd7a411aef7e1c7722456de09b3f3234bbb914d4",
      "tree": "00182b3b119aa9127062a36231da6f44c0aec40f",
      "parents": [
        "a7393dd66f0127c8acdd5f8928b0c2d0de602275",
        "f4dfe1bee6223add052b6f0ebc4cdb1f46606acc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 19:27:38 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 19:27:38 2011 -0800"
      },
      "message": "Merge \"partially fix [3306150] HTML5 video with H/W acceleration blackout\" into honeycomb"
    },
    {
      "commit": "f4dfe1bee6223add052b6f0ebc4cdb1f46606acc",
      "tree": "217a457de0e9f2df96b5c733b92c972d554552df",
      "parents": [
        "853548287ffe4eb85d1bd10669270292336d137a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 17:37:42 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 18:19:02 2011 -0800"
      },
      "message": "partially fix [3306150] HTML5 video with H/W acceleration blackout\n\nWe used to guarantee that a layer in SurfaceFlinger would never be\ndestroyed before all references (to its ISurface) on the client\nside would be released. At some point, this guarantee got\nrelaxed to allow to free gralloc resources sooner. This last\nchange was incorrect, because:\n- in implementations with reference-counting the gralloc resources\nwouldn\u0027t be released anyways, until all the mapping were gone\n- in implementations without ref counting, the client side\nwould most likely crash or do something bad\n- it also caused the SharedBufferStack slot to be reallocated\nto another surface, which could be problematic if the client\ncontinued to use the surface after the window manager destroyed it.\n\nSo, we essentially reinstate the guarantee that layers won\u0027t be\ndestroyed until after all references to their ISurface are\nreleased.\n\nNOTE: This doesn\u0027t entirely fix 3306150 because there is another\nproblem there where the Browser continues to use a surface after it\nhas been destroyed.\n\nChange-Id: I305c830dd722b30a6d53cbf3a9c714fd3cf7eb06\n"
    },
    {
      "commit": "010719c2fff4ab40757984f29d7755ff7f79e3de",
      "tree": "678676360e0babeeb897e5db890b48098f60d8cd",
      "parents": [
        "05db1af9bb42b4b2e668aba2dfcd61878a235764",
        "fb4dcb1a679000c029bb8e76fea7066d002235d5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 14 10:54:47 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 14 10:54:47 2011 -0800"
      },
      "message": "Merge \"fix [3312683] Camera mirroring problem after switching from back to front camera\" into honeycomb"
    },
    {
      "commit": "fb4dcb1a679000c029bb8e76fea7066d002235d5",
      "tree": "a049012cec990c6fdf23f59a53c688f9859fce25",
      "parents": [
        "853548287ffe4eb85d1bd10669270292336d137a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 13 17:53:01 2011 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 13 17:53:01 2011 -0800"
      },
      "message": "fix [3312683] Camera mirroring problem after switching from back to front camera\n\nthe crop as well as buffer orientation can change at every frame, when that happens\nwe need to reset the hwc HAL (ie: set the GEOMETRY_CHANGED flag).\ncurrently we achieve this by taking the same code path than an actual geometry change\nwhich is a bit more heavy than necessary.\n\nChange-Id: I751f9ed1eeec0c27db7df2e77d5d17c6bcc17a24\n"
    }
  ],
  "next": "f7acf162f8d682c6ebc9af41ca76795b79509193"
}
