)]}'
{
  "log": [
    {
      "commit": "fcfeb4b5970c8f361634429934a2518d7e8328dd",
      "tree": "5a8337f84c6d707b28c9be732842555c622786d6",
      "parents": [
        "8addafe823381addbb8b9ca4edeca846fa13122f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 11:14:20 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 11:14:20 2010 -0800"
      },
      "message": "fixes for [2474091] Saw Poor behaviour playing a video.\n\n- fix a bug when hacking video buffers into gralloc buffers\n where the buffer size was incorrect this was causing the\n \"direct-form-texture\" mode to fail\n\n- also when the above fails, make sure to revert to the\n \"mdp copy mode\" before going to \"slow mode\"\n\n- finally disable completely the \"direct-from-texture\" mode\n for now. It cannot work because the allocated buffers can\u0027t\n respect the GPU constraints (alignment and such). We\u0027ll\n have to find a solution for that.\n"
    },
    {
      "commit": "c9e4a125464b389454619432cbdbcb2d9b11995a",
      "tree": "53e02445736e4c5be44cc088b9957ab1c0588abd",
      "parents": [
        "053c9e928bc8aa569572aea97430a63cb8fdc109"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 12 18:50:28 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 12 18:50:28 2010 -0800"
      },
      "message": "minor cleanup.\n"
    },
    {
      "commit": "a7e380396ea68b2247a61e6fc676724a976223f9",
      "tree": "b51aab06d63397e9688653e32ac4955e73140ab8",
      "parents": [
        "8dccb26901973722164f2a11551fd6d5c52081bf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 04 17:13:06 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 04 17:13:06 2010 -0800"
      },
      "message": "Add support for direct EGLImageKHR use with pushbuffer API\n\nWe now always first try to use the EGLImageKHR directly before\nmaking a copy with copybit. The copy may be needed when\nEGLImage doesn\u0027t support the requested format, which is\ncurrently the case with YUV.\n"
    },
    {
      "commit": "52e7200b6e020bba978c36e3a928493a3f2c8a92",
      "tree": "9c752d7d277ba2dfb9789763369a7373888557a2",
      "parents": [
        "d28d5be75b41fe48f486f9b83ae8685496983f5a"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 17:31:06 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 20:20:08 2010 -0800"
      },
      "message": "Add an orientation parameter for overlay, so we can do camera preview in portrait mode.\n"
    },
    {
      "commit": "edfd97c0f2e679e86699a0f6c4df65ea21ecff15",
      "tree": "45a7fb9ad27b7031e2ca5cfd26552aa10e4853a3",
      "parents": [
        "8c3b597aa7a627ab6979e58a173502cc505cb0df"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:04:56 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:29:34 2010 -0800"
      },
      "message": "fix [2324665] texture leak in surfaceflinger when using camera\n"
    },
    {
      "commit": "8c3b597aa7a627ab6979e58a173502cc505cb0df",
      "tree": "8bcb212e089d8641060c242710ef7fbc581fe46b",
      "parents": [
        "aa774c3e81d9ab685461ca0ab368086f669e4d1f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:27:30 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 21 16:27:30 2010 -0800"
      },
      "message": "fix a texture leak introduced recently.\n\ncreate the texture name once and for all for a given BufferSource\nand make sure to recreate it when we\u0027re forced to delete the texture.\n"
    },
    {
      "commit": "5fdea8d5b0a015433e01849a6c862c147e16346c",
      "tree": "aa64093317df178cde7b8252e600039826e7f7bd",
      "parents": [
        "ecc99c003b4aca7d7d2f268f927558db4cbddfe1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:31:53 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:31:53 2010 -0800"
      },
      "message": "fix [2363362] [Sapphire] Corrupted raw picture displayed during snapshot\n\nhandled all cases where the scale factor of a video is out of bounds of\nsupported scale factors in copybit.\n"
    },
    {
      "commit": "ecc99c003b4aca7d7d2f268f927558db4cbddfe1",
      "tree": "ce0d4257ccfca6dad1867d7e7e83ca85475cd51e",
      "parents": [
        "42d095aaa54a762ef74d219854aca8e1a7c6f5f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:56:07 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 14:07:44 2010 -0800"
      },
      "message": "part of fix for [2363362] [Sapphire] Corrupted raw picture displayed during snapshot\n\nmake sure to fallback properly to software when copybit operation fails.\nwith this change, the preview image will at least be displayed in b\u0026w\n(since GL doesn\u0027t support the yuv format). This would also fix\n2363506, but that one is now handled more cleanly.\n"
    },
    {
      "commit": "1faed6608655409cdd9c703cdbceedc03cb40bde",
      "tree": "d1322035bc57f859960ccefd2a4075a96ff32986",
      "parents": [
        "084e7c4ee8d4c6d54561347e2fe76bcdbd9f19da"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:24:14 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jan 20 13:24:14 2010 -0800"
      },
      "message": "fix [2363506] [Sapphire] Video playback broken\n\ndon\u0027t try to use copybit for incompatible buffers\n"
    },
    {
      "commit": "c5e181f8b347ad89874e0c6c7d2eea8d0465a478",
      "tree": "b637cb7ac5eabf5897345fbf7c39ce68ff9e6edb",
      "parents": [
        "cb94f70d5cfecf69f4f470497703befb270f6565"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 09 14:32:56 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 09 15:26:29 2009 -0800"
      },
      "message": "fix [2315900] Monochrome camera preview screen after launching camera\n\nthis was introduced by a recent change. when we try to figure out the size of\nthe yuv-\u003ergb temporary buffer, the output resolution has not been computed yet\nand an invalid buffer size is used. most of the time the allocation fails\nand the system reverts to \"standard\" GL will uses onle the Y plane.\n\nthe allocation of the temporary buffer is moved to onDraw(), the first\ntime it is called, by that time, the window is positioned properly.\n"
    },
    {
      "commit": "69ff5de1b7bdc763a77093f829d2aa2c6da99545",
      "tree": "fc65df9687a88093b1416557ebeeb25f83f80889",
      "parents": [
        "ac16968db1d225d0c019bb4e782d18c1ea8936f0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 08 19:29:38 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 08 19:29:38 2009 -0800"
      },
      "message": "improve video performance to minimize the tearing effect seen in 720p movies\n\nalways rescale videos to their target size using copybit during yuv-\u003ergb\nconversion. this improves performance of the GPU pass and doesn\u0027t require\nlinear filtering to be enabled. Also always use 16-bits buffers.\n\nthe average processing time for 720p dropped from ~50ms to ~30ms\n"
    },
    {
      "commit": "3e8a81e3546f4c065c49a08bbe7e04662db73577",
      "tree": "ccd05f7a81d5fcff15e83fec2eff3661fdc1c390",
      "parents": [
        "7b1451d360b72ab494af8d00302868e7208200ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 02 16:23:11 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Dec 02 16:23:11 2009 -0800"
      },
      "message": "fix [2291418] Camera preview cannot work in Emulator\n\nThe image buffer used by glTexImage2d() would be uninitialized when no copybit engine\ncan be found.\nWe now always initialize images, since the abscence of copybit is not necessarily fatal.\n"
    },
    {
      "commit": "713795a2e0d594618f45d3b83ac78a2dcbeb12e5",
      "tree": "9ac9e2e4c8150b4775a7549a43ca0d296a258b1f",
      "parents": [
        "574917c87f039edffa3873acc485ad775ce7a750"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 19 14:46:26 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 19 14:46:26 2009 -0800"
      },
      "message": "fix [2269022] The raw picture displayed post shutter seems to have low-resolution\n\nMake sure to always enable linear filtering in LayerBuffer. This change doesn\u0027t affect\ndevices using overlays.\n"
    },
    {
      "commit": "bbc21b01cf43f9b4815fcd8f7c1bbae06a1dd1a7",
      "tree": "76a4fd8e699994050a36aa17709d14a812018ad1",
      "parents": [
        "295fb83735cf70ef157d9280e53651821df067f3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Nov 05 23:08:00 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Nov 11 16:44:43 2009 -0800"
      },
      "message": "fix [2143798] Need to figure out how to do video on Passion w/ GPU\n\nThis builds on the EGLImage solution. We simply use copybit to convert from the\nYUV frame into an EGLImage created for that purpose and proceed with the\nregular EGLImage code.\nWe need to do this because \"regular\" GL doesn\u0027t support YUV textures.\n\nWe could improve upon this by detecting exacly what the GL supports and bypass\nthis extra step if not required, but we\u0027ll do this later if needed.\n"
    },
    {
      "commit": "6fee064809068fe1a7da63d55678d9a222b0be15",
      "tree": "119f2ce4dc9362a7e389eac87abe1a7d7c691c5c",
      "parents": [
        "aa628c911a6ec727f4cff0d664a9af5d91770828"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 02 17:48:33 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 02 17:48:33 2009 -0800"
      },
      "message": "fix[2228133] pixelflinger ignores the \"vertical stride\" leading to artifacts when playing back video\n\nwe lost the concept of vertical stride when moving video playback to EGLImage.\nHere we bring it back in a somewhat hacky-way that will work only for the\nsoftgl/mdp backend.\n"
    },
    {
      "commit": "863e5fdde858d732ac76320369b6304599f23b4c",
      "tree": "b8d374db3d255ee24a6884167238ad8955bd722b",
      "parents": [
        "df2d92940550bc68c3c237937bce7ac16d9fa91b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 29 18:29:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 30 14:48:50 2009 -0700"
      },
      "message": "fix[2222341] Soft reset while going back from camcorder settings\n\nadd a way to convert a mapped \"pushbuffer\" buffer to a gralloc handle\nwhich then can be safely used by surfaceflinger, without including\ngralloc_priv.h\n"
    },
    {
      "commit": "df2d92940550bc68c3c237937bce7ac16d9fa91b",
      "tree": "a21e5e8b9975cc71a6451739c5cc0e3a025e2c43",
      "parents": [
        "b0d0de329d73a70e8825ab9a7069b4c56645dc48"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 28 21:00:29 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 29 16:45:41 2009 -0700"
      },
      "message": "return proper error code from eglCreateImageKHR\n"
    },
    {
      "commit": "54ba51dff21de666c5ae3bf3abd4f0634ebb0676",
      "tree": "58a69dccdbfd227b9de3c58a416de45d2a8d3513",
      "parents": [
        "36bc94173c957f33f70bcd16c369951f5b2dc3f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 26 20:12:37 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 27 13:13:29 2009 -0700"
      },
      "message": "    fix [2143798] Need to figure out how to do video\n\n    Use EGLImageKHR instead of copybit directly.\n    We now have the basis to use streaming YUV textures (well, in fact\n    we already are). When/if we use the GPU instead of the MDP we\u0027ll\n    need to make sure it supports the appropriate YUV format.\n\n    Also make sure we compile if EGL_ANDROID_image_native_buffer is not supported\n"
    },
    {
      "commit": "3330b203039dea366d4981db1408a460134b2d2c",
      "tree": "f165f7801f2ee8034ad1edfd34e2b554fdaf662f",
      "parents": [
        "0ad3f9f4009c76b56f41da5d26eb7712dee938f1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 17:07:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2167050] glTexImage2D code path buggy in SurfaceFlinger\n\nWhen EGLImage extension is not available, SurfaceFlinger will fallback to using\nglTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an\nextra copy. However this code path has never been exercised and had some bugs\nwhich this patch fix.\n\nMainly the scale factor wasn\u0027t computed right when falling back on glDrawElements.\nWe also fallback to this mode of operation if a buffer doesn\u0027t have the adequate\nusage bits for EGLImage usage.\n\nThis changes only code that is currently not executed. Some refactoring was needed to\nkeep the change clean. This doesn\u0027t change anything functionaly.\n"
    },
    {
      "commit": "5643261a2580172ff2a01b9157f61c2c016f7062",
      "tree": "18f7cf9acee40676562b1da3fa548e5752a5d93e",
      "parents": [
        "6df9d107a6234c028742209a4486862533ca75ae"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Wed Sep 16 14:48:52 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Wed Sep 16 20:24:21 2009 -0700"
      },
      "message": "Overlay could not set position or rotation immediately after created, it should be triggered by signalEvent().\nOriginally from: https://partner.source.android.com/g/#change,1074\n"
    },
    {
      "commit": "b8cfc0f9e1e2429010a98055678412ac94153925",
      "tree": "ebc73fd0eb5acb10d974d841a2242161d94a9d77",
      "parents": [
        "68a6afeb26002961387573dd64dd0ea3816bdc91"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 19:31:28 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 19:31:28 2009 -0700"
      },
      "message": "revert to black video background, since we don\u0027t need the color-key anylonger\n"
    },
    {
      "commit": "454ea681398a23a45e2a9c4f3b12d7c30fec8e3c",
      "tree": "288ba2ee6823f0227257be410abb880cd799a259",
      "parents": [
        "4d2de2c7696feccb9e5ecc05ac3281cdaae45418"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 08 23:52:08 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 09 00:50:29 2009 -0700"
      },
      "message": "fix [2037525] Fail to start camera after adb sync new Camera\n\nwe ended-up locking a Mutex that had been destroyed.\nThis happened because we gave an sp\u003cSource\u003e to the outside world,\nand were called after LayerBuffer had been destroyed.\n\nInstead we now give a wp\u003cLayerBuffer\u003e to the outside and have it\ndo the destruction.\n"
    },
    {
      "commit": "4d2de2c7696feccb9e5ecc05ac3281cdaae45418",
      "tree": "23274847d49bf4581786e0e37ba845eaaf78f38d",
      "parents": [
        "e40e5507007b15035b81811a5cc2298572e732a2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 08 20:02:47 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 08 22:48:24 2009 -0700"
      },
      "message": "rename Mutexes to make the code easier to follow\n"
    },
    {
      "commit": "cbb288bfe89f585bf48371bd31b2d4aafa32f32e",
      "tree": "73d20f36910dcab8c17c686cdd7014cee285bc39",
      "parents": [
        "f0780974fc31ae88135d1dcb67cb5fd86bb6deb6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "message": "fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n\nRewrote SurfaceFlinger\u0027s buffer management from the ground-up.\nThe design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.\n\nThe main new feature is to be able to dequeue all buffers at once (very important when there are only two). \n\nA client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.\n\nThe current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.\n\neg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q\neg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q\n\n"
    },
    {
      "commit": "29aa74c546751ed04d17dc248a967eebaef63b21",
      "tree": "1be0d48a6b95cc436ad5d17fb93a193c69f3a7f8",
      "parents": [
        "d06abf0cafca969668f321b55b80d3901694761c"
      ],
      "author": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Tue Sep 01 23:06:45 2009 -0700"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Wed Sep 02 15:57:42 2009 -0700"
      },
      "message": "Add colorkey to gl clear operation\n\nSigned-off-by: Rebecca Schultz Zavin \u003crebecca@android.com\u003e\n"
    },
    {
      "commit": "cf70e3301bcbfbdeb6a4fd04196f3e4ea5420c39",
      "tree": "699d3012ce271d628248a235541547a8cce76dfb",
      "parents": [
        "5221271375f361b84a6eeec3d7086f223997fbb3"
      ],
      "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": "5221271375f361b84a6eeec3d7086f223997fbb3",
      "tree": "f65cab160cf38b9ed577f1cb5bc2f9882fc8631c",
      "parents": [
        "40ef81c7fce7cd1b028aec7b8b27b77ce6bf7b90"
      ],
      "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": "b2fd4665e66fe81969f1f07fd724c6f68dd8f7f1",
      "tree": "8564d48ba85748bdb281a3bcda22b41ed17c72e8",
      "parents": [
        "01b535185805d5b22c5fffc30833decdca308b5b"
      ],
      "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": "df37b62c62f8efd3b5a433f9b4d40d30cec13a31",
      "tree": "43c783e665b9e1c47210d3c5a8f929b33acda72f",
      "parents": [
        "d779f052b4180f347ed0bd725fdfedda504773e5"
      ],
      "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": "1000170033ec2fd7427cf72c81432384ad8a5286",
      "tree": "217f9b6edf452295c69a60c3d758a404ec825f8e",
      "parents": [
        "96df49bb7deaa33168040084021ff142963a086b"
      ],
      "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": "96df49bb7deaa33168040084021ff142963a086b",
      "tree": "fa941fbbc5ba2acffdbf4b3c45ccaa468b7e770d",
      "parents": [
        "569e36633c61f5cebb659db3a3696801e3935761"
      ],
      "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": "d512f238a6c439c422a229fe53a86dc386bd3b58",
      "tree": "b305f83c609313f1bc3f0c5f10f88c2d407ce5e0",
      "parents": [
        "958b3cac99cef204767b9c8f5bb8e20cbe1fc97b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 17:41:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 17:41:12 2009 -0700"
      },
      "message": "add support for out-of-range copybit scaling. camera capture is in color again\n"
    },
    {
      "commit": "240c9fe59e9db5807c88796f60889acc44ba845c",
      "tree": "cd793b55234d4b87cdc32a7ae52809691579f08a",
      "parents": [
        "2ab55a4e31c37d74abdd85486e1f4045c7f708e2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 15:39:25 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 15:39:25 2009 -0700"
      },
      "message": "use copybit for eglSwapBuffers() copy-back operations\n"
    },
    {
      "commit": "2ab55a4e31c37d74abdd85486e1f4045c7f708e2",
      "tree": "d4ff7f4fe7ac7a6078eb819077e1325d7938e28e",
      "parents": [
        "8d2e83b9f44c7f2207a312fcfda8eb3a4c26745f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 22:39:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 00:09:27 2009 -0700"
      },
      "message": "make use of new eglGetRenderBufferANDROID extension to clean-up a bit a few hacks added recently\n"
    },
    {
      "commit": "5911aa9510caad7c5d1dea849f9d2c8321fa9d7b",
      "tree": "acd8a122221e5473e7912ccba1f38bd94e3e291b",
      "parents": [
        "69029eb5abfaeb52716b84db89e32dc742551508"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 16:55:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 20:39:16 2009 -0700"
      },
      "message": "copybit now uses a native_handle_t* instead of a fd/offset\n"
    },
    {
      "commit": "69029eb5abfaeb52716b84db89e32dc742551508",
      "tree": "42f99fe892035c13c17fcee07582a607a5566355",
      "parents": [
        "4c4b387afb2e775fcac3b81a249bb7646515dffa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 23 21:11:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 20:39:16 2009 -0700"
      },
      "message": "hack copybit back in for video playback on msm7k. we have h/w accelerated video again\n"
    },
    {
      "commit": "2e123245811a1f31c080a29728fcc1655045f011",
      "tree": "bc8e84f4040daa648b819424a431ae1826203437",
      "parents": [
        "e7829b8656ab4d179aa608e5715280819e5230b5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 23 20:06:46 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 23 20:06:46 2009 -0700"
      },
      "message": "fix a bug causing push-buffer surfaces\u0027 identity to be garbage, which resulted in some attributes (size/pos) to fail to be set\n"
    },
    {
      "commit": "1fed11c86a9d59d0f5282ae8ae25ceba2f802fdd",
      "tree": "940032f8fb572ae8096b79027382ddb0538404fd",
      "parents": [
        "9f8b0c909760aa5b866255fe08042a3200b736cc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 23 18:08:22 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 23 18:08:22 2009 -0700"
      },
      "message": "checkpoint. bring back video/camera\n"
    },
    {
      "commit": "f9d932774e06d5122c48b47d8cabd791783f56d2",
      "tree": "e78c8148d0e3fcc166ebb3f4bd60c931ec956344",
      "parents": [
        "cd8c5e29c245e55a5f648b7a10f8586baf64e622"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 19 17:00:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 19 17:00:27 2009 -0700"
      },
      "message": "fix a memory corruption where a SF Client could be used after it\u0027s been destroyed\n"
    },
    {
      "commit": "0926f50664c739eaee60341f8e8c694dc9a4f3eb",
      "tree": "642597de2cc52f7636ae74f1a88f3706e3e54a4a",
      "parents": [
        "7be3e5d2d8101a8f5e12bbdf650431a734f88eba"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 14:17:04 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 14:17:04 2009 -0700"
      },
      "message": "update surfaceflinger, libui and libagl to the new gralloc api\n\n- Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually.\n- factor all the lock/unlock code in SurfaceBuffer.\n- fixed \"showupdate\" so it works even when we don\u0027t have preserving eglSwapBuffers().\n- improved the situation with the dirty-region and fixed a problem that caused GL apps to not update.\n- make use of LightRefBase() where needed, instead of duplicating its implementation\n- add LightRefBase::getStrongCount()\n- renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp\n\n- disabled copybits test, since it clashes with the new gralloc api\n\n- Camera/Video will be fixed later when we rework the overlay apis\n"
    },
    {
      "commit": "550b79f4491909b0f223d8fb25155974f53b3f79",
      "tree": "9cd9235bdff13ba7d36a46ad83b3d1b4ca29a1be",
      "parents": [
        "cbc93ca8005d0a885d54b9a13c18ea07220feedf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 22 15:49:28 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 24 16:31:11 2009 -0700"
      },
      "message": "get rid of an old hack to work around a bug around glDeleteTextures() in the adreno drivers\n"
    },
    {
      "commit": "9a11206fe793363c0e8897b478cbe6ef8c52b543",
      "tree": "0b7fc29027a6803e1ab992f47f0dd66c2a3e3843",
      "parents": [
        "9f88afb013a7560bf1362d7999a4609e38d0ea77"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 17 19:36:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 24 15:00:41 2009 -0700"
      },
      "message": "more Surface lifetime management\n\nSurfaces are now destroyed once all references from the clients are gone, but they go through a partial destruction as soon as the window manager requests it.\nThis last part is still buggy. see comments in SurfaceFlinger::destroySurface()\n"
    },
    {
      "commit": "076b1cc3a9b90aa5b381a1ed268ca0b548444c9b",
      "tree": "b87f7863623b37fa9a6cc4ef48934aab46f79986",
      "parents": [
        "4ec21527096d0dcaa99634e6058aca3a415461af"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 14:24:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 14:24:30 2009 -0700"
      },
      "message": "Integrate from //sandbox/mathias/donut/...@145728\n\nSurfaceFlinger rework for new EGL driver model support.\n"
    },
    {
      "commit": "edbf3b6af777b721cd2a1ef461947e51e88241e1",
      "tree": "f09427b843b192cccf8c3b5328cb81dddf6489fa",
      "parents": [
        "d5193d9394c5e58176d7bcdf50ef017f8a3b9e1e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d5193d9394c5e58176d7bcdf50ef017f8a3b9e1e",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "43aa2b1cbf7a03e248e10f4d0fec0463257cd52d"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "ac65e0b172b33f7e068c14e3d95678fa20205577",
      "tree": "4c290a9665c829ec3774425563260a94564fcb71",
      "parents": [
        "a6938bab1f6fa76ae98ebbe44f4e534e05fa0993"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:50 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:50 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@131421\n"
    },
    {
      "commit": "a6938bab1f6fa76ae98ebbe44f4e534e05fa0993",
      "tree": "bc5a1f806bd06db8abb197e80be9ead3644c0bcc",
      "parents": [
        "e41dd756db5184519f4dacbf4d95b333822605c7"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Feb 10 15:44:00 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@130745\n"
    },
    {
      "commit": "8a7a67538a9977c892389bfcde76a8372aa0b56c",
      "tree": "0782f82f223ddeafa9b08bd2121ded38212f67f7",
      "parents": [
        "276293246ea9cbc0a578a7697cc48930376ec0e9"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:10 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jan 15 16:12:10 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@126645\n"
    },
    {
      "commit": "276293246ea9cbc0a578a7697cc48930376ec0e9",
      "tree": "03804488c60dda65699333d2311c8d1842ec4b65",
      "parents": [
        "e09fd9e819c23dc90bca68375645e15544861330"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 09 17:51:23 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Jan 09 17:51:23 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@125939\n"
    },
    {
      "commit": "e09fd9e819c23dc90bca68375645e15544861330",
      "tree": "9a9fdadd1301625f875a3c126c986c79e3363ac4",
      "parents": [
        "7c1b96a165f970a09ed239bb4fb3f1b0d8f2a407"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Dec 17 18:05:43 2008 -0800"
      },
      "message": "Code drop from //branches/cupcake/...@124589\n"
    },
    {
      "commit": "7c1b96a165f970a09ed239bb4fb3f1b0d8f2a407",
      "tree": "df5a6539447324de36e95b057d6b9f0361b7a250",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
