)]}'
{
  "log": [
    {
      "commit": "9ca6491bb701919a3f88fa7c43da284b13822ed6",
      "tree": "875b0d2842e038e24f141eac5bdf9f97cf4c20ad",
      "parents": [
        "8df840aa76bc1cd7bc924d32ed4c69a95b33059e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 12 17:56:29 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 12 17:56:29 2012 -0700"
      },
      "message": "Region::validate() cannot be called from addRectUnchecked()\n\naddRectUnchecked() is allowed to be in an invalid state\ntemporarily.\n\nChange-Id: I6f5162b5c49f378978c070a77abba35023fe918c\n"
    },
    {
      "commit": "068d47f29dfead847999a7b33b4217ee9514152b",
      "tree": "68b5451ab044d8891f28d67a8e7f1999927ade9b",
      "parents": [
        "2c7c8ba56ad9c0c08fde6f86771475f03a03e6fd"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 11 18:56:23 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 12 17:30:47 2012 -0700"
      },
      "message": "strengthen region validation\n\nChange-Id: I75ee7bc4dd7a2f5357ac8994a23bc8b8bfb6eb44\n"
    },
    {
      "commit": "c272430960047de4e9b2f169fb053bd0aedce3b1",
      "tree": "d97ae8f4f83df05e144288af754776bf09d4c84e",
      "parents": [
        "a0931d657551f5098f805fbdeeed2b060bbe6171",
        "6652b3edcb7ef5402c05db12f477ceb23c27d6ec"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Sep 12 13:22:35 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Sep 12 13:22:35 2012 -0700"
      },
      "message": "Merge \"Watch for SurfaceFlinger death\" into jb-mr1-dev"
    },
    {
      "commit": "98ff0597bd9e57ba133d54f8f09841f96955cba1",
      "tree": "77baaa375ae8ced168d825bf5e8b2afd585f856a",
      "parents": [
        "61e04b92bdeafc6fca89052d14dab1bd0c384a71"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Sep 10 14:49:42 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Sep 10 14:49:42 2012 -0700"
      },
      "message": "SurfaceTexture: eglDestroySync after duping its fd\n\nThis change adds a call to eglDestroySync after we\u0027ve dup\u0027d the fd for the\nAndroid fence that the EGLSyncKHR object wraps.\n\nChange-Id: I4fa6ece863260793630d70bb9a69d6284d05d99e\n"
    },
    {
      "commit": "61e04b92bdeafc6fca89052d14dab1bd0c384a71",
      "tree": "bbc279dd485ae70f48b57cca2cc8b9daf46252cc",
      "parents": [
        "010dd4fb892aecf71e4631c22148fe57ef5b3958"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Sep 09 17:48:42 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Sep 10 13:27:23 2012 -0700"
      },
      "message": "SurfaceTexture: use eglWaitSync\n\nThis change adds a compile-option to use eglWaitSyncANDROID to ensure that\ntexturing operations that access the current buffer of a SurfaceTexture do not\noccur until the buffer is completely written.  It also moves this\nsynchronization into a new SurfaceTexture method called doGLFenceWait and\nchanges SurfaceFlinger\u0027s Layer class to use that method rather than performing\nits own wait on the fence.\n\nChange-Id: I70afa88086ca7ff49a80e3cd03d423767db7cb88\n"
    },
    {
      "commit": "01dbf5539bff4bece3f9bbfa55046b04a8a45e99",
      "tree": "3544410513f9a5918ca24e2e8d4d476686ea5b24",
      "parents": [
        "4fb3999cea652617be5125f8a42c257467bf3c77"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Sep 06 14:54:19 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Sun Sep 09 12:58:23 2012 -0700"
      },
      "message": "SurfaceTexture: use EGL-created native fences\n\nThis change adds support for using Android fences that come from EGLSyncKHR\nobjects as the release fence for a buffer.\n\nChange-Id: Ice192ce2ec001020f909a2018afdf0f17b24dec9\n"
    },
    {
      "commit": "6652b3edcb7ef5402c05db12f477ceb23c27d6ec",
      "tree": "589750d0431748564f2e9a91c928aa45cb0a60c0",
      "parents": [
        "55882dea1b1b305f15192b96ff7814f18babb212"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Sep 06 18:45:56 2012 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Thu Sep 06 18:54:42 2012 -0700"
      },
      "message": "Watch for SurfaceFlinger death\n\nThe ComposerService object wasn\u0027t watching for SurfaceFlinger\nrestarts, which doesn\u0027t usually matter because the app framework\nrestarts when SurfaceFlinger dies.  However, mediaserver continues\nto run, which means its ComposerService object was trying to use\na dead handle, and playback of DRM movies was failing.\n\nThis adds a DeathRecipient listener and some logic to re-establish\nthe SurfaceFlinger connection.\n\nBug 6645813\n\nChange-Id: I07581b881d3835601aa57d5358c8259d93bc4515\n"
    },
    {
      "commit": "b27254154642575dfb4bbfa79fbedde7d7ee23dd",
      "tree": "20f11812c640baf475d46d04f6c3ac88e47d1829",
      "parents": [
        "331841b96b92646c93c87627c03f77b892f711cd"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Sep 05 20:09:05 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Sep 06 17:54:53 2012 -0700"
      },
      "message": "libgui: move fence handling into ConsumerBase\n\nThis change moves some common fence handling code into the base class for\nBufferQueue consumer classes.  It also makes the ConsumerBase class initialize\na buffer slot\u0027s fence with the acquire fence every time a buffer is acquired.\n\nChange-Id: I0bd88bc269e919653b659bfb3ebfb04dd61692a0\n"
    },
    {
      "commit": "00e8c7a88a5b9c4104a71013a713acd3e4d3b77b",
      "tree": "71fd225e0f7f8dd1a909c64c97718989aa8f06c2",
      "parents": [
        "da8d0a5c0cf9d41915d3b106cad4aaec3e767c11"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 19:30:46 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 04 19:30:46 2012 -0700"
      },
      "message": "display projection API now has a single function instead of 3\n\nChange-Id: I9bf46d372b77d547486d4bbe6f1953ec8c65e98f\n"
    },
    {
      "commit": "493db47929cdd805339e453062fef265d8985692",
      "tree": "d2d53c5b5942fd866324cb234430b8db3a1296e5",
      "parents": [
        "e84ec393bb48e4817eaa280ee51c099af041b14c",
        "c68f2ecfa02037144d1a3856f637a77f523cf416"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Sep 04 14:58:50 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 14:58:51 2012 -0700"
      },
      "message": "Merge \"BufferQueue: add a setMaxAcquiredBufferCount check\" into jb-mr1-dev"
    },
    {
      "commit": "e84ec393bb48e4817eaa280ee51c099af041b14c",
      "tree": "6a9f6cae4dd28e43683e8712c0f95f893d8a1693",
      "parents": [
        "374850cf161ecacc292afe8e34cbe3f96c0d8e85",
        "9e75ddda93888755d0b14144b62e896cd9f78f3a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Sep 04 14:55:58 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 14:55:59 2012 -0700"
      },
      "message": "Merge \"libgui: add BufferQueue test infrastructure\" into jb-mr1-dev"
    },
    {
      "commit": "374850cf161ecacc292afe8e34cbe3f96c0d8e85",
      "tree": "b37a3c68acb70d993c75d9704833fbb92a75dfdb",
      "parents": [
        "13e12578385fdbfa78b19dfa052ffaed4a68234b",
        "fdb6b49dfa9f1f71b2e564c9f423043f90f9346c"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Sep 04 14:55:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 04 14:55:38 2012 -0700"
      },
      "message": "Merge \"libgui: disable CpuConsumer tests\" into jb-mr1-dev"
    },
    {
      "commit": "c68f2ecfa02037144d1a3856f637a77f523cf416",
      "tree": "070c904edf7d136ab08a31b5cd0ae72de1ba436e",
      "parents": [
        "9e75ddda93888755d0b14144b62e896cd9f78f3a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:36:22 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Sep 04 14:54:34 2012 -0700"
      },
      "message": "BufferQueue: add a setMaxAcquiredBufferCount check\n\nThis change adds a check to verify the validity of the value passed to\nsetMaxAcquiredBufferCount.\n\nChange-Id: I39730557aa58261e678bd6e4fce11bab78e98362\n"
    },
    {
      "commit": "50f262fe569b52bb4d44c96de0d296188ce3885e",
      "tree": "948e90f810ce098d3ef9d8fba27b7bf2e5bf810c",
      "parents": [
        "2401ead70099c982796ecc3ec63ec8a5570948fc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 16:20:23 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 18:41:21 2012 -0700"
      },
      "message": "minor SharedBuffer clean-up\n\nChange-Id: If38b7ce85806ae628c00f2c938de4e3f75142543\n"
    },
    {
      "commit": "2401ead70099c982796ecc3ec63ec8a5570948fc",
      "tree": "70b4464149c060bf808a5cb7e15de67b612d3fe1",
      "parents": [
        "3ab68558fa5a4b8f792a54965a010f03385bd271"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 15:41:24 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 18:38:22 2012 -0700"
      },
      "message": "Add a way to retrieve a Region as a SharedBuffer\n\nChange-Id: Ia53cb905fbc88f899521658545f990fb9217b1e1\n"
    },
    {
      "commit": "3ab68558fa5a4b8f792a54965a010f03385bd271",
      "tree": "b2cc0e26815aff54e0d78480a7bff93288890427",
      "parents": [
        "4c0a170585d5c8a1f3508ac55f799ebaf86e91db"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 14:31:40 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 18:38:22 2012 -0700"
      },
      "message": "change how we store Region data internally\n\nWe used to keep the bounds of the region as a\nseparate rectangle. Instead we now store it as the last\nelement of the Vector\u003c\u003e of Rects.\n\nThis has the benefit of being slightly more efficient when\ncopying regions and reduces the overhead of small regions,\nbut more importantly will allow us to export the underlaying\nSharedBuffer (eventually).\n\nChange-Id: I80790e4fb1a09a747a5616000cfef852ac4ce9e9\n"
    },
    {
      "commit": "4c0a170585d5c8a1f3508ac55f799ebaf86e91db",
      "tree": "a5fb6a7ab7accc4dc0265572507e73c8142740b8",
      "parents": [
        "2098517e3e12a401005d7a7510d6c4943707b98d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 12:45:33 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 31 18:38:22 2012 -0700"
      },
      "message": "don\u0027t generate a new Region when translating by 0,0\n\nsince regions are copy-on-write, this prevents to\nduplicate the region entirely and offseting by 0,0 is\nfairly common.\n\nChange-Id: I9b8c286315a2e00dda01c2456397d72b5e12006b\n"
    },
    {
      "commit": "9e75ddda93888755d0b14144b62e896cd9f78f3a",
      "tree": "0640423774cc05b6b369a09f0b12c4458caca432",
      "parents": [
        "fdb6b49dfa9f1f71b2e564c9f423043f90f9346c"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 31 15:32:45 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 31 17:02:49 2012 -0700"
      },
      "message": "libgui: add BufferQueue test infrastructure\n\nThis change adds some infrastructure for testing the BufferQueue class.  It\nalso includes a test that tests the new check in BufferQueue::acquireBuffer\nthat prevents the consumer from acquiring more than one buffer beyond the max\nacquired buffer count that was set.\n\nChange-Id: I38554ad3f9a53d2ddeba7ef0deee35ec2e2f9775\n"
    },
    {
      "commit": "fdb6b49dfa9f1f71b2e564c9f423043f90f9346c",
      "tree": "8a050cb21b6f763aba5fe969931610b8308965d6",
      "parents": [
        "9ca48916bc9408d0f3f8ac95469ced0a6a342aca"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 31 14:44:50 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 31 15:54:21 2012 -0700"
      },
      "message": "libgui: disable CpuConsumer tests\n\nThis change disables the CpuConsumer tests because they require a Gralloc\nformat that is not supported on all devices.\n\nChange-Id: Ifaa618062c1dae53d9fcb9e16ba92c480d3dbd0c\n"
    },
    {
      "commit": "8210185fe337ca9d5b01f2bff8590ea60984c31e",
      "tree": "16608dd25a91e2aab270cb8c6f7c3fa556f79868",
      "parents": [
        "9ca48916bc9408d0f3f8ac95469ced0a6a342aca"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 14:15:50 2012 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Aug 31 15:40:58 2012 -0700"
      },
      "message": "No longer need \"original calling uid\".\n\nChange-Id: Ifc4a89dd088609a5a8553f6ac6553174e09e8222\n"
    },
    {
      "commit": "4697528eac85d34b2b375ece1d4b40aebe3fa5dd",
      "tree": "4c3e34bd6b8f64aa349b1041dfd6a483063832f7",
      "parents": [
        "d69097f936d9780957a51ce77335ae409b32aaa3"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:35:50 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:38:11 2012 -0700"
      },
      "message": "SurfaceTexture: fix a few tests\n\nChange-Id: Ic74fe8791361f8fe91ad7149720fafd4cc154ac1\n"
    },
    {
      "commit": "d69097f936d9780957a51ce77335ae409b32aaa3",
      "tree": "784124e451db6e0294dc68435c388e0dc844a13c",
      "parents": [
        "5e5efde7874a9fab650fd4b724ceef46db850470"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 13:28:23 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:38:11 2012 -0700"
      },
      "message": "libgui: add some error checks\n\nThis change adds a few error checks both in the framework and in some tests.\n\nChange-Id: I2baf2676942a0dc15866e75852a775a0091ed16d\n"
    },
    {
      "commit": "5e5efde7874a9fab650fd4b724ceef46db850470",
      "tree": "ded507b494376a307ac4eae961484620edaf1789",
      "parents": [
        "72f096fb1ad0a0deadbfac5f88627461905d38e8"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 28 17:18:50 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:38:11 2012 -0700"
      },
      "message": "BufferQueue: add a check for the max acquired bufs\n\nThis change adds an error check to ensure that consumers don\u0027t acquire more\nbuffers than the maximum that they set.\n\nChange-Id: I026643564bde52732e4ee6146972b207ddbbba77\n"
    },
    {
      "commit": "72f096fb1ad0a0deadbfac5f88627461905d38e8",
      "tree": "b9053a47c5403de32ee622aba17af574323b5a11",
      "parents": [
        "1847f7fd799f92300b3786e49f5883eaa03f4507"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 27 18:48:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 18:26:09 2012 -0700"
      },
      "message": "BufferQueue: use max acquired buffer count\n\nThis change makes BufferQueue derive the min undequeued buffer count from a max\nacquired buffer count that is set by the consumer.  This value may be set at\nany time that a producer is not connected to the BufferQueue rather than at\nBufferQueue construction time.\n\nChange-Id: Icf9f1d91ec612a079968ba0a4621deffe48f4e22\n"
    },
    {
      "commit": "1847f7fd799f92300b3786e49f5883eaa03f4507",
      "tree": "e0ea1ba01bffd276e628a5de013f20f09a13507f",
      "parents": [
        "2b9776982360a234803665cb79e8abcfeb0e3c79",
        "e191e6c34829aec406a9cfe3e95211f884a311ff"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:23:26 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 18:23:27 2012 -0700"
      },
      "message": "Merge \"BufferQueue: simplify max buffer count handling\" into jb-mr1-dev"
    },
    {
      "commit": "2b9776982360a234803665cb79e8abcfeb0e3c79",
      "tree": "3d20ae48be1199dccbbb2e527f2e770be6f0aca4",
      "parents": [
        "f196b56d70df6af753cb08bbb68e52498f0f37f1",
        "31a353da225af5329735451c761b430d82dfda1b"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 30 18:21:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 30 18:21:11 2012 -0700"
      },
      "message": "Merge \"BufferQueue: clean up buffer counting\" into jb-mr1-dev"
    },
    {
      "commit": "94f261556cc5f4aa628cd5b71bf923b583f6e3c3",
      "tree": "d03b949be503c02cbfd562fe492f0602cdaa96c4",
      "parents": [
        "b82af2a8aec99faf6fd37d202b98224cee461a12"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Aug 30 11:53:55 2012 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Thu Aug 30 11:53:55 2012 -0700"
      },
      "message": "Revert \"A vendor ril depends on a native screen shot code.\"\n\nThis reverts commit 9b5782baf0a8a2d7afc7129453beb5df7abe7650.\n\nA new ril for toro, hack no longer needed.\n"
    },
    {
      "commit": "e191e6c34829aec406a9cfe3e95211f884a311ff",
      "tree": "00bc3d5e16b6045f021cdca7474f34fa8a237031",
      "parents": [
        "31a353da225af5329735451c761b430d82dfda1b"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 24 20:26:34 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Aug 29 15:35:34 2012 -0700"
      },
      "message": "BufferQueue: simplify max buffer count handling\n\nThis change reworks how the maximum buffer count is computed.\n\nChange-Id: I7d3745814b9bd6f6f447f86bfea8eb7729914ebf\n"
    },
    {
      "commit": "31a353da225af5329735451c761b430d82dfda1b",
      "tree": "8fa7940f99fd7e80f13bcc58840456f48fcd9178",
      "parents": [
        "c1396dd14506d29e92fc047141d62b3d9246a72d"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 24 17:25:13 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Aug 29 15:35:34 2012 -0700"
      },
      "message": "BufferQueue: clean up buffer counting\n\nThis change is a clean up of some of the handling of the maximum number of\nbuffers that are allowed at once.  It mostly renames a few member variables and\nmethods, but it includes a couple small refactorings.\n\nChange-Id: I9959310f563d09583548d4291e1050a7bbc7d87d\n"
    },
    {
      "commit": "9b5782baf0a8a2d7afc7129453beb5df7abe7650",
      "tree": "0330952a7225ad4b42a32fa049a22faccc3ad549",
      "parents": [
        "55801e41e6d7306d75d8134dd69d7d8cbbfbc63c"
      ],
      "author": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Aug 28 16:20:50 2012 -0700"
      },
      "committer": {
        "name": "Wink Saville",
        "email": "wink@google.com",
        "time": "Tue Aug 28 16:20:50 2012 -0700"
      },
      "message": "A vendor ril depends on a native screen shot code.\n\nAdd a temporary shim until the vendor fixes the ril.\n\nBug: 7073467\nChange-Id: Ia95a58bd90677c03406c988d1c29ae785f8662f2\n"
    },
    {
      "commit": "a50b51c03aca449920fc8581a738032a7bce7150",
      "tree": "1a8e8a4ef6c7fe48c9790c5960be013c2fd913e5",
      "parents": [
        "1ae49e3fef34ee38f8dfeb08b5914e3362af3b2f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 17:06:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 17:20:53 2012 -0700"
      },
      "message": "Compatibility work around for bad graphics driver dependency.\n\nThis is a compatibility shim for one product whose drivers\nare depending on SurfaceComposerClient::getDisplayInfo(\nint, DisplayInfo*) when it really shouldn\u0027t.\n\nRevert this patch when the problem has been resolved.\n\nBug: 7065398\nChange-Id: I6542691b81fd1b1e1d79500a62e82d40a3d51db7\n"
    },
    {
      "commit": "380223bf1b340e7503177254a60d5982f95ab793",
      "tree": "7470d7e9b12987706d47b0112815f670452bb885",
      "parents": [
        "9d4e3d2f42e93e2d12bacabe97d307d30c3c20dd"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Aug 26 22:49:35 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:40:17 2012 -0700"
      },
      "message": "Remove unused \"layer\" argument from show().\n\nChange-Id: I8944a9f4a27c330b11e5e837c69b88c8f84145ba\n"
    },
    {
      "commit": "9d4e3d2f42e93e2d12bacabe97d307d30c3c20dd",
      "tree": "3db010ef45a3793c5b09887ae321b4a8095a5001",
      "parents": [
        "225c66a48cdc3acef21ee380dc134449749d3cb3"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 24 20:00:51 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 27 14:40:17 2012 -0700"
      },
      "message": "Banish DisplayID from the SurfaceFlinger API.\n\nUse only display tokens in the API to refer to new displays.\n\nDon\u0027t require the caller to specify the display when creating\na surface (since in general a surface could be shown on\nany display).\n\nThis is intended to be a minimum change just to update the API.\nNote that SurfaceFlinger still uses DisplayID in a few places\ninternally that might cause some features not to work properly\nwhen there are multiple displays (LayerScreenshot, for example).\n\nChange-Id: I3d91eec2da406eefd97bcd53655d403ad865a7e6\n"
    },
    {
      "commit": "225c66a48cdc3acef21ee380dc134449749d3cb3",
      "tree": "b0eae1a1f04f1c363f7c5e7b20fef9b5334c67dc",
      "parents": [
        "13a082e160c2d1d8006b93a555a57035213d568b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 24 16:55:29 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 24 17:16:10 2012 -0700"
      },
      "message": "Revert \"put back the unused virtuals in Vector\u003c\u003e\"\n\nThis reverts commit 1648d4c13ba2eff3ea14cd87ee94028458a39f97.\n\nBug: 6977192\n\nChange-Id: Idbb6b239aaed4fb1c054ce943f6ba06ede3492bb\n"
    },
    {
      "commit": "490aee0fc5012acf2bf0b1dfe9c09e6fcca606fc",
      "tree": "97fed915e84c3697091a9897fdb459f814071cfd",
      "parents": [
        "9b6a395e65ff88ab79fe92d6f112c434441ca606",
        "9fea3421ffddf6480f57f55a25936a886043d909"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 24 11:11:06 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 24 11:11:07 2012 -0700"
      },
      "message": "Merge \"SurfaceTexture: inherit from ConsumerBase (try 2)\" into jb-mr1-dev"
    },
    {
      "commit": "04930445031c5f41707806182bb7a152e64ddede",
      "tree": "a0468dff20e28828ac302c864a415773127aa2ef",
      "parents": [
        "3f3956236aac97b6aa25fa89f0983d5e9d065fdb",
        "e232fdca2a62dc5e81b550f5be8710e36174e7a6"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 16:46:05 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 21 16:46:05 2012 -0700"
      },
      "message": "Merge \"Add BufferItemConsumer, a simple BufferQueue consumer.\" into jb-mr1-dev"
    },
    {
      "commit": "9fea3421ffddf6480f57f55a25936a886043d909",
      "tree": "a624dbef8abd005bbbe57715b234fee4240b32c2",
      "parents": [
        "317357fdf7a2b542dfdaa06f42ff7f5f0153f9a3"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 07 18:03:04 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 21 16:41:03 2012 -0700"
      },
      "message": "SurfaceTexture: inherit from ConsumerBase (try 2)\n\nThis change makes SurfaceTexture inherit from ConsumerBase.  It removes all of\nthe functionality from SurfaceTexture that is now provided by the base class.\nThis includes fixes for two bugs that were found after checking this change in\nthe first time and then reverting it.\n\nChange-Id: Ie2d9f4f27cfef26fdac341de3152e842b01a58d2\n"
    },
    {
      "commit": "e232fdca2a62dc5e81b550f5be8710e36174e7a6",
      "tree": "567431349bc9770cb9282a2633015cc5237407fa",
      "parents": [
        "f57e7540d4cf799f18fe87d3536c55f1e0064931"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 13:37:35 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Tue Aug 21 15:46:35 2012 -0700"
      },
      "message": "Add BufferItemConsumer, a simple BufferQueue consumer.\n\nBufferItemConsumer allows for acquiring BufferQueue\u0027s BufferItems,\nwhich contain all the data and metadata the BufferQueue has for a\ngiven graphics buffer.\n\nThis consumer is useful when direct access to the native buffer_handles\nis needed by the client.\n\nAlso includes a minor cleanup of CpuConsumer\u0027s use of \u0027virtual\u0027.\n\nBug: 6243944\nChange-Id: If7dc4192b15ac499555f1eda42a85140f2434795\n"
    },
    {
      "commit": "1648d4c13ba2eff3ea14cd87ee94028458a39f97",
      "tree": "2120c7f37840a4b1e1040ad9367669bcc3a43fc2",
      "parents": [
        "317357fdf7a2b542dfdaa06f42ff7f5f0153f9a3"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 20 17:03:29 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 20 21:23:15 2012 -0700"
      },
      "message": "put back the unused virtuals in Vector\u003c\u003e\n\nsome binaries are using these private APIs and broke\n(as they should!) with this change. Temporarily restore the\nvirtuals to work around this.\n\nBug: 6977550\nChange-Id: I7c37f24b16e4d586b89205c493db5169cf87e024\n"
    },
    {
      "commit": "84a9a3c0ec35915d3cc40e9e889d4032e189894a",
      "tree": "f262a545d384d4e9a4ae1709e1592f565d89dbac",
      "parents": [
        "729f48082e2c7660e94830e52006f7af4efb747a",
        "f57e7540d4cf799f18fe87d3536c55f1e0064931"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 16:18:10 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 16:18:11 2012 -0700"
      },
      "message": "Merge \"CpuConsumer: inherit from ConsumerBase\" into jb-mr1-dev"
    },
    {
      "commit": "f57e7540d4cf799f18fe87d3536c55f1e0064931",
      "tree": "a6b8e1fe1fb257a41fdf7bc0c9ee35d7aa6d0bb1",
      "parents": [
        "13233e067b8f71adc3a0ade5f442265e1f27084b"
      ],
      "author": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 15:44:40 2012 -0700"
      },
      "committer": {
        "name": "Eino-Ville Talvala",
        "email": "etalvala@google.com",
        "time": "Mon Aug 20 15:44:40 2012 -0700"
      },
      "message": "CpuConsumer: inherit from ConsumerBase\n\nChange-Id: I55178b1d673ffa0fbc6e63ef47642c64d4d03228\n"
    },
    {
      "commit": "729f48082e2c7660e94830e52006f7af4efb747a",
      "tree": "aa786c00e041954ecf68d0a4be23dc4b7a5a45fe",
      "parents": [
        "f7f6345068fe0644bf296b88a687b361eae0cc98",
        "ce7a6c0fc9d75b80da030d1790321e84475f956a"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 20 14:33:23 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 14:33:24 2012 -0700"
      },
      "message": "Merge \"Revert \"SurfaceTexture: inherit from ConsumerBase\"\" into jb-mr1-dev"
    },
    {
      "commit": "f7f6345068fe0644bf296b88a687b361eae0cc98",
      "tree": "1094b6a3d3ebbedc5af080a25bdb936f9053821b",
      "parents": [
        "b3d68efa7e807070ed63cfad3f7576055c58eeba",
        "483bccd0d9f7e5e7aa452e9e3e53056387f4b25c"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 20 14:33:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 14:33:16 2012 -0700"
      },
      "message": "Merge \"Revert \"SurfaceTexture: call ConsumerBase::freeBufferLocked\"\" into jb-mr1-dev"
    },
    {
      "commit": "ce7a6c0fc9d75b80da030d1790321e84475f956a",
      "tree": "f8d3a92d5c056a8e00d129381c4f74c51d4a082e",
      "parents": [
        "ed059a8d754770c3cf28b78dba30f7a6ba475dbe"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 20 14:28:53 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 14:28:53 2012 -0700"
      },
      "message": "Revert \"SurfaceTexture: inherit from ConsumerBase\"\n\nThis reverts commit ed059a8d754770c3cf28b78dba30f7a6ba475dbe\n\nChange-Id: I72542c2595771a40c2c88251e0d6eb54e305b99b\n"
    },
    {
      "commit": "483bccd0d9f7e5e7aa452e9e3e53056387f4b25c",
      "tree": "cb381633384a19a10064536b60a571f8c6fb2076",
      "parents": [
        "f8d33c652b930abbfb0722f3a2928cbc2ea71078"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 20 14:28:21 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 14:28:21 2012 -0700"
      },
      "message": "Revert \"SurfaceTexture: call ConsumerBase::freeBufferLocked\"\n\nThis reverts commit f8d33c652b930abbfb0722f3a2928cbc2ea71078\n\nChange-Id: I1ff2e1cc85824a8fac1051f573d2931db81af511\n"
    },
    {
      "commit": "220ef10c5fe44df0ff3898de06028975995a34e4",
      "tree": "394efdb66a1b5b0e4f33f402d4386fd202587c0d",
      "parents": [
        "d3bbcaff6f0e08db0412d92f42562a2826a58bec",
        "f8d33c652b930abbfb0722f3a2928cbc2ea71078"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 20 12:39:37 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 20 12:39:38 2012 -0700"
      },
      "message": "Merge \"SurfaceTexture: call ConsumerBase::freeBufferLocked\" into jb-mr1-dev"
    },
    {
      "commit": "f8d33c652b930abbfb0722f3a2928cbc2ea71078",
      "tree": "0e9e364438f492dc2cb1c2968d7fbc0958f99440",
      "parents": [
        "2c7eb92b6394427bfe81962668d46194959bc722"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 20 11:30:44 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 20 11:30:44 2012 -0700"
      },
      "message": "SurfaceTexture: call ConsumerBase::freeBufferLocked\n\nThis change fixes SurfaceTexture::freeBufferLocked so that it calls the base\nclass implementation.\n\nChange-Id: I45d76fb2eb02c1fa6e4e917823ead83e2086bd15\n"
    },
    {
      "commit": "d3bbcaff6f0e08db0412d92f42562a2826a58bec",
      "tree": "0f2ff8b428e9eed40c59f2287c90b54806cfb963",
      "parents": [
        "0adc8f260023ec25c31ff4ceadde047528cb64ab",
        "21938749faf2c4dd0c77bee3dec1f7a85780c85a"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Aug 20 10:22:33 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Aug 20 10:22:33 2012 -0700"
      },
      "message": "resolved conflicts for merge of 21938749 to jb-mr1-dev\n\nChange-Id: I17da10797736f3772a143e2015fe25df0bb3eb3f\n"
    },
    {
      "commit": "2c7eb92b6394427bfe81962668d46194959bc722",
      "tree": "cb381633384a19a10064536b60a571f8c6fb2076",
      "parents": [
        "cd60f99aba9e750700a967db30b74a29145739cf",
        "ed059a8d754770c3cf28b78dba30f7a6ba475dbe"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Fri Aug 17 15:35:17 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Aug 17 15:35:17 2012 -0700"
      },
      "message": "Merge \"SurfaceTexture: inherit from ConsumerBase\" into jb-mr1-dev"
    },
    {
      "commit": "818b46058aa3006e1d3c178abd36d4f10823f5d9",
      "tree": "741368663f57ef8ed8dd4f46cc1e781686885a8b",
      "parents": [
        "111b2d89221722d38f5b5b3ba65904ec22421839"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 20:57:39 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 16 20:58:57 2012 -0700"
      },
      "message": "display states can\u0027t share the dirty flags\n\nChange-Id: Ifade9f2f1a0df9a36aede77a6cf5eee4be534f98\n"
    },
    {
      "commit": "ed059a8d754770c3cf28b78dba30f7a6ba475dbe",
      "tree": "bde20ea117d55ce9fab31604bfb6280272014695",
      "parents": [
        "3559b07a885bcdff51a6dffb8e3a5ac5adf3a220"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Aug 07 18:03:04 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 16 18:11:02 2012 -0700"
      },
      "message": "SurfaceTexture: inherit from ConsumerBase\n\nThis change makes SurfaceTexture inherit from ConsumerBase.  It removes all of\nthe functionality from SurfaceTexture that is now provided by the base class.\n\nChange-Id: I4a881df42810a14ee32d4ef7c8772a8f2510f4c7\n"
    },
    {
      "commit": "f0083bf5288e0d430b0dc5cbc4b4852bce2ff1af",
      "tree": "0050b3fcea9ee008bb05b4f95b67031f19860eb6",
      "parents": [
        "20128300e0cb7f459a60cfbcddb48190ce6545ed",
        "6f12d573251528086636707dde2fb01a8b7199b8"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Aug 13 23:35:07 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 13 23:35:08 2012 -0700"
      },
      "message": "Merge \"Add a very simple helper function to log slow functions.\" into jb-mr1-dev"
    },
    {
      "commit": "8683fca395d01734ec7946e9f0595ec5d7b754c6",
      "tree": "fe3f6b92245be46902760c129e395c94589b9895",
      "parents": [
        "e57f292595bec48f65c8088b00ff6beea01217e9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Aug 12 19:37:16 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 13 02:46:05 2012 -0700"
      },
      "message": "improve [un]marshalling of non-binder objects\n\nthis change introduces a new class LightFlattenable\u003c\u003e which is\na protocol to flatten simple objects that don\u0027t require\nbinders or file descriptors; the benefit of this protocol is that\nit doesn\u0027t require the objects to have a virtual table and give us\na consitant way of doing this.\n\nwe also introduce an implementation of this protocol for\nPOD structures, LightFlattenablePod\u003c\u003e.\n\nParcel has been update to handle this protocol automatically.\n\nSensor, Rect, Point and Region now use this new protocol.\n\nChange-Id: Icb3ce7fa1d785249eb666f39c2129f2fc143ea4a\n"
    },
    {
      "commit": "6f12d573251528086636707dde2fb01a8b7199b8",
      "tree": "460216732eecae5597ada876286a95a231e86a3c",
      "parents": [
        "e57f292595bec48f65c8088b00ff6beea01217e9"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 10 20:44:39 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Aug 10 22:03:55 2012 -0700"
      },
      "message": "Add a very simple helper function to log slow functions.\n\nChange-Id: I2e2e072206d02b572a330dd25857c161b5b563bf\n"
    },
    {
      "commit": "e57f292595bec48f65c8088b00ff6beea01217e9",
      "tree": "2db8aac9c9056e099ad70d7ce70eb0ac7a8223ae",
      "parents": [
        "ef7b9c7eac036cc1230c64821039d18f8cbd2c1c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 09 16:29:12 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 17:32:33 2012 -0700"
      },
      "message": "make multi-display more real\n\n- displays are represented by a binder on the client side\n- c++ clients can now create and modify displays\n\nChange-Id: I203ea5b4beae0819d742ec5171c27568f4e8354b\n"
    },
    {
      "commit": "3165cc21cfea781988407b19bd83292b19f05f55",
      "tree": "c15822a2e6e291d2b33bffb31769b4c2ec003d20",
      "parents": [
        "1e26087493ac0e7d7dc6dea8ad85cfef08b3271f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 08 19:42:09 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 13:18:24 2012 -0700"
      },
      "message": "libgui includes refactoring\n\nChange-Id: I1d24ec17f5003ec2abab5f7472daaff4cc4cc2d3\n"
    },
    {
      "commit": "69973992d531ae7df20916c6fb3034b08a6d53c4",
      "tree": "4d2110fe566da6598c9a1ac297cf4540497e20a8",
      "parents": [
        "599d48825f040c074027ffaf9e4b5490428adacb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 09 19:39:15 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 10 13:15:00 2012 -0700"
      },
      "message": "improve Vector\u003c\u003e safety checks\n\n- make errors that will always cause a memory corruption always fatal\n  (for eg: KeyedVector\u003c\u003e::editValue{For|At}() failure)\n- make other errors fatal in debug mode, those that can be caught by\n  the caller.\n- fix typos\n\nChange-Id: I65cc7d81035c37ce2906fc4500c50e5d5b5c49eb\n"
    },
    {
      "commit": "3d1d09c0c116c42f7d083f87628b5f8377b1f275",
      "tree": "4cbca384e96b019013720b4d2c7fcd98380b41a1",
      "parents": [
        "b685c542836b93c99cd85053e07696406ea37adb"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Aug 08 15:39:55 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Aug 08 15:39:55 2012 -0700"
      },
      "message": "SurfaceTexture: Fix a fence fd leak.\n\nBug: 6949010\nChange-Id: I289992c964504b4fe5458dbd19b248a841ef043f\n"
    },
    {
      "commit": "14bd369e4b711bfb267279c2161358542ed75b29",
      "tree": "638d97d8374ad43338d8ccf7b41c9a3e50bffe98",
      "parents": [
        "92516c84ef2a167524007a0584fb26018b5cb9c4",
        "45cb2ba1d52d81e20702b62610422fb09aaedeae"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 06 19:15:51 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Aug 06 19:15:51 2012 -0700"
      },
      "message": "Merge changes Ic3d35a93,I46ec942d into jb-mr1-dev\n\n* changes:\n  SurfaceTexture: fix an out of bounds array access\n  surfaceflinger: refactor FrambufferSurface\n"
    },
    {
      "commit": "45cb2ba1d52d81e20702b62610422fb09aaedeae",
      "tree": "a1f5b18dfc53082dfdb8421725bce0845d15aa03",
      "parents": [
        "1a4d883dcc1725892bfb5c28dec255a233186524"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 06 17:10:57 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 06 18:55:01 2012 -0700"
      },
      "message": "SurfaceTexture: fix an out of bounds array access\n\nBug: 6879028\nChange-Id: Ic3d35a9384c0a6dfa4000e7743a6f6859608b0bf\n"
    },
    {
      "commit": "1a4d883dcc1725892bfb5c28dec255a233186524",
      "tree": "f62c82a907154a122adc89bdd2389f6797828975",
      "parents": [
        "028a7572c81f91e4039b694cde1f55fdb3e483c7"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Thu Aug 02 20:11:05 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Mon Aug 06 18:55:01 2012 -0700"
      },
      "message": "surfaceflinger: refactor FrambufferSurface\n\nThis change refactors the FramebufferSurface class to inherit from the new\nConsumerBase class.\n\nBug: 6620200\nChange-Id: I46ec942ddb019658e3c5e79465548b171b2261f2\n"
    },
    {
      "commit": "53095e25d69206bea1ac15a7382ab8b61155c0c1",
      "tree": "f641f279b761815507493003f851dc628362a748",
      "parents": [
        "028a7572c81f91e4039b694cde1f55fdb3e483c7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Aug 05 12:41:16 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Aug 05 12:41:16 2012 -0700"
      },
      "message": "libutils cleanup: remove unused or seldom used code from misc.{cpp|h}\n\nChange-Id: I72206f16619d81887e3b85603494563faab3b445\n"
    },
    {
      "commit": "72131d9ef13ffaf3af4ca2fe700426b82baac9fa",
      "tree": "1295a7d1ce305d88670fcb2357c340dcc2052746",
      "parents": [
        "c1d359d42b753fcc2426d66a0f782f7c300893bc"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Aug 04 20:22:32 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sat Aug 04 20:22:32 2012 -0700"
      },
      "message": "remove unneeded dependencies in libhardware\n\nChange-Id: Ibb8d698d594216d0746b0e7270cf87d7e5acab2b\n"
    },
    {
      "commit": "92efd84f37ce5a8aae74dc9086f825a67b6894e9",
      "tree": "a943214d564f8f702491aeac0b21149a38dcf1b6",
      "parents": [
        "92a979a92c34b7de609ce2b1662c73bb8a2728b9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 02 21:27:56 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 03 13:22:58 2012 -0700"
      },
      "message": "screen-off animation won\u0027t be handled by SF anymore\n\nChange-Id: Idc41386804ae7d7eb981c36e1bc55c270870c8d0\n"
    },
    {
      "commit": "4f9c284de4b9159126f69eb1219c410f66cc872c",
      "tree": "c21f1d7bce76a184e8073841a47b1d91136816b2",
      "parents": [
        "1dd2003f1a9a7a4826da7a4b565d41b941b7cc5d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 01 19:16:59 2012 -0700"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@google.com",
        "time": "Wed Aug 01 19:16:59 2012 -0700"
      },
      "message": "Add missing break in switch statement\n\nChange-Id: I6206cc9ca46c4e2f125d3d820256280586ad66a1\n"
    },
    {
      "commit": "12bd497f280a69ae5fe7694ae3146008cacc0eb6",
      "tree": "65f9353b792800ce8055da14505cb2a3831fbe9c",
      "parents": [
        "b6ae16f04e0655f938cd511c3965fa00e2ae6763"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jul 31 14:01:57 2012 -0700"
      },
      "committer": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Tue Jul 31 17:07:53 2012 -0700"
      },
      "message": "libgui: enable EGL_fence_sync usage for exynos5\n\nBug: 6876502\nChange-Id: I2ec2800881dcba9e4f6ff32ffa1341a2de01f0a2\n"
    },
    {
      "commit": "e21facef01b2e8d2558e4561639eaf9ff135e312",
      "tree": "3ff493063c90ece56f6faeb822fa3dcf8317120c",
      "parents": [
        "747c480b0e3cf9401ff53421be6a82b23fdc04c2",
        "d83d67b5d5e98b7f0bdf54b68f6ea28fa4905a33"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 30 15:21:59 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 30 15:22:00 2012 -0700"
      },
      "message": "Merge \"log more info on fence sync_merge error\" into jb-mr1-dev"
    },
    {
      "commit": "d83d67b5d5e98b7f0bdf54b68f6ea28fa4905a33",
      "tree": "6bc8597b19bf03006341a25680ff5e2c7b5a9691",
      "parents": [
        "c666cae2d5995097ec49a87e375e2afdd92802b7"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 30 15:10:35 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 30 15:10:35 2012 -0700"
      },
      "message": "log more info on fence sync_merge error\n\nalso fix a typo where the wrong value was passed to sterror.\n\nChange-Id: I4df2abe582e14c8f816b65818f4593a6bd3c23ea\n"
    },
    {
      "commit": "747c480b0e3cf9401ff53421be6a82b23fdc04c2",
      "tree": "5dec2bd0b82021367c1707faaf11be7a0b4b719b",
      "parents": [
        "657ea79b623101bd0ae540267645ecfd9a3e07ba",
        "72a36d876d81f0336173bc92996570db96cabd96"
      ],
      "author": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sat Jul 28 09:55:54 2012 -0700"
      },
      "committer": {
        "name": "Ed Heyl",
        "email": "ed@google.com",
        "time": "Sat Jul 28 09:55:54 2012 -0700"
      },
      "message": "Merge remote-tracking branch \u0027goog/jb-dev-mako\u0027 into jb-mr1-dev\n\nConflicts:\n\tinclude/media/hardware/CryptoAPI.h\n\nChange-Id: I84bf34edbef000558f088bbf1d1e5b55d6217d2e\n"
    },
    {
      "commit": "c666cae2d5995097ec49a87e375e2afdd92802b7",
      "tree": "235abd54f4c3c6ed2c6b59bbade55a6459f13ed8",
      "parents": [
        "028508cad5ef63ef9fbd42c14e76658e4fd9ebf2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 25 18:56:13 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 25 21:13:10 2012 -0700"
      },
      "message": "get rid of the shared-memory control block\n\nChange-Id: If814060aca1d2ff2619d4adcd57296983d207f7f\n"
    },
    {
      "commit": "8785578391eacd4192333d7b0ce3afedd7d163e6",
      "tree": "62249d4b8556b12eede54e09c9b5a5f34f9e52ec",
      "parents": [
        "8b33f032327f8de0dcc0e6d0d43ed80f834b51f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 21:41:09 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 21:42:27 2012 -0700"
      },
      "message": "add a layerStack attribute to Layers.\n\nthis attribute can be set through a regular transaction using\nSurfaceComposerClient (just like any other attribute, eg: position or size)\n\nChange-Id: I701a47c677ea6442ca713728a93335328cd2b172\n"
    },
    {
      "commit": "8b33f032327f8de0dcc0e6d0d43ed80f834b51f6",
      "tree": "d6228a0088740fe5f5c73f405f353bffd121bbae",
      "parents": [
        "921e6ac4b7610a178285898d191eb0e3afe906c0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 20:43:54 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jul 24 20:43:54 2012 -0700"
      },
      "message": "update SF binder protocol to support setting display attributes\n\nno change of functionality -- the old behavior is implemented\non top of this new protocol.\nthis new protocol will allow, eventually, to pass informations\nabout displays and layer stacks.\n\nChange-Id: Ic6c2295e61ec8ecbc8ce01ab7664e35d928202fc\n"
    },
    {
      "commit": "074cd0c0765d1aec5a4ff5ac460f0685ae067fb1",
      "tree": "318371eaf5d0e59babc3338889b83e3d5731c742",
      "parents": [
        "df5cbd76224ea1facb7cfb499f4d522e55753774"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Jul 19 09:17:24 2012 -0700"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Thu Jul 19 16:06:21 2012 -0700"
      },
      "message": "Add elapsedRealtimeNano(), and use CLOCK_BOOTTIME where possible.\n\nChange-Id: I4231c8ca32663e6e2cb5b7c126d091f837373807\n"
    },
    {
      "commit": "6501e9944df131b3b7e293007084735dfa217f24",
      "tree": "2849339f6af82a543c3e75edae089bd2c46b9e0e",
      "parents": [
        "f9176a93a5c9061fe001c91bca50dd0a58d54f10"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 15:38:18 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 15:38:18 2012 -0700"
      },
      "message": "Remove freeze(), unfreeze() and setFreezeTint().\n\nThis is all dead code.\n\nChange-Id: I646673aac793a6ec45021c370a2450f0ea4fbcce\n"
    },
    {
      "commit": "f9176a93a5c9061fe001c91bca50dd0a58d54f10",
      "tree": "f4b0455ebf6dc7f5a722917866e254934eff0c29",
      "parents": [
        "4bb0164f8ac26a71113f44b4d482cf8167b5b5ee"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 14:58:11 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 16 14:58:11 2012 -0700"
      },
      "message": "Remove freezeDisplay(), which is no-op.\n\nChange-Id: I2b70249a1545636fd6d98b58057b22f9529cad21\n"
    },
    {
      "commit": "47ad361cee48a026c8c3695da04aab75e1e7b925",
      "tree": "6c29e0aef7141053639b50399558a0ed58f3f68c",
      "parents": [
        "db1597a98958b78dc0d8eced19ae1406382b70d6"
      ],
      "author": {
        "name": "Steve Critchlow",
        "email": "steve.critchlow@sonymobile.com",
        "time": "Tue Jul 10 14:09:10 2012 +0200"
      },
      "committer": {
        "name": "Henrik Baard",
        "email": "henrik.baard@sonymobile.com",
        "time": "Tue Jul 10 14:09:10 2012 +0200"
      },
      "message": "Fix error trap in SurfaceTexture Client\n\nThere was an issue in Surface::lock where failure to lock a surface\nresulted in two bad things happening:\n- success was returned to the caller (it was apparently locked).\n- an uninitialised pointer was returned as the buffer.\n\nChange-Id: I8b0df81400e0fa0542a8bb993d76923ac96b686e\n"
    },
    {
      "commit": "0bc64be3f5198f8dda1ced21bbc957a1d76efbb7",
      "tree": "4fa7dd1ad90ea500c918122c63a5d9019aafe9c9",
      "parents": [
        "07912f50930cf8cea2bc5f8f94e014c31af583b6"
      ],
      "author": {
        "name": "Naseer Ahmed",
        "email": "naseer@codeaurora.org",
        "time": "Fri Jun 29 12:02:32 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Mon Jul 09 22:04:19 2012 -0700"
      },
      "message": "libs/ui: Add support for triple framebuffers\n\nChange-Id: I90dd38deeeda9a3785b87286cc7d252c6f948750\n"
    },
    {
      "commit": "e7db724bed5d1e5086801df7705d9b1f2a071785",
      "tree": "494e7fd1aaef90095ebd936496803bb7a5cd2539",
      "parents": [
        "c5c5a14c06de249d8e0445fd24699e1d9aa04549"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Jul 03 13:41:54 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Tue Jul 03 13:41:54 2012 -0700"
      },
      "message": "Fix check for fence merge success\n\nChange-Id: I9b16526ebfe4ffabf7c4372cca9b192ce046aa21\n"
    },
    {
      "commit": "dc5b485f74edf2d2f31c62054eb6c180421a3ade",
      "tree": "f33c9322cadc2895f0e0f28c1968d796c423c8c6",
      "parents": [
        "b42b1ac1587aebda5e2f334d95b620271fafba4e"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 29 15:21:18 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Jun 30 21:38:51 2012 -0700"
      },
      "message": "Pass fence to HWC on first use of buffer\n\nAlso do a CPU-wait on the fence before using it for GL composition.\n\nChange-Id: I0f645a42a44803276cae11b904e5a26d65871562\n"
    },
    {
      "commit": "b42b1ac1587aebda5e2f334d95b620271fafba4e",
      "tree": "5852fb46f80587194d109b3baa04a91af443181b",
      "parents": [
        "c777b0b3b9b0ea5d8e378fccde6935765e28e329"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 28 14:27:53 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Jun 30 21:38:51 2012 -0700"
      },
      "message": "Return fence from acquireBuffer\n\nChange-Id: Iab22054c1dc4fd84affab3cc5bbdcd5a1e689666\n"
    },
    {
      "commit": "c777b0b3b9b0ea5d8e378fccde6935765e28e329",
      "tree": "83ef3d6288766dc474bb9a77ebc947b0857865df",
      "parents": [
        "02a7be74dd0c4eb47a522cb0f646736cb6d0de01"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 28 12:52:05 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Sat Jun 30 21:38:51 2012 -0700"
      },
      "message": "Pass fences with buffers from SurfaceTextureClient\n\nChange-Id: I09b49433788d01e8b2b3684bb4d0112be29538d3\n"
    },
    {
      "commit": "02a7be74dd0c4eb47a522cb0f646736cb6d0de01",
      "tree": "022598206571a5838a56f9f1402a18482d6bb147",
      "parents": [
        "962174da0303d94180af7648faf90e112b851192",
        "d58c304cc60be46a363fdcdce6da06e4ecb589b6"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 29 09:54:25 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 29 09:54:25 2012 -0700"
      },
      "message": "Merge \"Clarify aborted updateTexImage use of fences\""
    },
    {
      "commit": "962174da0303d94180af7648faf90e112b851192",
      "tree": "f6b295d954514cfadb78e61411b69a30b56a8c6c",
      "parents": [
        "33264868ba0aaccb9d4b5e5a067a79a43633f6ec",
        "f9783af225aa3b41ec0af36f90941a714269abb7"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Fri Jun 29 09:54:08 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 29 09:54:08 2012 -0700"
      },
      "message": "Merge \"Return fence to client in dequeuBuffer\""
    },
    {
      "commit": "d58c304cc60be46a363fdcdce6da06e4ecb589b6",
      "tree": "30ff2d25f110e5cc78ea12bb384eb0c0d7a04a9f",
      "parents": [
        "f9783af225aa3b41ec0af36f90941a714269abb7"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 28 15:06:53 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 28 17:08:42 2012 -0700"
      },
      "message": "Clarify aborted updateTexImage use of fences\n\nWhen updateTexImage acquires a buffer but then aborts (due to an error\nor the buffer being rejected), it releases the newly-acquired buffer.\nIt was passing the buffer slot\u0027s fences to releaseBuffer, even though\nthey hadn\u0027t been created after the acquire yet. This wasn\u0027t a bug,\nsince the fences would be cleared just after the buffer slot was last\nreleased, but explicitly passing null fences makes this clearer.\n\nChange-Id: I087f2ec3fd02c40f57782c1fca24eb9567e2943d\n"
    },
    {
      "commit": "f9783af225aa3b41ec0af36f90941a714269abb7",
      "tree": "6d6ff4e211848dddf2314da20cf27548b2bf83c6",
      "parents": [
        "b7c839b1103f72f8eb89fc0e19f7805969fc622f"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Mon Jun 25 13:54:23 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 28 17:08:42 2012 -0700"
      },
      "message": "Return fence to client in dequeuBuffer\n\nChange-Id: Ic19750793ad993f0e85391f3cabd743ba565d4c9\n"
    },
    {
      "commit": "3094df359d1e6e2ae8ca4e935cc093f563804c96",
      "tree": "e103ad608725652ec640963481151b59432c7475",
      "parents": [
        "852db07d69352ec5f75e16a6e5059f05faabdaf5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 18 18:06:45 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 28 15:51:08 2012 -0700"
      },
      "message": "First prototype atttempting to support an external display\n\nboth API and implementation will change, this is just a prototype\nintended to show feasability.\n\nSurfaceFlinger is passed an ISurfaceTexture through a new\ncallback, it is in turn used to create an EGLSurface which\nsurfaceflinger will draw into in addition to the main screen.\n\nChange-Id: Id0bbb0b854bb7bae44d57246a90b65d4567f9a21\n"
    },
    {
      "commit": "ec44ed0758871db896d9c7d5c09f7084ddea1c7a",
      "tree": "5cb5531020a1bb40bfd96dd570ca3c89b98409db",
      "parents": [
        "3443b333f16cd356d7cc7322810fe6188f58f1d9"
      ],
      "author": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Jun 27 15:34:43 2012 -0700"
      },
      "committer": {
        "name": "John Grossman",
        "email": "johngro@google.com",
        "time": "Wed Jun 27 15:34:43 2012 -0700"
      },
      "message": "Utils: Fix a bug in the linear transformation code.\n\nHand merge from ics-aah\n\n\u003e Utils: Fix a bug in the linear transformation code.\n\u003e\n\u003e Fix a bug where an incorrect result would be computed if you used the\n\u003e linear transformation code to do a reverse transformation (from B\u0027s\n\u003e domain into A\u0027s domain) when the scaler fraction was negative.\n\u003e\n\u003e Change-Id: I8e5f109314d235a177ab41f65d3c4cd08cff78be\n\u003e Signed-off-by: John Grossman \u003cjohngro@google.com\u003e\n\nChange-Id: Id90e18f685c61c1a89fd91c32adcf01363b3e8f3\nSigned-off-by: John Grossman \u003cjohngro@google.com\u003e\n"
    },
    {
      "commit": "3443b333f16cd356d7cc7322810fe6188f58f1d9",
      "tree": "b3aabc8556e80d3c99019c5eb78b29a272b50cd8",
      "parents": [
        "b7c839b1103f72f8eb89fc0e19f7805969fc622f",
        "db1597a98958b78dc0d8eced19ae1406382b70d6"
      ],
      "author": {
        "name": "Johannes Carlsson",
        "email": "johannes.carlsson.x@sonyericsson.com",
        "time": "Mon Jun 25 14:06:56 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jun 25 14:06:56 2012 -0700"
      },
      "message": "am db1597a9: Fix shutdown sequence to avoid SIGSEGV when running am command\n\n* commit \u0027db1597a98958b78dc0d8eced19ae1406382b70d6\u0027:\n  Fix shutdown sequence to avoid SIGSEGV when running am command\n"
    },
    {
      "commit": "db1597a98958b78dc0d8eced19ae1406382b70d6",
      "tree": "730cb59e988106c42aad61f56e15e533af05f1d1",
      "parents": [
        "589cdbed556fd38a95895ab684dbcded7f4851e9"
      ],
      "author": {
        "name": "Johannes Carlsson",
        "email": "johannes.carlsson.x@sonyericsson.com",
        "time": "Thu Feb 17 14:06:53 2011 +0100"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Jun 25 13:58:47 2012 -0700"
      },
      "message": "Fix shutdown sequence to avoid SIGSEGV when running am command\n\nWhen the app_process is shutting down the main thread will close the\nbinder fd while pool threads are executing an ioctl (in\nIPCThreadState::stopProcess called by AppRuntime::onStarted in\napp_main.c).\n\nThe binder driver will then return all pending calls in ioctl\nwithout any error and with a command. One of the threads gets a\nBR_SPAWN_LOOPER which will create a new thread (the other thread\ngets a BR_NOOP). This new thread then calls\nvm-\u003eAttachCurrentThread. Usually this results in a log entry with\n\"AndroidRuntime: NOTE: attach of thread \u0027Binder Thread #3\u0027 failed\",\nbut sometimes it also causes a SIGSEGV. This depends on the timing\nbetween the new thread an the main thread that calls DestroyJavaVM\n(in AndroidRuntime::start).\n\nIf IPCThreadState.cpp is compiled with \"#define LOG_NDEBUG 0\" the\npool thread will loop and hit the\nALOG_ASSERT(mProcess-\u003emDriverFD \u003e\u003d 0) in\nIPCThreadState::talkWithDriver.\n\nCrashes like this has been seen when running the am command and\nother commands that use the app_process.\n\nThis fix makes sure that any command that is received when the driver\nfd is closed are ignored and IPCThreadState::talkWithDriver instead\nreturns an error which will cause the pool thread to exit and detach\nitself from the vm. A check to avoid calling ioctl to a fd with -1\nwas also added in IPCThreadState::threadDestructor.\n\nAnother solution might be to change the binder driver so that it\nreturns an error when the fd is closed (or atleast not a\nBR_SPAWN_LOOPER command). It might also be possible to call exit(0)\nwhich is done when System.exit(0) is called from java.\n\nChange-Id: I3d1f0ff64896c44be2a5994b3a90f7a06d27f429\n"
    },
    {
      "commit": "f78575400977f644cf0b12beb2fa5fc278b6ed4c",
      "tree": "075c491472c6584c30920dbb26f8c97811e2f882",
      "parents": [
        "ef19414bd8b77a26f5751f3845be79025a8263fe"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 14 15:26:33 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 22:21:12 2012 -0700"
      },
      "message": "Pass fences from BufferQueue to SurfaceTextureClient\n\nISurfaceTexture::dequeueBuffer now returns the buffer\u0027s fence for the\nclient to wait on. For BufferQueue, this means passing it through\nBinder so it can be returned to the SurfaceTextureClient. Now\nSurfaceTextureClient is responsible for waiting on the fence in\ndequeueBuffer instead of BufferQueue: one step closer to the goal.\n\nChange-Id: I677ae758bcd23acee2d784b8cec11b32cccc196d\n"
    },
    {
      "commit": "ef19414bd8b77a26f5751f3845be79025a8263fe",
      "tree": "9624b3d718e065747bedff50cb969151d675a471",
      "parents": [
        "a74cbc06493ed941a8a54f2f1d0074f03fc9aafb"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 14 14:45:17 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 22:21:12 2012 -0700"
      },
      "message": "Transfer HWC release fences to BufferQueue\n\nAfter a HWC set, each SurfaceFlinger Layer retrieves the release fence\nHWC returned and gives it to the layer\u0027s SurfaceTexture. The\nSurfaceTexture accumulates the fences into a merged fence until the\nnext updateTexImage, then passes the merged fence to the BufferQueue\nin releaseBuffer.\n\nIn a follow-on change, BufferQueue will return the fence along with\nthe buffer slot in dequeueBuffer. For now, dequeueBuffer waits for the\nfence to signal before returning.\n\nThe releaseFence default value for BufferQueue::releaseBuffer() is\ntemporary to avoid transient build breaks with a multi-project\ncheckin. It\u0027ll disappear in the next change.\n\nChange-Id: Iaa9a0d5775235585d9cbf453d3a64623d08013d9\n"
    },
    {
      "commit": "a74cbc06493ed941a8a54f2f1d0074f03fc9aafb",
      "tree": "f9ece14d0f5b4751cd8085222d4ecdb4ca9cee75",
      "parents": [
        "d8e812ce6fe9ae0388e98b08456e1d18b9498239"
      ],
      "author": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 11:35:23 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Thu Jun 21 11:56:49 2012 -0700"
      },
      "message": "Move remaining bits of lockBuffer to dequeueBuffer\n\nFramebufferNativeWindow::dequeueBuffer now waits for the next buffer\nto be non-front in addition to being free.\n\nChange-Id: I991f154958cc6b488b1241aba83d1f95a0513b3c\n"
    },
    {
      "commit": "d8e812ce6fe9ae0388e98b08456e1d18b9498239",
      "tree": "49d694305ba98c49997e8d92ece28da939ad13ed",
      "parents": [
        "f25e183a70bd631f75dce51e85b7d568472a0cdb"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jun 13 16:32:25 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Jun 20 15:48:30 2012 -0700"
      },
      "message": "Update ANativeWindow clients for sync\n\nThis change updates the uses of ANativeWindow to use the new ANW functions that\naccept and return Sync HAL fence file descriptors.\n\nChange-Id: I3ca648b6ac33f7360e86754f924aa072f95242f6\n"
    },
    {
      "commit": "f25e183a70bd631f75dce51e85b7d568472a0cdb",
      "tree": "adeaf3920d889c4caffca6884d83bf6b0d9c0b3f",
      "parents": [
        "aa049f0d19684cf92f2f6510133a33138845dcd3"
      ],
      "author": {
        "name": "Jamie Gennis",
        "email": "jgennis@google.com",
        "time": "Wed Jun 13 16:31:43 2012 -0700"
      },
      "committer": {
        "name": "Jesse Hall",
        "email": "jessehall@google.com",
        "time": "Wed Jun 20 15:48:30 2012 -0700"
      },
      "message": "libui: add the Fence class\n\nThis change adds the Fence class to libui for to wrap the libsync\nfunctionality.\n\nChange-Id: I93a31baeee608b93c14da807a32013dabf783f84\n"
    },
    {
      "commit": "3e87601170141229d661df93e2f59e1ced73474b",
      "tree": "e079df58541938d0854cabb2a1394c221a2dc98f",
      "parents": [
        "04d7eaf138678ef591076ff02b896f93394bcfaf"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 07 17:52:54 2012 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 13 18:07:47 2012 -0700"
      },
      "message": "Implement SurfaceFlinger\u0027s ANW on top of BufferQueue\n\nSF now has its own implementation of ANW for the\nframebuffer and it uses BufferQueue. FramebufferNativeWindow\nis now only used by stand-alone apps.\n\nChange-Id: Iddeb24087df62bd92b0f78e391dda9b97ddc859c\n"
    },
    {
      "commit": "52cf768fc24f7b6b8f4bacf8b630acc1fbee7e2f",
      "tree": "1f91fc18b4aa4807a6a9bda091e5294e9f9ff40c",
      "parents": [
        "bd3ad5b23fa026be35595ebf52633e2d51cfc1ca",
        "8e533069e5721e55cb9768e140e16546c3a4a8b6"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jun 08 14:14:18 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 08 14:14:18 2012 -0700"
      },
      "message": "Merge \"surfaceflinger: replace early suspend with binder call from PowerManager\""
    },
    {
      "commit": "bd3ad5b23fa026be35595ebf52633e2d51cfc1ca",
      "tree": "56535b6f664ef9d26d67e9e7143ec789288d5208",
      "parents": [
        "af1cb83516589034aedcbf211f1b66bd80250136",
        "1ba24574b2debd3ca012adbbd77f12bed4f2d266"
      ],
      "author": {
        "name": "Magnus Strandberg",
        "email": "magnus.strandberg@sonyericsson.com",
        "time": "Fri Jun 08 08:32:28 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 08 08:32:28 2012 -0700"
      },
      "message": "am 1ba24574: Aligning native Parcel implementation to Java.\n\n* commit \u00271ba24574b2debd3ca012adbbd77f12bed4f2d266\u0027:\n  Aligning native Parcel implementation to Java.\n"
    },
    {
      "commit": "1ba24574b2debd3ca012adbbd77f12bed4f2d266",
      "tree": "9141495058ae27f0411797c842787f270f02946a",
      "parents": [
        "b2c1cfbe95bed419487455d1b82956f9c5b2a40c"
      ],
      "author": {
        "name": "Magnus Strandberg",
        "email": "magnus.strandberg@sonyericsson.com",
        "time": "Tue May 03 15:44:00 2011 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Jun 08 08:29:01 2012 -0700"
      },
      "message": "Aligning native Parcel implementation to Java.\n\nThe Java implementation of writing the RPC response header\ncalculates the length of the header including the 4 bytes\nspecifying the header length but the native implementation\nexcludes the 4 bytes specifying the length from the header\nlength.\nThe native implementation has been aligned to the Java impl.\n\nChange-Id: I325bf272a63152d8fded4cf4e51a906b5a9bfe19\n"
    },
    {
      "commit": "8e533069e5721e55cb9768e140e16546c3a4a8b6",
      "tree": "711922166d28d1eb8b4a38e1e0798b59f64ca405",
      "parents": [
        "1e339878c128ef47271278779c2685a8dfa49cd1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 07 13:17:52 2012 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jun 07 16:28:30 2012 -0700"
      },
      "message": "surfaceflinger: replace early suspend with binder call from PowerManager\n\nSurfaceFlinger will no longer directly synchronize with early suspend.\nInstead, PowerManagerService will synchronize with SurfaceFlinger to\nensure that a black frame has been drawn on the display, and then\ntrigger all early suspend handlers.\n\nChange-Id: I07acdd628440d23fdb69db94319ec5d65d3f4919\n"
    },
    {
      "commit": "9a6b4c73face8005352fc0db1ecf09b2b8bdedcb",
      "tree": "70844ffb6345ad48449072a4b266436a5b2eb5a1",
      "parents": [
        "ad7b3760ced1c5ca40b3641e97911803810a839b",
        "d5085da3c0c103bba0c2c927382f7d414275b661"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Thu May 31 18:43:27 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 31 18:43:27 2012 -0700"
      },
      "message": "am d5085da3: am 4467bba7: Merge \"Support looper callbacks based on smart pointers.\" into jb-dev\n\n* commit \u0027d5085da3c0c103bba0c2c927382f7d414275b661\u0027:\n  Support looper callbacks based on smart pointers.\n"
    }
  ],
  "next": "ad7b3760ced1c5ca40b3641e97911803810a839b"
}
