)]}'
{
  "log": [
    {
      "commit": "ab02873e8f4e235b0db800521dd0c969ed38c0b9",
      "tree": "54754cb5af99ddd885337a16410f180648b10728",
      "parents": [
        "b7f853e57b3ba884a9e5390baf004415c2556e61"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 16 16:41:46 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Mar 16 17:54:27 2010 -0700"
      },
      "message": "fix [2511580] Window poop on screen - drop down list left some residual when it resized\n\nChange-Id: Ib9a3622e7a568ba26717a93b5bfa4a191651f4d0\n"
    },
    {
      "commit": "948d69fca450a5a85e3e3e17d5776bfb26e48b85",
      "tree": "dced50dd4d2a0372405a728361a60cc503db1138",
      "parents": [
        "7d3f8ed3a5878e3dc8046eaa1fa0524a6ff51344"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:29:09 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 08 19:30:56 2010 -0800"
      },
      "message": "improve SF logging/debugging a little bit\n\nChange-Id: I6a57f89c25defc293fd748cc1fbd710031c02ec2\n"
    },
    {
      "commit": "064e1e672e62094b32f8cf7a77a3b04c3309dc79",
      "tree": "1bd60f1efaec92479bedb0cd7edf95dcc8098f12",
      "parents": [
        "285dbde2e0cd0057be070ded3be8f5f453147edc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 17:51:17 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 18:36:14 2010 -0800"
      },
      "message": "fix [2425395] portrait UI briefly shows in landscape\n\nthe \"freeze\" timeout was not initialized properly which caused it\nto kick-in immediately instead of after 5s\n"
    },
    {
      "commit": "285dbde2e0cd0057be070ded3be8f5f453147edc",
      "tree": "b9b6c52aae0b3dffef51d7113713ffad60a6a365",
      "parents": [
        "46a26c63ed0a4322551ae0d8bac3c558d45d20dc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 16:09:43 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Mar 01 18:34:50 2010 -0800"
      },
      "message": "Added a name to Surface created by SurfaceFlinger\n\nUpdated the window manager to use this new facility.\nSurfaces name are now printed by \"dumpsys\".\n"
    },
    {
      "commit": "45853c975907ac9b5c4c11e9f74caa2bd01fea24",
      "tree": "74d51c4e9413b2bcae28b47e10f67bb1fca558fa",
      "parents": [
        "32820ca5f93722969129446e18d290ba81a08a5f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 26 18:59:23 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Feb 26 18:59:23 2010 -0800"
      },
      "message": "to help debugging [2461567] Home screen redraw messed up\n\nlog SF\u0027s idea of the front buffer in dumpsys.\n"
    },
    {
      "commit": "eda65400f5ae301e26c5f52287d831f063069ec2",
      "tree": "7761c37543be75a8f97e40f86fac897edbf7f792",
      "parents": [
        "d2fa75683ad20749f97e12ac2f70e91e25f9def9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 22 03:15:57 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 22 17:30:40 2010 -0800"
      },
      "message": "remove a dependency of surfaceflinger on libskia\n\nlibskia was only used for a small part of SkTransform. We now implement\nTransform is surfaceflinger directly.\n"
    },
    {
      "commit": "2b92d89e23e1a2a07d0e0d01c00eed33ea580aff",
      "tree": "e48a80222a08d42335c728ecf493e6288c34a75d",
      "parents": [
        "1b26c6ae58f9f0e37fd0e3ae7c03a74efcdec904"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 08 15:49:35 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Feb 08 15:49:35 2010 -0800"
      },
      "message": "Add support for physically rotated displays\n\nThis feature is currently controled by a system property.\n\"ro.sf.hwrotation\" can be set to either 90 or 270. It\u0027ll cause\nSF to rotate the screen by 90 and 270 degres respectively.\n\nThat is, if the driver reports 800x480 for instance, and\nro.sf.hwrotation is set to 90, applications will \"see\" a\n480x800 display and will run in portrait.\n\nThis is implemented by introducing an extra \"display\"\ntransformation in the GraphicPlane.\n"
    },
    {
      "commit": "0408772e34931351d062f2088b611325ddaa6cdb",
      "tree": "20216060dace5fea9d84f39eae9d649091116745",
      "parents": [
        "18facb7c4d471e7a2d1e44f5ac1fcff056f96dcf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 01 17:23:28 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Dec 01 17:23:28 2009 -0800"
      },
      "message": "fix [2297155] SurfaceFlinger\u0027s freeze-timeout doesn\u0027t work\n\nThere was bug in the logic that calculated the relative timeout, the start time was\nreset each time an event was received, which caused the timeout to never occur if\nan application was constantly redrawing.\n\nNow we always check for a timeout when we come back from the waitEvent() and\nprocess the \"anti-freeze\" if needed, regardless of whether an event was received.\n"
    },
    {
      "commit": "3330b203039dea366d4981db1408a460134b2d2c",
      "tree": "f165f7801f2ee8034ad1edfd34e2b554fdaf662f",
      "parents": [
        "0ad3f9f4009c76b56f41da5d26eb7712dee938f1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 17:07:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2167050] glTexImage2D code path buggy in SurfaceFlinger\n\nWhen EGLImage extension is not available, SurfaceFlinger will fallback to using\nglTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an\nextra copy. However this code path has never been exercised and had some bugs\nwhich this patch fix.\n\nMainly the scale factor wasn\u0027t computed right when falling back on glDrawElements.\nWe also fallback to this mode of operation if a buffer doesn\u0027t have the adequate\nusage bits for EGLImage usage.\n\nThis changes only code that is currently not executed. Some refactoring was needed to\nkeep the change clean. This doesn\u0027t change anything functionaly.\n"
    },
    {
      "commit": "0b3ad46a26dc3717260fa9347c77f673f3198606",
      "tree": "e101cea80b6258fa478b702cfef622747f3f9e39",
      "parents": [
        "c91af0c12e24d56262a2c100d9e46de26b33fb91"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "message": "Attempt to fix [2152536] ANR in browser\n\nThe ANR is caused by SurfaceFlinger waiting for buffers of a removed surface to become availlable.\nWhen it is removed from the current list, a Surface is marked as NO_INIT, which causes SF to return\nimmediately in the above case. For some reason, the surface here wasn\u0027t marked as NO_INIT.\n\nThis change makes the code more robust by always (irregadless or errors) setting the NO_INIT status\nin all code paths where a surface is removed from the list.\n\nAdditionaly added more information in the logs, should this happen again.\n"
    },
    {
      "commit": "448f015966f367da1791942ffe0b47ae7f9e42ca",
      "tree": "2e7294269bc31b5460e7b93baffc70585e1345f0",
      "parents": [
        "02965e134d22a322cd51e6a2ed5c879824cfa6bf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 30 14:42:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 30 15:15:07 2009 -0700"
      },
      "message": "attempt to work around [2155085, 2150246] stuck in closeTransaction()\n"
    },
    {
      "commit": "ba6be54876a19444f0b214b4b3b0749df227b013",
      "tree": "e761d15078db22d62c6e18e02a2c3bc540361790",
      "parents": [
        "85ec55f8f5581fca2fc680d7775abc03f9a3be3e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 29 22:32:36 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 29 22:32:36 2009 -0700"
      },
      "message": "remove unused code"
    },
    {
      "commit": "8a77baaa11cb90f84d24f345463a856495be81a2",
      "tree": "4286963535921deb3bf955c990e604bdb1f6f6c0",
      "parents": [
        "0d0952445ba8a69690ae117cb6132f630f62132f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 22:47:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 27 22:47:32 2009 -0700"
      },
      "message": "don\u0027t emit GL commands when sf is in freeze mode\n\nWe were emitting GL commands, calling composition complete and releasing clients\nwithout ever calling eglSwapBuffers(), which is completely wrong on non-direct\nrenders. This could cause transient drawing artifacts when unfreezing the\nscreen (upon orientaion change for instance) and could also block the clients\nfor ever as they are waiting for their previous buffer to be rendered.\n"
    },
    {
      "commit": "95a666b0e001ebf738418b89d8e8fd50b18110f8",
      "tree": "864a258efae49883ee0d85b66fbc6ba7201ef098",
      "parents": [
        "c5f0155d7f60b4eeb3194898c7772e18fd011402"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 24 14:57:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 24 14:57:26 2009 -0700"
      },
      "message": "minor SurfaceFlinger code cleanup and remove unnecessary tests\n"
    },
    {
      "commit": "401c257fba770a267f637184b1f532b4e03bed20",
      "tree": "5ed9e89c7436a7f738818287d7722ec6f98627b5",
      "parents": [
        "a2fe0a234bd6823f868742a3c137acb8875e1b03"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 19:16:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 19:16:27 2009 -0700"
      },
      "message": "turn dithering off if it\u0027s not needed\n"
    },
    {
      "commit": "8c0a3d75c8823e179d19c6303f64e669975a4d85",
      "tree": "049b3fe9067777c0da2eb94c5c5118d3bda557d6",
      "parents": [
        "dd3423c6247965bf67ea30c75e484a6f5d72b1a2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 16:44:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 16:59:57 2009 -0700"
      },
      "message": "fix [2133214] STOPSHIP: revert I4a06bb4f: workaround for [2113743] Sholes: frozen then runtime restart going to list view\n\nRevert \"workaround for [2113743] Sholes: frozen then runtime restart going to list view\"\n\nThis reverts commit 4a06bb4f3355b0ef2b76aa883704da9d154c44ae.\n"
    },
    {
      "commit": "1f0ffc46fdb391a4d5a096f6b8c4554937ca081f",
      "tree": "f2520c83e88292384adb70bd2d8b03fdd58db92b",
      "parents": [
        "03268374fe506458e50b6c0ad6d333077883bb5e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 22:04:50 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Sep 20 17:08:45 2009 -0700"
      },
      "message": "workaround for [2113743] Sholes: frozen then runtime restart going to list view\n"
    },
    {
      "commit": "74faca212e2675aa55a30235c77cb6403471a4b9",
      "tree": "4b990a9f0234ad504cce9e5734a978e940335945",
      "parents": [
        "1147de42a21f0d4f6873c63f22a4cdd1e4889088"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "message": "Android side of the fix for [2121211] Sholes has stutter during animations\n\na new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to\n"
    },
    {
      "commit": "86f7329080cbb6f70d56278b005c820f0360d84b",
      "tree": "bead00e53f19c5cd417135cc5bbb5c266b7750e4",
      "parents": [
        "5140a13b5eff0b9ba89cb954ba645ca468257548"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 01:35:28 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 01:35:28 2009 -0700"
      },
      "message": "add basic time stats for surfaces lock time\n"
    },
    {
      "commit": "4790a3c1a2899d92868b3912453e020752faa88c",
      "tree": "4a25a5e62d1e82758808c6be254134306886d16f",
      "parents": [
        "c7d56010815b0e7104dfc1d4bba6d16cdcbffec4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 15:59:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 15:59:16 2009 -0700"
      },
      "message": "fix [2117464] SF can crash when calling dumpsys\n"
    },
    {
      "commit": "48d819a1315f7d1b5abfec9d4fd34fb5aed27b1d",
      "tree": "610ef98303e468061f68511380991e4b65bd547a",
      "parents": [
        "b58b5d72d6877300fe39b2a30b4742c6f962833f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 19:41:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 19:41:18 2009 -0700"
      },
      "message": "fix [2112575] stuck on DequeueCondition for a surface that doesn\u0027t exist anymore\n\nthis also fixes part of [2111536] Device is soft rebooted after ending the call through voice dialer\n"
    },
    {
      "commit": "cbb288bfe89f585bf48371bd31b2d4aafa32f32e",
      "tree": "73d20f36910dcab8c17c686cdd7014cee285bc39",
      "parents": [
        "f0780974fc31ae88135d1dcb67cb5fd86bb6deb6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "message": "fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n\nRewrote SurfaceFlinger\u0027s buffer management from the ground-up.\nThe design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.\n\nThe main new feature is to be able to dequeue all buffers at once (very important when there are only two). \n\nA client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.\n\nThe current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.\n\neg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q\neg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q\n\n"
    },
    {
      "commit": "0852e674127780a458c96b4df0c1e73af8731f32",
      "tree": "fdad147c772d6e71d4a3a8aba169e09a5b41c3ee",
      "parents": [
        "89b9bd4655f5b60628409f9bd4117cafefc6d31b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 04 19:50:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 04 19:50:23 2009 -0700"
      },
      "message": "attempt to fix [2099362] Possible SurfaceFlinger crash\n"
    },
    {
      "commit": "9795c42e557cfa37b9fd353ef7a2a7977a77f504",
      "tree": "d5d82843e6f352ddee5127025da8b06be250e42e",
      "parents": [
        "161f74cb6af758e77d6ce7e4750c2f9813a5f9f5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 26 16:36:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 26 16:55:50 2009 -0700"
      },
      "message": "dumpsys SurfaceFlinger will now always dump SF\u0027s state, even if SF is deadlocked\n(in this case the state is dumped without the proper locks held which could result to a crash)\n\nin addition, the last transaction and swap times are printed to the dump as well as the time spent\n*currently* in these function. For instance, if SF is unresponsive because eglSwapBuffers() is stuck,\nthis will show up here.\n"
    },
    {
      "commit": "1c97d2ebe1f035beabd90089bfc78326b73d7864",
      "tree": "f78d8eb4239a3abf418d2efd1de88e3b20005df9",
      "parents": [
        "50517543d84446fc91fa65c60eda6d2e2724de10"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "message": "fix a bug that caused the PixelFormat viewed by Surface to be wrong.\n\nwhat happened is that the efective pixel format is calculated by SF but Surface nevew had access to it directly.\nin particular this caused query(FORMAT) to return the requested format instead of the effective format.\n"
    },
    {
      "commit": "5d7126b625c8c4a7b945e8c247b63abff7bc13b6",
      "tree": "74ae309408f4e1e7916cbeba037a87d7da62ecd3",
      "parents": [
        "5fb9d7d1c168be17573f805615021280e0839f11",
        "792561dab0733bea46e5de58c03640bfb14869fd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 14:20:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 14:20:21 2009 -0700"
      },
      "message": "resolved conflicts for merge of ac38dfc5 to master\n"
    },
    {
      "commit": "970112231e887c8a14441ec4fed55342e019fc8c",
      "tree": "446bac9abff8cd5f446664701268b582b11331a5",
      "parents": [
        "c05c1c14be8fe4d406a57e8fc9ece7631e93e12c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 10:57:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 10:57:27 2009 -0700"
      },
      "message": "fix [2017532] Partial Update leaves residual image.\n"
    },
    {
      "commit": "4860b74b473e0043004530c4c4de9f8971af95c6",
      "tree": "c7e1216173934234080743f721cecdcb1a47be94",
      "parents": [
        "3943342796ccde842b0c4484dc889de75b8cf6ae",
        "6e2d6483fe14362187c78c91dc03024fbb31d431"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 20:05:11 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 09 20:05:11 2009 -0700"
      },
      "message": "am 4d2dbebf: fix for [1885684] E/SurfaceFlinger( 60): not enough memory for layer bitmap size\u003d4294938624\n\nMerge commit \u00274d2dbebf3d08209f751585d8cc367369e2f6e32f\u0027\n\n* commit \u00274d2dbebf3d08209f751585d8cc367369e2f6e32f\u0027:\n  fix for [1885684] E/SurfaceFlinger( 60): not enough memory for layer bitmap size\u003d4294938624\n"
    },
    {
      "commit": "6e2d6483fe14362187c78c91dc03024fbb31d431",
      "tree": "df97d1dbb309485d0c9bfa1360b80b7bcef9b8c5",
      "parents": [
        "7278a129fc7028241e579dff199e76c683e615c7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 18:16:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 18:16:43 2009 -0700"
      },
      "message": "fix for [1885684] E/SurfaceFlinger( 60): not enough memory for layer bitmap size\u003d4294938624\n"
    },
    {
      "commit": "7303c6bf1a8b00a0e7d8165d774a1f259b4ccda9",
      "tree": "329ae25bcf03c06ddca3828a038bd499c63dbee0",
      "parents": [
        "6b5513538aedc19c624ff7a260c832dcfae630f2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 02 18:11:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 02 18:50:51 2009 -0700"
      },
      "message": "get rid of references to MemoryDealer in SurfaceFlinger\n"
    },
    {
      "commit": "759fdb2ef735422d6b8c65e168fa9d1c24562a86",
      "tree": "043f7f5a9288a37b0e888ebb2d537930c154a149",
      "parents": [
        "84d1f7a09827fe195dd08b647b8c5092d03516f7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 02 17:33:40 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 02 18:45:29 2009 -0700"
      },
      "message": "free gralloc buffers as soon as possible (when a surface is not visible any longer), client who have the buffers still mapped won\u0027t crash, btu may see garbage data\n"
    },
    {
      "commit": "29d06ac9a45e564b4f935b91067fc92c2d4c193d",
      "tree": "cd222364df15c9fc100614fad8bb41b9b1df106e",
      "parents": [
        "9f96145725ff3f265712d607d19078fb91a5c8ec"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 18:49:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 18:49:56 2009 -0700"
      },
      "message": "fix a bug that caused artifacts when SWAP_RECTANGLE was enabled\n"
    },
    {
      "commit": "a8d44f75e1934072713371a2dcd143c63ffcbe0e",
      "tree": "abb09cfa5769da6fa403ed515ada22b8e3dbb35d",
      "parents": [
        "b8a5560e1303cb10f5cd482af466fc04d2bdfcab"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jun 28 02:54:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 14:44:11 2009 -0700"
      },
      "message": "fix [1947273] the DimLayer causes the whole screen to update during transactions\n"
    },
    {
      "commit": "6b3287b5d4933cebf87b43aaf564cc2963d796d6",
      "tree": "f76dde21d33312da8e3e3eff69db0467b2e2090c",
      "parents": [
        "ce6d17210750258ac990cbd13bfeaf9252cf2bb5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jun 28 02:54:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Jun 28 02:54:16 2009 -0700"
      },
      "message": "fix [1947273] the DimLayer causes the whole screen to update during transactions\n"
    },
    {
      "commit": "b8a5560e1303cb10f5cd482af466fc04d2bdfcab",
      "tree": "3d8e2c45d87cb1dcb85e36978ea1658d6cd7db91",
      "parents": [
        "17b2ad027b4b72b96dfb663c0ea001972da7ef58"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 26 19:06:36 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 26 19:06:36 2009 -0700"
      },
      "message": "fix an update bug with SHOW_UPDATE debug feature. Fix a problem with the debug binder codes too\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": "cd8c5e29c245e55a5f648b7a10f8586baf64e622",
      "tree": "d5e8bfb9c3148dc1fbdb4b77c5ac3f8a12cf5817",
      "parents": [
        "7272add7a5be7a8e1a0a3ba6066039037033f8cd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 19 16:24:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 19 16:24:02 2009 -0700"
      },
      "message": "release the last reference to surfaces explicitely instead of letting it go implicitely when the message is destroyed\n"
    },
    {
      "commit": "375f56363a8737119ce2222dcfaacbe1cf733fc0",
      "tree": "5cdf2be415ef2668b6d4179b00b61e5a57f5c077",
      "parents": [
        "5e78e0965169790111f01354e78b0f8d34c94840"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 15 18:24:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 15 21:56:51 2009 -0700"
      },
      "message": "new Permission class used to improve permission checks speed (by caching results)\n"
    },
    {
      "commit": "3d57964a81cd631d80aa9575647e1ce35b5e82d5",
      "tree": "0958ca702a23944cd1b69d4718ee19ac545d9150",
      "parents": [
        "9648c1a2b9b527bcef64bb9d96e8385a14949840"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 04 18:46:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 04 18:46:21 2009 -0700"
      },
      "message": "fix a bunch of problems with destroying surfaces.\n\nnow, all destruction path, go through the purgatory which is emptied when ~ISurface is called, but we also make sure to remove the surface from the current list from there (in case a client forgot to request the destruction explicitely).\n"
    },
    {
      "commit": "310f8da0c3122ed5419db8f12a6e98d3188325b2",
      "tree": "0f3435d35e7fe8fca8dc2b347ff46276a8c351c8",
      "parents": [
        "20f68782a4ea71c6a977d7f87d8288d3daa265ec",
        "bdbf6b094d61f694f162a5a5279caededcb1f0a5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 01:27:01 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 02:16:08 2009 -0700"
      },
      "message": "merge master to master_gl\n"
    },
    {
      "commit": "bdbf6b094d61f694f162a5a5279caededcb1f0a5",
      "tree": "b7a3cd2bd1a437237e71598d05b88be3f681c610",
      "parents": [
        "3cf34f1345eca75c5282b65dc4bda5f1e4f23d0d",
        "1131392281cebcf958bbf5981203b1a34eef6ba2"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 21 19:36:53 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu May 21 19:36:53 2009 -0700"
      },
      "message": "am 69a6c3eb: Merge change 2292 into donut\n\nMerge commit \u002769a6c3ebd46a8de0e896747757f364322c12608d\u0027\n\n* commit \u002769a6c3ebd46a8de0e896747757f364322c12608d\u0027:\n  split boot animation out of SurfaceFlinger\n"
    },
    {
      "commit": "a1ecca920e15ce04fe56ebf4f1b52ba711f9eb2d",
      "tree": "d5eca56524292b41940347ddbe5387fbf136c141",
      "parents": [
        "1bdc51faa8ecddf4ab34769bfc50becb454c5e79"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 21 19:21:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 21 19:21:59 2009 -0700"
      },
      "message": "split boot animation out of SurfaceFlinger\n\nConflicts:\n\n\tdata/etc/platform.xml\n"
    },
    {
      "commit": "c5b2c0bf8007562536b822eb060fc54a01f8e08b",
      "tree": "da6084f542177972cf72a985b5d2c10330f87de3",
      "parents": [
        "208059f67ed2dd9fa025e07fcb6954d3cb61c79e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "20f68782a4ea71c6a977d7f87d8288d3daa265ec",
      "tree": "5f286e70c9d2b870d3594354e321795496ef9b4e",
      "parents": [
        "d8fb7b586f3cfac42694208547b58438d7f3b3ed"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 11 00:03:41 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun May 17 23:34:16 2009 -0700"
      },
      "message": "Region now has its own implementation instead of relying on SkRegion, which allows us to break libui\u0027s dependency on libcorecg.\n"
    },
    {
      "commit": "df3ca30bf663cb8eed88ee3f16fb5e9a65dc00fc",
      "tree": "2456c7861be6b9ee4b8f87fe086acb9a2b132b3a",
      "parents": [
        "aa8c0ff7a36b4840dcf3e72c9696b86d192c4314"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 19:29:25 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 15:07:33 2009 -0700"
      },
      "message": "created an new EGL extension called ANDROID_swap_rectangle\n\nANDROID_swap_rectangle allows to specify the rectangle affected by eglSwapBuffers(), anything outside of this rectangle is unchanged. in particular EGL_BUFFER_DESTROYED only applies to that rectangle. This extension as well as EGL_BUFFER_PRESERVED allow major optimizations on surfaceflinger, which can redraw only the dirty area during compositing.\n\nHowever, ANDROID_swap_rectangle allows further optimizations in EGL by reducing the amount of copy-back needed. ANDROID_swap_rectangle is particularily important for software implementations.\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": "3f54b2ae7ee5248aa87749f151130af5480e043c",
      "tree": "cfb2b2459fca772ec78ef18954d63b096cb50a14",
      "parents": [
        "20ab0ad25e00f6fea2094ec10a9609e2105cd7db",
        "75088b0a7a01bcffcd5f37361b7a29f33da6280c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Apr 29 13:35:37 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Apr 29 13:35:37 2009 -0700"
      },
      "message": "am 0124a15: Merge change 626 into donut\n\nMerge commit \u00270124a150157d69a9f0ea109be2390afb5399b8a7\u0027\n\n* commit \u00270124a150157d69a9f0ea109be2390afb5399b8a7\u0027:\n  fix 1803886 android15 Translucent GLSurfaceView demo does not display properly\n"
    },
    {
      "commit": "b6683b58a8cd97e6d527a355bee7ffe9cf8fd6e7",
      "tree": "c938b6f85c536818f1cbcedb18982556b171a726",
      "parents": [
        "cbb0d628438809163e52ec28b40c32eb82c5a233"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 28 03:17:50 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 28 03:17:50 2009 -0700"
      },
      "message": "make use of the perfectly fine List.h instead of our own reimplementation of a linked list.\n"
    },
    {
      "commit": "2b42fa7fddafdfe27732813d79ca47a409a3b9c1",
      "tree": "fd60fb886045a715ba88f0b3dcf3f367fb8ceb6e",
      "parents": [
        "4c9ff468c94ff90f768ad933c50ffd9d9586f01c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 27 18:50:06 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 27 18:50:06 2009 -0700"
      },
      "message": "fix 1803886 android15 Translucent GLSurfaceView demo does not display properly\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": "cbc93ca8005d0a885d54b9a13c18ea07220feedf",
      "tree": "2cb3f50e2aa184a79ad47c573206b596dcb0e6cb",
      "parents": [
        "0aa758d64ac530833ce9a311b164c9175a7a054c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 21 18:28:33 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 24 16:31:11 2009 -0700"
      },
      "message": "get rid of the \"show fps\" debug option\n"
    },
    {
      "commit": "0aa758d64ac530833ce9a311b164c9175a7a054c",
      "tree": "dffe53978839a5d7cf270d88a94f4c3b084a37fa",
      "parents": [
        "f1d8e87b09abf963cd5b6a026194c1940fadb7b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Apr 22 15:23:34 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 24 16:30:38 2009 -0700"
      },
      "message": "Surfaces are now destroyed properly in SurfaceFlinger.\n\nFirst, the window manager tells us when a surface is no longer needed. At this point, several things happen:\n- the surface is removed from the active/visible list\n- it is added to a purgatory list, where it waits for all clients to release their reference\n- it destroys all data/state that can be spared\n\nLater, when all clients are done, the remains of the Surface are disposed off: it is removed from the purgatory and destroyed.\nIn particular its gralloc buffers are destroyed at that point (when we\u0027re sure nobody is using them anymore).\n"
    },
    {
      "commit": "f1d8e87b09abf963cd5b6a026194c1940fadb7b4",
      "tree": "f26b490726ff7548b08cd705f1411fe13528e6a4",
      "parents": [
        "9a11206fe793363c0e8897b478cbe6ef8c52b543"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Apr 20 19:39:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 24 16:22:36 2009 -0700"
      },
      "message": "a brand new MessageQueue for SurfaceFlinger.\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": "01b766839e06c32540cef100e3a7710d12cf1eef",
      "tree": "38528a4f4e1c99b5941f372ec617751ec48dac8c",
      "parents": [
        "62185b7335e85211dc4d0e2003354eb3ea2e66ef"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 16 20:04:08 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 16 20:04:08 2009 -0700"
      },
      "message": "more splitting of Surface/SurfaceControl. Surface.java is now implemented in terms of Surface and SurfaceControl.\n\nThe WindowManager side of Surface.java holds a SurfaceControl, while the client-side holds a Surface. When the client is in the system process, Surface.java holds both (which is a problem we\u0027ll try to fix later).\n"
    },
    {
      "commit": "62b74444be6742ab6b877918c85caeb9f2f1a2c9",
      "tree": "5c792adabd44ba015123b7b449cb25529b62661c",
      "parents": [
        "40b7f6e0433b89c27b2fe5a1c0c47f67b42eceb2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Apr 14 23:02:51 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 16 12:29:34 2009 -0700"
      },
      "message": "fix a few typos in comments. this is really intended as a git pull/push test.\n"
    },
    {
      "commit": "0308739d0beef940588bf8bb693b91d0c2936d67",
      "tree": "ab3eb196187023c005731402f52ec82082455f73",
      "parents": [
        "076b1cc3a9b90aa5b381a1ed268ca0b548444c9b",
        "34a85cc7c09d43a18a573079c12ee3ea5e385445"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 14:36:33 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Apr 10 14:36:33 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into master_gl\n\nConflicts:\n\tlibs/utils/Parcel.cpp\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": "c08731e756868653d09d3e49b723706df3687070",
      "tree": "9e814e309f97b869d3c558f719a05d63d4707edd",
      "parents": [
        "0d1318b974feba2e6ff13e36a1781343c2fce045"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Fri Mar 27 18:11:38 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 18:11:38 2009 -0700"
      },
      "message": "AI 143320: am: CL 143171 am: CL 142873 fix [1732012] Only show screen rotation animation when triggered by sensor\n  Original author: mathias\n  Merged from: //branches/cupcake/...\n  Original author: android-build\n  Merged from: //branches/donutburger/...\n\nAutomated import of CL 143320\n"
    },
    {
      "commit": "0d1318b974feba2e6ff13e36a1781343c2fce045",
      "tree": "14ce5fb62dc2a66d81da6ee7fc3444c804676b73",
      "parents": [
        "c3aa00b29fd9ab9b06a2bd675dac404970acb477"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Fri Mar 27 17:58:20 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 17:58:20 2009 -0700"
      },
      "message": "AI 143309: am: CL 143160 am: CL 142856 new-new-new-new rotation animation. it may still change one more time.\n  Original author: mathias\n  Merged from: //branches/cupcake/...\n  Original author: android-build\n  Merged from: //branches/donutburger/...\n\nAutomated import of CL 143309\n"
    },
    {
      "commit": "24fd77d44088011c88c55a5de459e75792bb2ecb",
      "tree": "9e814e309f97b869d3c558f719a05d63d4707edd",
      "parents": [
        "ecbeaa0cf1cd0bf1bcb00bb25502137db5a9847f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Fri Mar 27 16:10:37 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 16:10:37 2009 -0700"
      },
      "message": "AI 143171: am: CL 142873 fix [1732012] Only show screen rotation animation when triggered by sensor\n  Original author: mathias\n  Merged from: //branches/cupcake/...\n\nAutomated import of CL 143171\n"
    },
    {
      "commit": "06ee417bc5f07eb783f93233e27ffe2b90225f67",
      "tree": "e5c31a7161ba1ce7e72eab72ea1f42921c1bf0ac",
      "parents": [
        "f804114702ee61b1bcd5034617b59990e453f7b2",
        "b1596ee235b568d4c25313e2d335a1203953663b"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 15:38:40 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 15:38:40 2009 -0700"
      },
      "message": "Merge commit \u0027korg/cupcake\u0027\n\nConflicts:\n\tcore/java/android/webkit/WebView.java\n\tcore/java/android/widget/TwoLineListItem.java\n\tpreloaded-classes\n"
    },
    {
      "commit": "ecbeaa0cf1cd0bf1bcb00bb25502137db5a9847f",
      "tree": "14ce5fb62dc2a66d81da6ee7fc3444c804676b73",
      "parents": [
        "c1992a6f7551e22f14bb3fb92f1bd0b074cdac32"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Fri Mar 27 15:36:09 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Mar 27 15:36:09 2009 -0700"
      },
      "message": "AI 143160: am: CL 142856 new-new-new-new rotation animation. it may still change one more time.\n  Original author: mathias\n  Merged from: //branches/cupcake/...\n\nAutomated import of CL 143160\n"
    },
    {
      "commit": "ceff6e1874d760f4d5029b49b4da344b428555e5",
      "tree": "d4605e0b0c143acd8dffc1e0a995c3b2578e2545",
      "parents": [
        "262453cecb32ba418c9001bc9cc33dcc4f306b64"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Wed Mar 25 23:18:56 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 25 23:18:56 2009 -0700"
      },
      "message": "Automated import from //branches/cupcake/...@142873,142873\n"
    },
    {
      "commit": "262453cecb32ba418c9001bc9cc33dcc4f306b64",
      "tree": "3e3ca52de6e2c820bbcd054952dcce9939bca901",
      "parents": [
        "11d93f968ca515cd448ef51e4d8b79e3de561475"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Wed Mar 25 21:42:35 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 25 21:42:35 2009 -0700"
      },
      "message": "Automated import from //branches/cupcake/...@142856,142856\n"
    },
    {
      "commit": "7c143aab44b562eb917ca57ed7c1eb584591b7e2",
      "tree": "e1d504f26085a7e832ca0d628ab90b06874d1e4a",
      "parents": [
        "b535e58351bf204e7a96c9cf5f4aebe5bf56f9f2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Tue Mar 24 22:50:50 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 22:50:50 2009 -0700"
      },
      "message": "Automated import from //branches/master/...@142447,142447\n"
    },
    {
      "commit": "74c770be33d41f129334de97ce4d0db141312d02",
      "tree": "e1d504f26085a7e832ca0d628ab90b06874d1e4a",
      "parents": [
        "6219dd7d3a685725e1f8e0fad94e6aa64492ca82"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Tue Mar 24 22:43:22 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 22:43:22 2009 -0700"
      },
      "message": "Automated import from //branches/donutburger/...@142446,142446\n"
    },
    {
      "commit": "e74be0afd9b450b8fae7eae92e9c768add565a26",
      "tree": "e65580f0caa45af93f0ffd8e00884a1aa6031b3a",
      "parents": [
        "3cff302213b17e74dcf5cdeb9c4139234e79cb4e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Tue Mar 24 20:25:55 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 20:25:55 2009 -0700"
      },
      "message": "Automated import from //branches/master/...@141504,141504\n"
    },
    {
      "commit": "3df5e433a2bbdec20af735fe7fd928bef8ed6ad8",
      "tree": "e65580f0caa45af93f0ffd8e00884a1aa6031b3a",
      "parents": [
        "78b877e7e673bc248a878e4513f978b2eb82e1c0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Tue Mar 24 20:25:29 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 20:25:29 2009 -0700"
      },
      "message": "Automated import from //branches/donutburger/...@141502,141502\n"
    },
    {
      "commit": "0348218e930441c68e90a4e55893ae3b9e1ea0ef",
      "tree": "93fbbd7ddb03e76602273b5513e157ce47541358",
      "parents": [
        "2ed5f739ebd88f25e16f1f5edfd0041bdf637394"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "",
        "time": "Tue Mar 24 19:43:24 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 24 19:43:24 2009 -0700"
      },
      "message": "Automated import from //branches/cupcake/...@142445,142445\n"
    },
    {
      "commit": "0c2bcbc6cc2c41c567596e1579adae64570e9aad",
      "tree": "e65580f0caa45af93f0ffd8e00884a1aa6031b3a",
      "parents": [
        "4f68be1a5b53f690f1a7d8ba62cddb5ef0022a96"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 19 23:08:54 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Mar 19 23:08:54 2009 -0700"
      },
      "message": "auto import from //branches/cupcake_rel/...@141571\n"
    },
    {
      "commit": "732ca39b704428b77ef305826d4e6c07190fd7ed",
      "tree": "0b575888c39771713beb00a816479b1cdf53242e",
      "parents": [
        "15c399644d0bd343ef9ed23ccb117e49a0eb7f82",
        "ebad147e654682b6f05438ca8f3685809df5d2e2"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Mar 18 11:33:14 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Mar 18 11:33:14 2009 -0700"
      },
      "message": "Merge commit \u0027remotes/korg/cupcake\u0027 into merge\n\nConflicts:\n\tcore/java/android/view/animation/TranslateAnimation.java\n\tcore/jni/Android.mk\n\tcore/res/res/values-en-rGB/strings.xml\n\tlibs/audioflinger/AudioFlinger.cpp\n\tlibs/surfaceflinger/LayerScreenshot.cpp\n\tpackages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java\n"
    },
    {
      "commit": "bcef13b666c7459241235bc6209837ae81884d2f",
      "tree": "a1313bb849f73fd1b62d221f60196fe8fd44edf5",
      "parents": [
        "22f8defddca562244d43611d99ce76c3ae65a73e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 11 12:11:56 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Mar 11 12:11:56 2009 -0700"
      },
      "message": "auto import from //branches/cupcake/...@137873\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": "a837ba778f2d7a5170b37aa33624d9b9711c354d",
      "tree": "95e57dc8a8fb658ba175f8592132f9cb1212beab",
      "parents": [
        "5da3af6c5de848e447982c3633fc3a58c27e286b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Jan 26 11:51:12 2009 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Jan 26 12:11:20 2009 -0800"
      },
      "message": "Add missing \u003climits.h\u003e include\n\nThis should fix the build for gcc 4.3.2\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"
    }
  ]
}
