)]}'
{
  "log": [
    {
      "commit": "a8d49178f94e025be8be00460739315b9c273e4c",
      "tree": "7ccc645e6f9acb14a1e92b6d6163b641fe72937b",
      "parents": [
        "b89c9d422781d10c614af61b1519daed2b9086e2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 26 16:36:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 26 16:55:50 2009 -0700"
      },
      "message": "dumpsys SurfaceFlinger will now always dump SF\u0027s state, even if SF is deadlocked\n(in this case the state is dumped without the proper locks held which could result to a crash)\n\nin addition, the last transaction and swap times are printed to the dump as well as the time spent\n*currently* in these function. For instance, if SF is unresponsive because eglSwapBuffers() is stuck,\nthis will show up here.\n"
    },
    {
      "commit": "18b6b49ea5235fb6c0802db9a0cc2c6dd20646cb",
      "tree": "99d8c9f592a961c1af7f583792f4178bce2cc89f",
      "parents": [
        "b2f8450db8dfbc05724624f93d9ec5e65f0b7e54"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "message": "fix a bug that caused the PixelFormat viewed by Surface to be wrong.\n\nwhat happened is that the efective pixel format is calculated by SF but Surface nevew had access to it directly.\nin particular this caused query(FORMAT) to return the requested format instead of the effective format.\n"
    },
    {
      "commit": "33863dd9e1005478d20b70fad42e447ac97f5abf",
      "tree": "0092bdf625c8102ee649e4ebd41319b744b1cc86",
      "parents": [
        "5e7d68223a1061b296871cd157b4d9e81a1777ec",
        "ac38dfc5435b57281c97165e4de5b5a12af98a20"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 14:20:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 14:20:21 2009 -0700"
      },
      "message": "resolved conflicts for merge of ac38dfc5 to master\n"
    },
    {
      "commit": "12cedff50ca229a5d025e1011f1518c32e858138",
      "tree": "6ad4275e5195753480c5f04b84208b3a6245e6a6",
      "parents": [
        "ba989ad0ed91beda010d44945fa015d75d99cf67"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 10:57:27 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 28 10:57:27 2009 -0700"
      },
      "message": "fix [2017532] Partial Update leaves residual image.\n"
    },
    {
      "commit": "07e456d871749c256ba94a7333d029344eafbdfb",
      "tree": "128c5dd32ddf42f166b0dea709ba67d52a249b11",
      "parents": [
        "320a34aa4f591a1b1b5a3f9e6418e97045ded270",
        "4d2dbebf3d08209f751585d8cc367369e2f6e32f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 09 20:05:11 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jul 09 20:05:11 2009 -0700"
      },
      "message": "am 4d2dbebf: fix for [1885684] E/SurfaceFlinger( 60): not enough memory for layer bitmap size\u003d4294938624\n\nMerge commit \u00274d2dbebf3d08209f751585d8cc367369e2f6e32f\u0027\n\n* commit \u00274d2dbebf3d08209f751585d8cc367369e2f6e32f\u0027:\n  fix for [1885684] E/SurfaceFlinger( 60): not enough memory for layer bitmap size\u003d4294938624\n"
    },
    {
      "commit": "4d2dbebf3d08209f751585d8cc367369e2f6e32f",
      "tree": "1733191a1ce6268812d85f0423eb60f39f06ce13",
      "parents": [
        "46e28db8818332e3cda4cc410cc89a1ed7ce4db6"
      ],
      "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": "d763b5d9197e01662cafa376e1227e53e0463a3c",
      "tree": "a8e3a71cf4581453aa4bbfe5c70c0f870756c2d3",
      "parents": [
        "0926b6184adb9bd1d4a432c7d4de0be58c602cc2"
      ],
      "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": "359140c171f67b9b29a1beae9743b49d0759414b",
      "tree": "ec5255d464b929e5396c3fb29cefd862f818e982",
      "parents": [
        "dfe983bd7979ccb1602f29b8f9804c98411d9cd6"
      ],
      "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": "ecfa7ccd4fc3066a4cfd4d84d7de286d95581c78",
      "tree": "6c71dcd11bee533b7d09e8d711bcbc491c51b2f5",
      "parents": [
        "276826bae2eb6d25c4abb1c5f665d2876c65e50c"
      ],
      "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": "0aed7e97a3efbeec23a4aa301df03036a67f8ea3",
      "tree": "4d3affe92460fce98c4215f486c988b65c6742af",
      "parents": [
        "8c9687ae291a1e0a63d4236069066284f56192cd"
      ],
      "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": "2f157b19199a4a81094d5c73cc668146c6071928",
      "tree": "c938b0c3959e0911d16944443b9a5508d44ad245",
      "parents": [
        "9171749700853305f3e6abbcdbd9e02f3a71d459"
      ],
      "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": "8c9687ae291a1e0a63d4236069066284f56192cd",
      "tree": "e03fd70ad8fbd5a3bad342a381f2f1da1061f947",
      "parents": [
        "5a8d6f44b2ec9132848aee5f608447ff801951b2"
      ],
      "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": "6edf5af578c1ab1fcd44b7c08ca371456e4b7430",
      "tree": "28ae8dec57019f5aac653b1a2d4df5cd061ee976",
      "parents": [
        "c8fb5b1979da4829e1486e6a1008c06c979b94b0"
      ],
      "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": "c8fb5b1979da4829e1486e6a1008c06c979b94b0",
      "tree": "80845ce609dd0f506069e5817b8bb6fbb2d4ba48",
      "parents": [
        "09cf0ac2e9ec9e18c7099312265f9d51cdbb0f37"
      ],
      "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": "151e859e0fc3a930bdf6d270d275e69e9eba0cbf",
      "tree": "90abe1d328fe3f7234815651237ab31219a1de03",
      "parents": [
        "e19476214a2fe718c82461f54e6b56cee7faa5f4"
      ],
      "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": "2d5ee25556cb363700dc5127f88ca05fb9493e14",
      "tree": "887c9aea220cc5e80075d237edb2e9c4051a5b68",
      "parents": [
        "36432ccc13f6d3db7af35661683c33ffa3406d85"
      ],
      "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": "947f4f4d384ea26eb2145cc070a3eed42c59534a",
      "tree": "edc5fb1e6e808a2b809720f44b6236ebe93b577b",
      "parents": [
        "6158b1bf0364da1582468a98ec09d004ba99deec",
        "0690519fcde1ccb189081aa79df61436f65686c2"
      ],
      "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": "e755d649771706b24b34e545476c8f2c8f9e09f6",
      "tree": "17d3ba5f8e4c4fdf4843044eb8cc65692f2bdd8d",
      "parents": [
        "03536ea70c73a19241bf91aebdb89635dfc5797b",
        "69a6c3ebd46a8de0e896747757f364322c12608d"
      ],
      "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": "627e7b50be41e4fdee758a1bfad3a55de56b4e27",
      "tree": "de5c88b60ad0f5454956eb457090958ebb9fc331",
      "parents": [
        "384bfa270cdcb5dc3bc9ec396b783e25eb2d9b4d"
      ],
      "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": "0795272aa226f4e965968a03daddc53ce30b7cda",
      "tree": "6b4e8ba5e57c5dcf2dd770c24e14c43eda42fdd7",
      "parents": [
        "25ba5b6564224dceefa086b5c439ef28dad530ca"
      ],
      "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": "6158b1bf0364da1582468a98ec09d004ba99deec",
      "tree": "6fc11335f772f84dbee308e830d807fe0df1f815",
      "parents": [
        "11be99de5f3901c32130ea4c5fd52e62e1845e73"
      ],
      "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": "2e20bffbab8084fedce39d14d7dd17b08f6e9ba2",
      "tree": "be397ea1383b74bc09e48d591ca7aa2cc54f0539",
      "parents": [
        "9bd5da4db97fec7cdbe6e07870411c1fcaff4365"
      ],
      "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": "dff8e58d47ede6e748c0b02e128ca33b42a4f362",
      "tree": "716d70cda74aa625d6e67c4debc2eb7c6b81bfc9",
      "parents": [
        "fa6eda01a9f3df0102ce6a65302c8674cc9c7e50"
      ],
      "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": "a73b41ae601b391ae67a4c603d07f8949cd666ac",
      "tree": "6796599b363bad3c1c722107fc60a7e8cd94026e",
      "parents": [
        "2f7e0447ac746e940db753178d513df914c20334",
        "0124a150157d69a9f0ea109be2390afb5399b8a7"
      ],
      "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": "bdbe6024a543bd740b0c194db9c12e4150c55c59",
      "tree": "eadade6789ba4cd32270691742ae3d379add7faa",
      "parents": [
        "354271fb03d45309d8e249e3411bcf16cb807489"
      ],
      "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": "0c6b5f6ec38b14add24c44360aa60d91ab61ff34",
      "tree": "3011653554fcbadf48896278846231199f5a8bcf",
      "parents": [
        "17f213bc528cf296e133e9ec9c9e0ce5dce41781"
      ],
      "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": "81b0aa696ac954180caec6cb8cc1bb97440e03b5",
      "tree": "af034e81f2becc4a2d70e0d821a4cb11efc0eb2b",
      "parents": [
        "ef07dda442f210bc7a6b5fbdd4a0bed4e6d8ad50"
      ],
      "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": "ef07dda442f210bc7a6b5fbdd4a0bed4e6d8ad50",
      "tree": "8ba3ffa27672206d25fb070d24544f506f1d30ac",
      "parents": [
        "a3aa6c9aa96873a70e2ff3170218a275f503520e"
      ],
      "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": "a3aa6c9aa96873a70e2ff3170218a275f503520e",
      "tree": "67ce04dbb5e73d9ce96f93bef729d44754ead365",
      "parents": [
        "6ead5d9f140529edfb744584fa5427b84b4dc13a"
      ],
      "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": "6ead5d9f140529edfb744584fa5427b84b4dc13a",
      "tree": "9685b259637326b603a88f1ff9cf8bb125ae9e1d",
      "parents": [
        "6cf0db228ca275dfcda57d79c55e5fa306809632"
      ],
      "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": "6cf0db228ca275dfcda57d79c55e5fa306809632",
      "tree": "c1e57e8da8c8428bcac5afc877c16f472d0fb501",
      "parents": [
        "2b1927f686eaec23a5798966b96aadaee3e2eb85"
      ],
      "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": "17f638b39f2e8b610ecfa1290e5bc42ab7700c98",
      "tree": "536b2865736b9498d70304db00a64897c472f65f",
      "parents": [
        "6d2c0bc7bfe10a9b70ca608baf626c47a228fa6b"
      ],
      "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": "ed81f2216a0f200e279de61ec96fbedf5c21f0c7",
      "tree": "c96b9a4ee876a7c0e196efd245019f16a8d85ac3",
      "parents": [
        "402c34649f514669517c2208e35caa58ff8bb2b9"
      ],
      "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": "0179ff6594034d0355499c048e3a2ea2d515e8b6",
      "tree": "e1f7634a72c4e6c54bbc4de62287b707d3fd1891",
      "parents": [
        "1473f46cbc82aa6f0ba744cc896a36923823d55b",
        "a8e947f604281197b77e8a9171a9d1fa3d274703"
      ],
      "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": "1473f46cbc82aa6f0ba744cc896a36923823d55b",
      "tree": "1a03737c7eb71b32735693e5cfdd91d0b57a2ad5",
      "parents": [
        "71d83c04897a10394009b02808bb6b86886b27e1"
      ],
      "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": "eb0c86e18b7d620b679ff2a45a0233867a53a334",
      "tree": "9202e5ef5179bf79540459845de414ddb5df719e",
      "parents": [
        "e4fbd6235c8d1c5b0ed4883ec275dd3fc9c919fb"
      ],
      "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": "3552f53c8370ced8680951f4ac811a126da02b0e",
      "tree": "606d3308cf451c8095ee64b5f3bbc35932c21b7b",
      "parents": [
        "f5f8d247d1f216cd590ed788f72d1e4dec0d0e90"
      ],
      "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": "66b8ec99c5fc505877b3711a52e284bbb451f836",
      "tree": "7551907d6083bcd455632f84f528cbd4d06ffd04",
      "parents": [
        "1e880dba106b14619c3eaf94c5dc2d1a943645bc"
      ],
      "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": "e1861133d51b9e6a6f658eb366630ad4f4d3ff8f",
      "tree": "046aaac6d455ccd57d38f3a13df44ecd13ac0322",
      "parents": [
        "d91450e1169b3a57b3507fe86d947de05549f4ed",
        "3f2fd987b230740e1b28ccb541d1181cb2187ae6"
      ],
      "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": "89a187299eeaa9f973ace3dba4916b3fbd36063e",
      "tree": "3ec8e8bf4f39529fb22ba7aa644aa21804784088",
      "parents": [
        "cd1a9ea2388dfd31bb51c27df6404d68e227569c"
      ],
      "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": "c75c4364eae030a9ea6db658c4d1e38cdb05ab4c",
      "tree": "74b5aa87e54d08c144b2cddd1163d68537c895ee",
      "parents": [
        "02771bcb5d2156a58b825a5f8132fdf575ea862d"
      ],
      "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": "d2f34e5fd6c20854b45c76f2a514fb8864277ea2",
      "tree": "063b824c7ae4622f404706f43dc069228cae46f1",
      "parents": [
        "5104518fd7db24b0757be336092c94439e847e36"
      ],
      "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": "afbf448b7d04abe25497f838c1df5d05048f9d12",
      "tree": "bb6bde9041ecf23da0314a5937986d14a646fa1e",
      "parents": [
        "1379665abdb8330caf813fb77902914d1545bcd9"
      ],
      "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": "2764f30a74484870de03fa1a2aca0c01f991c711",
      "tree": "182976a132754ec6fd692e3f421e219c63db5c13",
      "parents": [
        "00f5eca412248a32325442c982f97303dacae94b"
      ],
      "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": "013456784a6853254acb942209ff4dac95bdf50c",
      "tree": "eeebd1ae56cff9e2ab95f6419f83d64e78fa8046",
      "parents": [
        "f275612e409d805c18987519bf02fce67dc9eb8d"
      ],
      "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": "4cf7abeed2c748314327462986e452fc1ccc6e99",
      "tree": "84900444370e1420e907fc60d2386deaf9ac2408",
      "parents": [
        "30e4553803da64faf0b4ee4a425899d9ed32980b"
      ],
      "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": "e94fa1ba1de03fa1f26eb1e544c42238077f1278",
      "tree": "c67368a39ee1d63e545f7a4d0432a9185c7a9b6f",
      "parents": [
        "ec4faffff3759f4cf2129d8793dce1a4a8f71a4a"
      ],
      "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": "c2ad241504fcaa12d4579d3b0b4038d1ca8d08c9",
      "tree": "1a260a5b0b371678c9a4710ea36030db14374e56",
      "parents": [
        "105925376f8d0f6b318c9938c7b83ef7fef094da"
      ],
      "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": "2a73de7b21a89aa2ba4c254d28658b49793425b2",
      "tree": "ded5bcd581464b4174d81c373044b6d36eee58d2",
      "parents": [
        "42e48026b21a962e5bf40344d738665ecbd9d74d",
        "ba87e3e6c985e7175152993b5efcc7dd2f0e1c93"
      ],
      "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": "c39a6e0c51e182338deb8b63d07933b585134929",
      "tree": "e55fc5bd38b1eb8fb4851a0fe1cc264a7fe2f245",
      "parents": [
        "b2a3dd88a53cc8c6d19f6dc8ec4f3d6c4abd9b54"
      ],
      "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": "9066cfe9886ac131c34d59ed0e2d287b0e3c0087",
      "tree": "d88beb88001f2482911e3d28e43833b50e4b4e97",
      "parents": [
        "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553"
      ],
      "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": "d83a98f4ce9cfa908f5c54bbd70f03eec07e7553",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "076357b8567458d4b6dfdcf839ef751634cd2bfb"
      ],
      "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": "da996f390e17e16f2dfa60e972e7ebc4f868f37e",
      "tree": "00a0f15270d4c7b619fd34d8383257e1761082f4",
      "parents": [
        "d24b8183b93e781080b2c16c487e60d51c12da31"
      ],
      "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": "d24b8183b93e781080b2c16c487e60d51c12da31",
      "tree": "fbb89154858984eb8e41556da7e9433040d55cd4",
      "parents": [
        "f1e484acb594a726fb57ad0ae4cfe902c7f35858"
      ],
      "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": "207637327511c960805713971e2e7dd11cb9c290",
      "tree": "cc81772d03e944df094046ee6d0a57d0134e2730",
      "parents": [
        "94cbba0933e50d593c1c462cff698dd3387ba95b"
      ],
      "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": "b798689749c64baba81f02e10cf2157c747d6b46",
      "tree": "da394a395ddb1a6cf69193314846b03fe47a397e",
      "parents": [
        "f013e1afd1e68af5e3b868c26a653bbfb39538f8"
      ],
      "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": "f013e1afd1e68af5e3b868c26a653bbfb39538f8",
      "tree": "7ad6c8fd9c7b55f4b4017171dec1cb760bbd26bf",
      "parents": [
        "e70cfafe580c6f2994c4827cd8a534aabf3eb05c"
      ],
      "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": "54b6cfa9a9e5b861a9930af873580d6dc20f773c",
      "tree": "35051494d2af230dce54d6b31c6af8fc24091316",
      "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"
    }
  ]
}
