)]}'
{
  "log": [
    {
      "commit": "c8620b60d67390d2bd0fa0ce53cc63fc18c50244",
      "tree": "b289d7614f9950bdf8de025be2daa984a1f9ceb6",
      "parents": [
        "016093a2c19b23985366b1ac2eb7cba730b62d46"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 25 14:34:49 2010 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 25 14:34:49 2010 -0700"
      },
      "message": "fix [2545826] calling into gralloc with external lock held\n\nChange-Id: I2d0e017382404c684c768a0dd0423d574213f10a\n"
    },
    {
      "commit": "55fa25161a7626ae6a15bc2cc46e22771455ed80",
      "tree": "415784ce2ab3126dd1d8a081c70bd811aca1add4",
      "parents": [
        "e156e6478f8393dc519a903d48ef09b3eabf32ad"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 11 15:06:54 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 11 15:06:54 2010 -0800"
      },
      "message": "implement connect/disconnect in our native_window_t implementations\n\nthe framebuffer implementation doesn\u0027t do anything special with this\nbut the surfaceflinger implementation makes sure the surface is not used\nby two APIs simultaneously.\n\nChange-Id: Id4ca8ef7093d68846abc2ac814327cc40a64b66b\n"
    },
    {
      "commit": "9855a0575efe1fbd5df662aee465b4c9a09c3871",
      "tree": "cb93c8936ecbda8ce27e230f197d46390ea0cccf",
      "parents": [
        "532c4a70d3c2d9a78990cbd7bb70864c058578ff"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 04 16:26:06 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 04 16:32:32 2010 -0800"
      },
      "message": "Calculate bitmask array sizes correctly in the EventHub\n\nWe\u0027ve gotten lucky to date:  the previous calculation of bitmask array\nsizes, (maxval+1)/8 only works properly when \u0027maxval\u0027 is one less than\na multiple of 8.  Fortunately, this has either been the case for us,\nor there has been sufficient \u0027unused\u0027 space at the end of the defined\nmax value range that we haven\u0027t wound up overreading/overwriting the\nallocated buffers.\n\nChange-Id: I563a93a86644ab9f19489565e06c28e06bb53abc\n"
    },
    {
      "commit": "2032f98f8c6176be7819bd3bc4459a05542c5b85",
      "tree": "53a9ca87925a684228549f8a8efbc121945378d0",
      "parents": [
        "5c8a613f7ed66ccdfa40305e969c9b6b0e046397"
      ],
      "author": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 04 16:00:29 2010 -0800"
      },
      "committer": {
        "name": "Christopher Tate",
        "email": "ctate@google.com",
        "time": "Thu Mar 04 16:00:29 2010 -0800"
      },
      "message": "Fix #2489986 : The key bitmask needs to cover all possible keys\n\nChange-Id: Ieebd2f879e6b6fbc0388655dd66f34be89e809a0\n"
    },
    {
      "commit": "71c3eb2a389ce405ea3286271422e2da52e828de",
      "tree": "251040659761c8b3dd927d2b5a817c2ef26d4919",
      "parents": [
        "bbd20a6ac4f5073016bf8bef07ca3b1bea3ea42d"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 02 17:19:29 2010 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Mar 02 17:37:45 2010 -0800"
      },
      "message": "Maybe fix issue #2482201: Paired bluetooth device looks like a qwerty keyboard\n\nWe now only consider a device to be a default keyboard if its name\nhas \"-keypad\".  A hack, but whatever.\n\nAlso add some debug logging for the input state to help identify such\nissues in the future.\n"
    },
    {
      "commit": "98e71ddaede9a0bfb681fd237bec1f66c6c53193",
      "tree": "b99491347832c92e1e5af62d11d3a9baf946dd18",
      "parents": [
        "e4f5055ad281096e5b89c4240be29d2c95a43b65"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 17:30:52 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun Feb 21 23:27:25 2010 -0800"
      },
      "message": "remove a dependency of GraphicBuffer (libui) on Parcel (libbinder).\n\nAdd a Flattenable interface to libutils which can be used to flatten\nan object into bytestream + filedescriptor stream.\nParcel is modified to handle Flattenable. And GraphicBuffer implements\nFlattenable.\n\nExcept for the overlay classes libui is now independent of libbinder.\n"
    },
    {
      "commit": "b6121422ef641dc7317d1c3bf1d38b7d73922250",
      "tree": "80dfecc782b2a9b5e3dfdec96703ffc8a1b6b9bd",
      "parents": [
        "3c8f46c8d82d158aef9d4e757d744fa11fb95ece"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 17 20:22:26 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Feb 17 20:26:47 2010 -0800"
      },
      "message": "Remove a dependency of Region (libui) on Parcel (libbinder).\n"
    },
    {
      "commit": "3db21640519541141137166ce55627cf76e1974b",
      "tree": "48af75f7a13cedb2967007296c510ee312be5134",
      "parents": [
        "40cece49ddf328ceadd8c3cc2503ac500fba7552"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 20:43:39 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 20:43:39 2010 -0800"
      },
      "message": "fix a bug I introduced recently where YUV formats would crash the system\n"
    },
    {
      "commit": "54ed4f6282bdea251455f39b978626026affdbef",
      "tree": "157d34806bbfab22e433c1eafe0e2bf72f832af2",
      "parents": [
        "39696474d715de575949a9cdf12e7ff339896f8d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 17:33:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 16 17:33:37 2010 -0800"
      },
      "message": "get rid off the YUV formats at the libui layer\n"
    },
    {
      "commit": "9cce325fae8adcf7560a28eef394489f09bad74d",
      "tree": "3497604564acd2575016d3a331d661f22a8e6db3",
      "parents": [
        "4fae0fd0c9425318094d4c0059331c2c7a996c66"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Feb 09 17:46:37 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Feb 11 13:16:22 2010 -0800"
      },
      "message": "split libsurfaceflinger_client and libcamera_client out of libui\n"
    },
    {
      "commit": "1776e77c68971a72ca81b720c2074bae342d3f0a",
      "tree": "34167d23140a28886c2831a5f01db7b6b8bc1bb6",
      "parents": [
        "dfec3a92cbec4f7e95eeeac23c3e69ce6b9aa5e6",
        "d5a4f1ff5bd519cf9b53af5c0a687f156bdf302a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Feb 10 00:07:35 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 10 00:07:36 2010 -0800"
      },
      "message": "Merge \"Remove some logs.\""
    },
    {
      "commit": "d5a4f1ff5bd519cf9b53af5c0a687f156bdf302a",
      "tree": "81a565122b058228ad622e39d2b92a7be66b072e",
      "parents": [
        "9b692da2e32a78fad524b24b52c4616944294fa5"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Feb 10 13:01:48 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Feb 10 13:02:17 2010 +0800"
      },
      "message": "Remove some logs.\n"
    },
    {
      "commit": "a05c8227046081b2648b8150c1a716040eb08121",
      "tree": "ee1db3cf05075689d3878a7bc3d2e1cdfb449d47",
      "parents": [
        "9b692da2e32a78fad524b24b52c4616944294fa5"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Feb 09 13:38:19 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Feb 09 18:28:50 2010 +0800"
      },
      "message": "Add exposure compensation parameter.\n\nbug:2375993\n"
    },
    {
      "commit": "391f3f8b5e8f97e002cbbc6a7535cfd73a8d16b3",
      "tree": "b346a01beb8e74fe47758ba79bd7d26c98b010f6",
      "parents": [
        "077c40fee35f483df961c6a0746ee78b9d1c5a8f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sun Jan 31 14:19:38 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sun Jan 31 17:03:10 2010 +0800"
      },
      "message": "Add float support for set and get in CameraParameters.\n\nbug:2375989\nbug:2375987\n"
    },
    {
      "commit": "077c40fee35f483df961c6a0746ee78b9d1c5a8f",
      "tree": "e191acfba8c0c74b6b06e1c07855fcc0f13880c1",
      "parents": [
        "b0b1eff2bc61008194627190da2b7535677e533a"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jan 27 22:55:14 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Sat Jan 30 20:36:04 2010 +0800"
      },
      "message": "Add focal length and view angle API.\n\nbug:2375989,2375987\n"
    },
    {
      "commit": "556a6fed124adf9494bd7e1702ce0f665220e998",
      "tree": "dac1cfe03d228d8a37e2001422aa8dcaefdb4192",
      "parents": [
        "9d3ad2b296cc6a327bd1f3e1155a47b68ab60f79",
        "f091e833d339d344fbc4815bcc87ce97d8535cd8"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Wed Jan 27 09:20:19 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jan 27 09:20:19 2010 -0800"
      },
      "message": "Merge \"Add support for setting camera display orientation.\""
    },
    {
      "commit": "f091e833d339d344fbc4815bcc87ce97d8535cd8",
      "tree": "abf06e2d345aa1d73348c8380194633973dff6b6",
      "parents": [
        "fafd2adbaac51b801af6503a7fc80d1cc2dc3794"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 17:49:48 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Jan 26 11:07:07 2010 -0800"
      },
      "message": "Add support for setting camera display orientation.\n"
    },
    {
      "commit": "1b5cf329eaecdcbf734feec3336ff029b2b8a264",
      "tree": "6569185128f882ffbf97ec3ba79aa5110405d393",
      "parents": [
        "fa289ea7af2e9f56aecd23015a12c925c694aacd"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue Jan 26 10:27:15 2010 -0800"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Tue Jan 26 10:28:52 2010 -0800"
      },
      "message": "Revert \"Fix failure to open AVRCP input device due to EPERM.\"\n\nThis reverts commit e6b1bbd8acca3f6e174c24cf4eb23a66db2d08a2.\n"
    },
    {
      "commit": "2b2c2e3a35287fdd9a292ab981d5708e2bbfe07c",
      "tree": "69d36b0ffbfcc97ea7702c0a47e985d347caefc2",
      "parents": [
        "80370aa83bce8287a761d090d37349112ee3e79f",
        "7c360aaf6cd95ec8cce8f97c4a314114951c1cbb"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Mon Jan 25 18:12:47 2010 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jan 25 18:12:47 2010 -0800"
      },
      "message": "am 425324e9: am e834722f: Merge \"Fix failure to open AVRCP input device due to EPERM.\" into eclair\n\nMerge commit \u0027425324e97bba75cd69bb6c81de6248529540e6fe\u0027\n\n* commit \u0027425324e97bba75cd69bb6c81de6248529540e6fe\u0027:\n  Fix failure to open AVRCP input device due to EPERM.\n"
    },
    {
      "commit": "88eeff5270991df178ee09ffda7ce5076c9a1e59",
      "tree": "00b0f5754d265cd28d73a02e0da7eec83aebfd1b",
      "parents": [
        "703111327eac2f3228de1f165d23fa3bf86120ba"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Jan 25 15:18:18 2010 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Jan 25 15:20:23 2010 +0800"
      },
      "message": "Change key to KEY_SUPPORTED_JPEG_THUMBNAIL_SIZES for consistency.\n\nbug:2375986\n"
    },
    {
      "commit": "519f29f5d8e097b3a35a650d92ed0ad07773c9e2",
      "tree": "5d9c75dd3ea3c752e99c2c52c73d946d2c8570f1",
      "parents": [
        "3983e26292173fb08de57b8617de9193e8f0d2f9",
        "9014726d8954a003323d65ba639b2544f8ecea2e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 22 11:52:08 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jan 22 11:52:08 2010 -0800"
      },
      "message": "Merge \"return an error when Surface::lock() is called while the surface is already locked.\""
    },
    {
      "commit": "9014726d8954a003323d65ba639b2544f8ecea2e",
      "tree": "490f2e83220785fb5cfa2d5ee8161d4c43e85cf8",
      "parents": [
        "edfd97c0f2e679e86699a0f6c4df65ea21ecff15"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 22 11:47:55 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jan 22 11:47:55 2010 -0800"
      },
      "message": "return an error when Surface::lock() is called while the surface is already locked.\n"
    },
    {
      "commit": "52e7200b6e020bba978c36e3a928493a3f2c8a92",
      "tree": "9c752d7d277ba2dfb9789763369a7373888557a2",
      "parents": [
        "d28d5be75b41fe48f486f9b83ae8685496983f5a"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 17:31:06 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Thu Jan 21 20:20:08 2010 -0800"
      },
      "message": "Add an orientation parameter for overlay, so we can do camera preview in portrait mode.\n"
    },
    {
      "commit": "c81bb207c67e82f25c8ec15a533dbdc2435d83f7",
      "tree": "dafff205e6a48beb2dcdc2fc28577a31c99bf8e5",
      "parents": [
        "9110cdd7b75ea732afe1e6898a00bb162d791f58"
      ],
      "author": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jan 20 19:36:49 2010 -0800"
      },
      "committer": {
        "name": "Nick Pelly",
        "email": "npelly@google.com",
        "time": "Wed Jan 20 19:56:24 2010 -0800"
      },
      "message": "Fix failure to open AVRCP input device due to EPERM.\n\nSleep for 100us and try to open the input device again if it fails, with a\nmaximum of 10 attempts.\n\nWe need the retry logic because setting permissions on a new input device is\nracy. The init process watches for new input device (via uevent) and sets the\npermission on them in devices.c:make_device(). However at the same time\nEventHub.cpp watches for new input devices from the system_server process, and\nimmediately tries to open them. I can\u0027t see a simple way to avoid this race\ncondition.\n\nAs best as I can tell this race condition has always exisited.\nThere must have been some timing change that happened recently that causes us\nto hit this race condition much more often. See repro notes in referenced bug.\n\nBug: 2375632\n"
    },
    {
      "commit": "963abad79ae64dae9bf4c32bfb110d9e6314c857",
      "tree": "f017c89f91c07d4bc06c8c74efbc03aa73463572",
      "parents": [
        "8b1b9f4e9ca3816777d7228bec2182e16f38a093"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 13 15:26:29 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Nov 13 15:26:29 2009 -0800"
      },
      "message": "fix some aspects of [2258746] native crash in launcher2\n\nSurface::validate() could sometimes dereference a null pointer before checking it wasn\u0027t null.\nThis will prevent the application to crash when given bad parameters or used incorrectly.\nHowever, the bug above probably has another cause.\n"
    },
    {
      "commit": "092fa4beaf6ca214d88f657a8b233ad0f3fd6a10",
      "tree": "8665017de55657f88b8d51265c056934aadb89bf",
      "parents": [
        "653e129a82a954990867fd6d51eebd5370ac7988"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu Nov 05 15:49:22 2009 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu Nov 05 15:49:22 2009 -0800"
      },
      "message": "Revert change incorrectly submitted as part of change #32153.\n\nChange-Id: I31c52beff03c0d038a257fc151eff3b8da60eddc\n"
    },
    {
      "commit": "471afca7fce7db8dfb4b59d10f9e699a6b951cb5",
      "tree": "1d47eb0d2b8e8a791eb76bfe7f434a671204627c",
      "parents": [
        "cfe0ef242770a2b4186b4501421365dc667e1c5d"
      ],
      "author": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu Nov 05 13:36:15 2009 -0800"
      },
      "committer": {
        "name": "Romain Guy",
        "email": "romainguy@android.com",
        "time": "Thu Nov 05 15:40:35 2009 -0800"
      },
      "message": "Prevent crash in Home when using widgets whose ids collide with Home\u0027s\nresources.\n\nBug #2228943.\n\nApproved by mcleron, triaged by ryanpc.\n\nChange-Id: Idf40f3b09502ae5d0d3b9a6a72c265a2de2ffca2\n"
    },
    {
      "commit": "6fee064809068fe1a7da63d55678d9a222b0be15",
      "tree": "119f2ce4dc9362a7e389eac87abe1a7d7c691c5c",
      "parents": [
        "aa628c911a6ec727f4cff0d664a9af5d91770828"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 02 17:48:33 2009 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Nov 02 17:48:33 2009 -0800"
      },
      "message": "fix[2228133] pixelflinger ignores the \"vertical stride\" leading to artifacts when playing back video\n\nwe lost the concept of vertical stride when moving video playback to EGLImage.\nHere we bring it back in a somewhat hacky-way that will work only for the\nsoftgl/mdp backend.\n"
    },
    {
      "commit": "54ba51dff21de666c5ae3bf3abd4f0634ebb0676",
      "tree": "58a69dccdbfd227b9de3c58a416de45d2a8d3513",
      "parents": [
        "36bc94173c957f33f70bcd16c369951f5b2dc3f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 26 20:12:37 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 27 13:13:29 2009 -0700"
      },
      "message": "    fix [2143798] Need to figure out how to do video\n\n    Use EGLImageKHR instead of copybit directly.\n    We now have the basis to use streaming YUV textures (well, in fact\n    we already are). When/if we use the GPU instead of the MDP we\u0027ll\n    need to make sure it supports the appropriate YUV format.\n\n    Also make sure we compile if EGL_ANDROID_image_native_buffer is not supported\n"
    },
    {
      "commit": "38a7fa2ae37236952e5fb0186fddb4f6da5990d8",
      "tree": "75fba8e01e6dfc6ac4afab2992de185b91edbf1c",
      "parents": [
        "f7f46955f70db4fa032d6ee0bf6bef1d10a7a181"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 15 18:08:15 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Oct 15 18:08:15 2009 -0700"
      },
      "message": "fix [2182249] [MR1] valgrind error in surface flinger\n"
    },
    {
      "commit": "d3144beec6acb37702629799a2adbeccc72ca222",
      "tree": "48feaca0f7fab325bf60d0c2a6de3a425de82926",
      "parents": [
        "28541629e163399fd1cac126e06868ecf1b4811e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 15:58:44 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 18:03:35 2009 -0700"
      },
      "message": "fix [2170283] SurfaceFlinger crashes on OOM.\n\nwhen running out of memory, a null handle is returned but the error code may not be set.\nIn that case we need to return NO_MEMORY instead of NO_ERROR, so that the calling code\nwon\u0027t try to dereference the null pointer.\n"
    },
    {
      "commit": "e700501d0e888ead9ac6456c0a6fd74d634aa5fb",
      "tree": "25bb0963dd0b96b7c17285f6ddddd536f6465f30",
      "parents": [
        "8e53c5595dd6846ddbfd39549849ea7a289d9897"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 16:44:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Oct 07 16:44:10 2009 -0700"
      },
      "message": "fix [2170319] gmail bulk operation checkbox latency on passion\n\nThis also fixes [2152536] ANR in browser\n\nWhen SF is enqueuing buffers faster than SF dequeues them.\nThe update flag in SF is not counted and under some situations SF will only\ndequeue the first buffer. The state at this point is not technically\ncorrupted, it\u0027s valid, but just delayed by one buffer.\n\nIn the case of the Browser ANR, because the last enqueued buffer was delayed\nthe resizing of the current buffer couldn\u0027t happen.\n\nThe system would always fall back onto its feet if anything -else- in\ntried to draw, because the \"late\" buffer would be picked up then.\n"
    },
    {
      "commit": "9ec430adaea1cb88eaa1e78c7f759cd42ab6cf7a",
      "tree": "1174b71aeaf88287d38538f8b7baa74532f6f638",
      "parents": [
        "ef8646344a7168643b50a51ebffa2e41e9717608"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 19:00:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 19:00:57 2009 -0700"
      },
      "message": "fix [2152536] ANR in browser\n\nA window is created and the browser is about to render into it the\nvery first time, at that point it does an IPC to SF to request a new\nbuffer. Meanwhile, the window manager removes that window from the\nlist and the shared memory block it uses is marked as invalid.\nHowever, at that point, another window is created and is given the\nsame index (that just go freed), but a different identity and resets\nthe \"invalid\" bit in the shared block. When we go back to the buffer\nallocation code, we\u0027re stuck because the surface we\u0027re allocating for\nis gone and we don\u0027t detect it\u0027s invalid because the invalid bit has\nbeen reset.\n\nIt is not sufficient to check for the invalid bit, I should\nalso check that identities match.\n"
    },
    {
      "commit": "b26af23744fa73e8bc142b1eb98772fde5970c10",
      "tree": "51dd9ca00309a247d0f25b4338539d334be16b2f",
      "parents": [
        "3330b203039dea366d4981db1408a460134b2d2c"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 18:19:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2168531] have software-only gralloc buffer side-step the HAL\n"
    },
    {
      "commit": "3330b203039dea366d4981db1408a460134b2d2c",
      "tree": "f165f7801f2ee8034ad1edfd34e2b554fdaf662f",
      "parents": [
        "0ad3f9f4009c76b56f41da5d26eb7712dee938f1"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Oct 05 17:07:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Oct 06 17:00:25 2009 -0700"
      },
      "message": "fix [2167050] glTexImage2D code path buggy in SurfaceFlinger\n\nWhen EGLImage extension is not available, SurfaceFlinger will fallback to using\nglTexImage2D and glTexSubImage2D instead, which requires 50% more memory and an\nextra copy. However this code path has never been exercised and had some bugs\nwhich this patch fix.\n\nMainly the scale factor wasn\u0027t computed right when falling back on glDrawElements.\nWe also fallback to this mode of operation if a buffer doesn\u0027t have the adequate\nusage bits for EGLImage usage.\n\nThis changes only code that is currently not executed. Some refactoring was needed to\nkeep the change clean. This doesn\u0027t change anything functionaly.\n"
    },
    {
      "commit": "e6a550d02ff02f465d7dbb6e862671462866f024",
      "tree": "005e2a57c55f5c24400f604150727b9b91b61fe9",
      "parents": [
        "7854a353261dd276a7726d48677c18ef827b26eb"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 28 16:14:58 2009 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Oct 06 13:25:10 2009 -0700"
      },
      "message": "Add zoom functions and sendCommand.\n\nb2060030\n"
    },
    {
      "commit": "0b3ad46a26dc3717260fa9347c77f673f3198606",
      "tree": "e101cea80b6258fa478b702cfef622747f3f9e39",
      "parents": [
        "c91af0c12e24d56262a2c100d9e46de26b33fb91"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Oct 02 18:12:30 2009 -0700"
      },
      "message": "Attempt to fix [2152536] ANR in browser\n\nThe ANR is caused by SurfaceFlinger waiting for buffers of a removed surface to become availlable.\nWhen it is removed from the current list, a Surface is marked as NO_INIT, which causes SF to return\nimmediately in the above case. For some reason, the surface here wasn\u0027t marked as NO_INIT.\n\nThis change makes the code more robust by always (irregadless or errors) setting the NO_INIT status\nin all code paths where a surface is removed from the list.\n\nAdditionaly added more information in the logs, should this happen again.\n"
    },
    {
      "commit": "eb16a09f59022f9fd3f1d633204049bc4e96b0f9",
      "tree": "e81eb6ee9161d1c81a862e5bf1cc893d1a3887ae",
      "parents": [
        "b2eccea36eaf3b0ab75d8cac80250ddbe332e001"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 28 13:51:12 2009 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Mon Sep 28 13:51:59 2009 -0700"
      },
      "message": "Change FLASH_MODE_VIDEO_LIGHT to FLASH_MODE_TORCH.\n"
    },
    {
      "commit": "cc6ce203be6784130c73e6f253981c7236cdcb68",
      "tree": "a27e4a5fb542306244a34ea61eb5cc21cab6690e",
      "parents": [
        "1a848a5fed614ea75167d7c67f26a9fffdbf585c"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Sep 23 14:37:52 2009 -0700"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Sep 25 14:23:56 2009 -0700"
      },
      "message": "Add camera parameter key constants and documentation.\n"
    },
    {
      "commit": "dd3423c6247965bf67ea30c75e484a6f5d72b1a2",
      "tree": "734b1c8ef5eb7f94b6864d1dac57442e80036d4d",
      "parents": [
        "e95f0b38cde0668ec6872602a4f5e837f39089a4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 15:44:05 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Sep 23 15:49:32 2009 -0700"
      },
      "message": "fix [2132563] stuck in boot animation (framebuffer_device_open: Failed to create flip chain)\n"
    },
    {
      "commit": "a455793a8d068a06ae65e1e04170eb24851c0eb1",
      "tree": "21d70a3b780b1ddf1d422a5fae7b4146365b3a23",
      "parents": [
        "96a1b054784bbcdc2b0b6e37f9b83757d608e0af"
      ],
      "author": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 23 10:54:36 2009 -0700"
      },
      "committer": {
        "name": "Marco Nelissen",
        "email": "marcone@google.com",
        "time": "Wed Sep 23 10:56:51 2009 -0700"
      },
      "message": "fbDev wasn\u0027t initialized of hw_get_module failed, but was then used anyway.\n"
    },
    {
      "commit": "74faca212e2675aa55a30235c77cb6403471a4b9",
      "tree": "4b990a9f0234ad504cce9e5734a978e940335945",
      "parents": [
        "1147de42a21f0d4f6873c63f22a4cdd1e4889088"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 16:18:16 2009 -0700"
      },
      "message": "Android side of the fix for [2121211] Sholes has stutter during animations\n\na new method, compostionComplete() is added to the framebuffer hal, it is used by surfaceflinger to signal the driver that the composition is complete, BEFORE it releases its client. This gives a chance to the driver to\n"
    },
    {
      "commit": "86f7329080cbb6f70d56278b005c820f0360d84b",
      "tree": "bead00e53f19c5cd417135cc5bbb5c266b7750e4",
      "parents": [
        "5140a13b5eff0b9ba89cb954ba645ca468257548"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 01:35:28 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 17 01:35:28 2009 -0700"
      },
      "message": "add basic time stats for surfaces lock time\n"
    },
    {
      "commit": "68a6afeb26002961387573dd64dd0ea3816bdc91",
      "tree": "104c9977c9b68c512ad3b63a77043043bd62dcaa",
      "parents": [
        "70cc9e16be7d7f9ad736e1d3911afd6f192cee59"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 19:10:47 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 19:21:31 2009 -0700"
      },
      "message": "fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer\n\nTake 2. We needed to check that the usage flags are \"good enough\" as opposed to \"the same\".\n\nThis reverts commit 8f17a762fe9e9f31e4e86cb60ff2bfb6b10fdee6.\n"
    },
    {
      "commit": "3910f5467a344c54b3c39c45b820c184e31b449c",
      "tree": "ee80308d497989fc9644336d2518af655aae3f35",
      "parents": [
        "ecda253aed80ca8b4012f3cd80374e3898cf517d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 18:57:06 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 18:57:06 2009 -0700"
      },
      "message": "Revert \"fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer\"\n\nThis reverts commit 486aa963b63e20b7910e1004cebb4f0afabbd80f.\n"
    },
    {
      "commit": "d18afab9d6a89d14c5c583a7d976665af4765a6b",
      "tree": "cf2dfc2b32234209839362abdf5f2cdf526a1cfb",
      "parents": [
        "1a3f52c9ac443aab383b13aae9fe34f9c575e105"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 17:34:04 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Sep 15 17:34:04 2009 -0700"
      },
      "message": "fix [2122448] android_native_window_t::setUsage() only reallocates the first buffer\n"
    },
    {
      "commit": "00900eb35473530a5fc77f7bd3ac306b6dcf19cb",
      "tree": "50ef4d7f5da62be60d0748dba6ed6713c61d6443",
      "parents": [
        "f5733b2938151fda955f01d9dc3ad15f7292604d"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Sep 15 14:51:56 2009 +0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Tue Sep 15 18:29:03 2009 +0800"
      },
      "message": "Fix 2083478: Camera needs an auto-focus cancel API\n\nChange-Id: I13bda991b32aee47e82b5cf9d43b3021c416a9a2\n"
    },
    {
      "commit": "c7d56010815b0e7104dfc1d4bba6d16cdcbffec4",
      "tree": "b9b3a22c43414ae2dbd978252d4f8fda5b8b055f",
      "parents": [
        "46cd3afb0228dd18c5d67d2ef7e3620fcc4cc239"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 15:48:42 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 14 15:48:42 2009 -0700"
      },
      "message": "make sure to update the tail pointer when undoing a dequeue\n"
    },
    {
      "commit": "40d57996224a5c72fedfa80b6deb8f5a4935dc9a",
      "tree": "287bc3a7679da7634c717534aa42608b0404a9af",
      "parents": [
        "26d0d421813d9276be0324f76638b847387e93f0"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 11 19:18:20 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Sep 11 19:18:20 2009 -0700"
      },
      "message": "fix [2111536] [FAST BLOCKER] Device is soft rebooted after ending the call through voice dialer\n"
    },
    {
      "commit": "48d819a1315f7d1b5abfec9d4fd34fb5aed27b1d",
      "tree": "610ef98303e468061f68511380991e4b65bd547a",
      "parents": [
        "b58b5d72d6877300fe39b2a30b4742c6f962833f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 19:41:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 19:41:18 2009 -0700"
      },
      "message": "fix [2112575] stuck on DequeueCondition for a surface that doesn\u0027t exist anymore\n\nthis also fixes part of [2111536] Device is soft rebooted after ending the call through voice dialer\n"
    },
    {
      "commit": "b58b5d72d6877300fe39b2a30b4742c6f962833f",
      "tree": "aa1e32e51ef86a5ae1a3d5eb67836274a97ad083",
      "parents": [
        "bc52dabcb0f7ebe71cd7bfffacee9b1b1341547f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 16:55:13 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Sep 10 16:55:13 2009 -0700"
      },
      "message": "make sure conditions will return when the status of a surface is not NO_ERROR\n"
    },
    {
      "commit": "e0a963b72ed7babf1ab21ffdfd9e2b93ae4fe63e",
      "tree": "67b4654fd851eaf37dc172c58b7bae1651be0c5c",
      "parents": [
        "1f5105cf53c51e61f0adde24b90ddd54cc53d1cd"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Sep 09 08:00:09 2009 -0700"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Wed Sep 09 08:02:54 2009 -0700"
      },
      "message": "Fix sim-eng build.\n\nAppears to have been broken by:\n\ncommit 9779b221e999583ff89e0dfc40e56398737adbb3\nAuthor: Mathias Agopian \u003cmathias@google.com\u003e\nDate:   Mon Sep 7 16:32:45 2009 -0700\n\n    fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n\nFor some reason we don\u0027t like to have \"-lpthread\" globally -- it\u0027s a no-op\non device builds, but required for many host tools and all sim binaries --\nso adding the use of pthread calls requires adding the library explicitly.\n"
    },
    {
      "commit": "cbb288bfe89f585bf48371bd31b2d4aafa32f32e",
      "tree": "73d20f36910dcab8c17c686cdd7014cee285bc39",
      "parents": [
        "f0780974fc31ae88135d1dcb67cb5fd86bb6deb6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Sep 07 16:32:45 2009 -0700"
      },
      "message": "fix [2068105] implement queueBuffer/lockBuffer/dequeueBuffer properly\n\nRewrote SurfaceFlinger\u0027s buffer management from the ground-up.\nThe design now support an arbitrary number of buffers per surface, however the current implementation is limited to four. Currently only 2 buffers are used in practice.\n\nThe main new feature is to be able to dequeue all buffers at once (very important when there are only two). \n\nA client can dequeue all buffers until there are none available, it can lock all buffers except the last one that is used for composition. The client will block then, until a new buffer is enqueued.\n\nThe current implementation requires that buffers are locked in the same order they are dequeued and enqueued in the same order they are locked. Only one buffer can be locked at a time.\n\neg. Allowed sequence:   DQ, DQ, LOCK, Q, LOCK, Q\neg. Forbidden sequence: DQ, DQ, LOCK, LOCK, Q, Q\n\n"
    },
    {
      "commit": "39bf918e21d8fd13ce5015517fabac255b01f409",
      "tree": "314960f3583e8bf2a753b8076d77bb2a261891c1",
      "parents": [
        "9a93e323a30cdab6cf67356a33e2fcf749a79597"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Sep 01 19:01:50 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Wed Sep 02 17:20:25 2009 -0700"
      },
      "message": "Work on issue #2079167: Flickering issue across multiple UI\n\nThis addresses a few parts of the bug:\n\n- There was a small issue in the window manager where we could show a window\n  too early before the transition animation starts, which was introduced\n  by the recent wallpaper work.  This was the cause of the flicker when\n  starting the dialer for the first time.\n\n- There was a much larger problem that has existing forever where moving\n  an application token to the front or back was not synchronized with the\n  application animation transaction.  This was the cause of the flicker\n  when hanging up (now that the in-call screen moves to the back instead\n  of closing and we always have a wallpaper visible).  The approach to\n  solving this is to have the window manager go ahead and move the app\n  tokens (it must in order to keep in sync with the activity manager), but\n  to delay the actual window movement: perform the movement to front when\n  the animation starts, and to back when it ends.  Actually, when the\n  animation ends, we just go and completely rebuild the window list to\n  ensure it is correct, because there can be ways people can add windows\n  while in this intermediate state where they could end up at the wrong\n  place once we do the delayed movement to the front or back.  And it is\n  simply reasuring to know that every time we finish a full app transition,\n  we re-evaluate the world and put everything in its proper place.\n\nAlso included in this change are a few little tweaks to the input system,\nto perform better logging, and completely ignore input devices that do not\nhave any of our input classes.  There is also a little cleanup of evaluating\nconfiguration changes to not do more work than needed when an input\ndevices appears or disappears, and to only log a config change message when\nthe config is truly changing.\n\nChange-Id: Ifb2db77f8867435121722a6abeb946ec7c3ea9d3\n"
    },
    {
      "commit": "07549f984d0088a5580caefeb5d40d0a39abcd0a",
      "tree": "3b30f6de4118e3658f8c505fe479b87479cc23d4",
      "parents": [
        "89795d8fa6da8b2f42372ed6bcae0bc1420d19a3"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Aug 28 13:29:06 2009 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Aug 28 13:30:03 2009 -0700"
      },
      "message": "EventHub: Fix file descriptor leak.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "04bc12bd4316e2928134037cd0f81c6d8b2adcc8",
      "tree": "a4795890653d2bab4a2d63af4574a2cd8bac54fe",
      "parents": [
        "e0037413f2d16e1b8d1032e1791fd37621719e36"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 21 15:44:17 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 21 15:44:17 2009 -0700"
      },
      "message": "fix [2070341] [FAST BLOCKER] can\u0027t successfully setup erc52\n"
    },
    {
      "commit": "1c97d2ebe1f035beabd90089bfc78326b73d7864",
      "tree": "f78d8eb4239a3abf418d2efd1de88e3b20005df9",
      "parents": [
        "50517543d84446fc91fa65c60eda6d2e2724de10"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:46:26 2009 -0700"
      },
      "message": "fix a bug that caused the PixelFormat viewed by Surface to be wrong.\n\nwhat happened is that the efective pixel format is calculated by SF but Surface nevew had access to it directly.\nin particular this caused query(FORMAT) to return the requested format instead of the effective format.\n"
    },
    {
      "commit": "50517543d84446fc91fa65c60eda6d2e2724de10",
      "tree": "ea98f93e9f3f4c4cb7803787a14fdcfadc985dd7",
      "parents": [
        "139c1dee4412b17c7d05528b4afc0dd8586d25b8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:10:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 19 17:10:18 2009 -0700"
      },
      "message": "fix [2063336] Surface.lockSurface throws IllegalArgumentException when out of memory\n"
    },
    {
      "commit": "ba5972ffdc7179dd9a387f22032eb18666d97917",
      "tree": "dd51ea840b82b9392ec1772b4c49f48f6c6190e1",
      "parents": [
        "d66a97950e8ef64051a4d497a91e5508254f77f6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 14 18:52:17 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 14 18:52:17 2009 -0700"
      },
      "message": "make sure to update a surface\u0027s usage bits when it changes, instead of only the first time.\n\nalso fixed a few locking issues in Surface and commented how each member is protected.\n"
    },
    {
      "commit": "5221271375f361b84a6eeec3d7086f223997fbb3",
      "tree": "f65cab160cf38b9ed577f1cb5bc2f9882fc8631c",
      "parents": [
        "40ef81c7fce7cd1b028aec7b8b27b77ce6bf7b90"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 22:34:02 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 23:32:29 2009 -0700"
      },
      "message": "second take, hopefully this time it doesn\u0027t break one of the builds: \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n"
    },
    {
      "commit": "b2fd4665e66fe81969f1f07fd724c6f68dd8f7f1",
      "tree": "8564d48ba85748bdb281a3bcda22b41ed17c72e8",
      "parents": [
        "01b535185805d5b22c5fffc30833decdca308b5b"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Tue Aug 11 20:49:35 2009 -0700"
      },
      "message": "Revert \"SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\"\n\nThis reverts commit 8b76a0ac6fbf07254629ed1ea86af014d5abe050.\n"
    },
    {
      "commit": "df37b62c62f8efd3b5a433f9b4d40d30cec13a31",
      "tree": "43c783e665b9e1c47210d3c5a8f929b33acda72f",
      "parents": [
        "d779f052b4180f347ed0bd725fdfedda504773e5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 10 21:59:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 11 16:12:56 2009 -0700"
      },
      "message": "SurfaceFlinger will now allocate buffers based on the usage specified by the clients. This allows to allocate the right kind of buffer automatically, without having the user to specify anything.\n\nThis change makes SurfaceHolder.setType(GPU) obsolete (it\u0027s now ignored).\nAdded an API to android_native_window_t to allow extending the functionality without ever breaking binary compatibility. This is used to implement the new set_usage() API. This API needs to be called by software renderers because the default is to use usage flags suitable for h/w.\n"
    },
    {
      "commit": "8c12c7aec3fdbccfa8161c2c12131d590a9b5ce8",
      "tree": "4c68d57ec659dc3b8691508f9d55c7c79a55721a",
      "parents": [
        "42db9dcea2e6b9f60f07a3e9e2d6fbc196082284"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:37:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Aug 07 16:37:21 2009 -0700"
      },
      "message": "added EGLUtils::strerror\n"
    },
    {
      "commit": "42db9dcea2e6b9f60f07a3e9e2d6fbc196082284",
      "tree": "d1b51107d0ec6769baea27330b8d27374c8ef538",
      "parents": [
        "f9694507ec07e3909f41dba051b1bdbdb66002d8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 20:46:44 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 20:46:44 2009 -0700"
      },
      "message": "better error handling\n"
    },
    {
      "commit": "f9694507ec07e3909f41dba051b1bdbdb66002d8",
      "tree": "0cd36bcd10047b665471b32bd7cda6020c94c6f7",
      "parents": [
        "3741c2ef097988912466ae3b07eef9ca114d824d",
        "b97603dcf01792b3d5610ef9a8f0a4c9e1af8b02"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 17:15:11 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 17:15:11 2009 -0700"
      },
      "message": "Merge change 20365\n\n* changes:\n  oops, EGLConfig of value zero may be valid\n"
    },
    {
      "commit": "b97603dcf01792b3d5610ef9a8f0a4c9e1af8b02",
      "tree": "4dc13f9d639c07123bea28deac8e3322fda0a300",
      "parents": [
        "653870d5e945ff94ff8136c97db0a016fc119683"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 17:14:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 17:14:10 2009 -0700"
      },
      "message": "oops, EGLConfig of value zero may be valid\n"
    },
    {
      "commit": "b2001065b957bf0db2577c0877c4751097d627af",
      "tree": "5c00115165f278d8a0553b46418496b4f142cd76",
      "parents": [
        "d9cede5115af9ac17a3a87386485640a0ea0343e",
        "653870d5e945ff94ff8136c97db0a016fc119683"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 16:27:47 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 06 16:27:47 2009 -0700"
      },
      "message": "Merge changes 20345,20346,20347\n\n* changes:\n  update most gl tests to use EGLUtils\n  added two EGL helpers for selecting a config matching a certain pixelformat or native window type\n  added NATIVE_WINDOW_FORMAT attribute to android_native_window_t\n"
    },
    {
      "commit": "6cf50a770dabd13cf5b72bb0a6fb9dd002c88db6",
      "tree": "cf9f9f051e842663afe6bd850f9d5cdb436e4901",
      "parents": [
        "6b1f41004fa48e96bab61f508867314261de660b"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:05:39 2009 -0700"
      },
      "message": "added two EGL helpers for selecting a config matching a certain pixelformat or native window type\n"
    },
    {
      "commit": "6b1f41004fa48e96bab61f508867314261de660b",
      "tree": "d5988740afd45581663457af7870db42faef4160",
      "parents": [
        "1c3561e8d862d8fd27f8e843a18f251b9d9500b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:04:29 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 06 16:04:29 2009 -0700"
      },
      "message": "added NATIVE_WINDOW_FORMAT attribute to android_native_window_t\n"
    },
    {
      "commit": "34193b31681dcbadf0a629879ca004f561b1b149",
      "tree": "2a0d9756383bd7fd4049191cbdde2aeec51f3191",
      "parents": [
        "b55717fd57b0d8a07a36d182430a3e14556ceca4"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 06 14:50:08 2009 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Thu Aug 06 14:52:13 2009 -0700"
      },
      "message": "EventHub: pass the name of each input device up to Java\n\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "46078d997861dd18798d6cc91b3ca32820faf7c6",
      "tree": "dbb9a6f1d7614def491824f7b570d6c9da3a59ad",
      "parents": [
        "d285c41e5d894af55d7e60fb1dfedd6076d68e42",
        "3eded949243c8d331190d3803b5c5c2bf2a058fc"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 05 12:52:51 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 05 12:52:51 2009 -0700"
      },
      "message": "Merge change 20133\n\n* changes:\n  don\u0027t crash when SurfaceBuffer::writeToParcel is given a null argument\n"
    },
    {
      "commit": "3eded949243c8d331190d3803b5c5c2bf2a058fc",
      "tree": "a93a55378f5b03426ee7822b7d2304775a2eed9c",
      "parents": [
        "591018aaf9e95b9d2f6d9742194e940605b1bffa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Aug 04 20:53:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Aug 05 12:22:30 2009 -0700"
      },
      "message": "don\u0027t crash when SurfaceBuffer::writeToParcel is given a null argument\n"
    },
    {
      "commit": "c591736c66cbd4320fc96573fda28bec2b4d4100",
      "tree": "c7df67f7338a856b8e0fee9b0b53adc3a2838fcd",
      "parents": [
        "e8ce92bbe07ae4df78fc6ce4ec33ed5e2baa2e46"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 04 05:49:43 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Aug 04 20:53:52 2009 -0700"
      },
      "message": "Finish implementation of multiple pointer support for MotionEvent.\n\nThe major things going on here:\n\n- The MotionEvent API is now extended to included \"pointer ID\" information, for\n  applications to keep track of individual fingers as they move up and down.\n  PointerLocation has been updated to take advantage of this.\n\n- The input system now has logic to generate MotionEvents with the new ID\n  information, synthesizing an identifier as new points are down and trying to\n  keep pointer ids consistent across events by looking at the distance between\n  the last and next set of pointers.\n\n- We now support the new multitouch driver protocol, and will use that instead\n  of the old one if it is available.  We do NOT use any finger id information\n  coming from the driver, but always synthesize pointer ids in user space.\n  (This is simply because we don\u0027t yet have a driver reporting this information\n  from which to base an implementation on.)\n\n- Increase maximum number of fingers to 10.  This code has only been used\n  with a driver that reports up to 2, so no idea how more will actually work.\n\n- Oh and the input system can now detect and report physical DPAD devices.\n"
    },
    {
      "commit": "cf81c84e43eb33931b950fa2c9b4c6f51afe7197",
      "tree": "c84f34e7c2c811efb62f9207bfe553bf507b74cd",
      "parents": [
        "fa170f513338322102a200de7d1fd696e51d55c8"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 14:47:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jul 31 14:47:00 2009 -0700"
      },
      "message": "be more robust when errors occur upon EGL surface creation (ie: don\u0027t crash)\n"
    },
    {
      "commit": "fa170f513338322102a200de7d1fd696e51d55c8",
      "tree": "c4b7c19f4b78cf2e8805b675e25dc4dd99e227eb",
      "parents": [
        "b6db63a126967bb533966bfa946d963ad90d69a7",
        "cb6b9041647b4f080324742eee5ce709960ff610"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 18:46:48 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 18:46:48 2009 -0700"
      },
      "message": "Merge change 9287\n\n* changes:\n  fixed some issues with the software renderer when surfaces are made current.\n"
    },
    {
      "commit": "cb6b9041647b4f080324742eee5ce709960ff610",
      "tree": "14e5efafa0eace5d3a7943dc9c6316880ef22d11",
      "parents": [
        "69bdcb9b7b5089984bf474f30029fa024f519e47"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 18:14:56 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 18:14:56 2009 -0700"
      },
      "message": "fixed some issues with the software renderer when surfaces are made current.\n\nthere was several issues:\n- when a surface was made non-current, the last frame wasn\u0027t shown and the buffer could stay locked\n- when a surface was made current the 2nd time, it would not dequeue a new buffer\n\nnow, queue/dequeue are done when the surface is made current.\n\nfor this to work, a new query() hook had to be added on android_native_window_t, it allows to retrieve some attributes of a window (currently only width and height).\n"
    },
    {
      "commit": "abcfe35781a10ab18470251f8e18661cd8ca2215",
      "tree": "eeb53f2f2ac92853a8fe24d394de306e24ca574e",
      "parents": [
        "391aac8181697c4b439e759883ad8782d2ca7c5c",
        "e56271109fe59e1c1f4958bdcdeb9a3a7f53eb28"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 14:37:48 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jul 30 14:37:48 2009 -0700"
      },
      "message": "Merge change 9070\n\n* changes:\n  Adding resizeInput and setAttributes for overlay\n"
    },
    {
      "commit": "69bdcb9b7b5089984bf474f30029fa024f519e47",
      "tree": "af3eb96bdcbe4cbf5d560a90e1e6841bc5368cd7",
      "parents": [
        "f9cd64bc6c6aa58ad120689a1a951362ff234c78"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 12:24:41 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 30 12:24:41 2009 -0700"
      },
      "message": "Fix a debug statement in BufferMapper\n"
    },
    {
      "commit": "e56271109fe59e1c1f4958bdcdeb9a3a7f53eb28",
      "tree": "201db3370a39df777129ba4329aa42014944f7c8",
      "parents": [
        "e3772efdc5dacf9a580786b836daa77ce127cb6e"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Fri Jul 24 19:25:30 2009 -0500"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Wed Jul 29 17:53:38 2009 -0700"
      },
      "message": "Adding resizeInput and setAttributes for overlay\n"
    },
    {
      "commit": "811fdfd9b7863ee4e6300500b9159d11878e1664",
      "tree": "96226ddee497fb27b25451434507bdfa79ff43c1",
      "parents": [
        "e69b16a6cb04014f3bab0c7a0ed4ed5f40732e5c",
        "71f771570e1b5341048a6fbf82a7c57d885bd850"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 10:50:52 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 20 10:50:52 2009 -0700"
      },
      "message": "Merge change 5892\n\n* changes:\n  Hardware overlay support\n"
    },
    {
      "commit": "24a7e04a62cbba05eb02a8d7b993273e8e6befaf",
      "tree": "e3e4a8d826eee55e4903da5232e686138a6f5528",
      "parents": [
        "4f1037ac714d0bc2ff64d1733b5283f61c573869"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 17 00:10:10 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Fri Jul 17 00:10:10 2009 -0400"
      },
      "message": "EventHub: Compare name instead of id when excluding event input devices.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "71f771570e1b5341048a6fbf82a7c57d885bd850",
      "tree": "7a54038caf027b749e7d8f59b4d19c54cc1f581e",
      "parents": [
        "7c38f9fbb0e140259a364302b37a1ee91e46ff23"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Wed Jul 15 18:44:27 2009 -0500"
      },
      "committer": {
        "name": "Rebecca Schultz Zavin",
        "email": "rebecca@android.com",
        "time": "Thu Jul 16 14:31:20 2009 -0700"
      },
      "message": "Hardware overlay support\n\nEnable hardware overlay support for camera and video playback use cases\n"
    },
    {
      "commit": "b441106276a9c5fcd47642aff8cda2a2039481c0",
      "tree": "78bd11f01e77433292148b50fc67ba98cdd1219d",
      "parents": [
        "7151edd5d83b3b770a0dc77cf52f7fe56b2a3af6"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 16 11:11:18 2009 -0400"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@android.com",
        "time": "Thu Jul 16 11:51:42 2009 -0400"
      },
      "message": "EventHub: Add support for excluding devices from being opened by as a keyboard.\n\nThis will be used to avoid unnecessarily listening to data from sensors\nthat function as event devices.\n\nSigned-off-by: Mike Lockwood \u003clockwood@android.com\u003e\n"
    },
    {
      "commit": "c968c3a9c782eaf44a5772cd388e5c690e5be4f3",
      "tree": "b63f5623ce1816c10b70630f4d8d335d7aead3a4",
      "parents": [
        "512bac1a9adb288fb305b17d5d1c234e01e2e517"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 14 12:06:54 2009 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Tue Jul 14 18:51:53 2009 -0700"
      },
      "message": "Implement virtual button support.\n\nThe kernel can now publish a property describing the layout of virtual\nhardware buttons on the touchscreen.  These outside of the display\narea (outside of the absolute x and y controller range the driver\nreports), and when the user presses on them a key event will be\ngenerated rather than a touch event.\n\nThis also includes a number of tweaks to the absolute controller\nprocessing to make things work better on the new screens.  For\nexample, we now reject down events outside of the display area.\n\nStill left to be done is the ability to cancel a key down event,\nso the user can slide up from the virtual keys to the touch screen\nwithout causing a virtual key to execute.\n"
    },
    {
      "commit": "14998596937791c8efdfd61411236a7c7f66c064",
      "tree": "ff827be6f2786e2af4a54a5c2563c48d386a9f89",
      "parents": [
        "ce33d96ec7139db993f306ecc869da8d3ad260b2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 18:29:59 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 13 18:29:59 2009 -0700"
      },
      "message": "fix [1964315] crash in the surface.cpp while browsing\n"
    },
    {
      "commit": "9f1234e4600d343710635973f3296da7b39cd9a2",
      "tree": "e110a73a5cec4dd06a16f666430bc04413680b3f",
      "parents": [
        "9e76a23f59880a4709a300f5af5c6e9a348f6e19",
        "47a97daf3b85e07551751eaf095106c1a911fc99"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jul 08 17:26:05 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jul 08 17:26:05 2009 -0700"
      },
      "message": "resolved conflicts for merge of 04c7d0f8 to master\n"
    },
    {
      "commit": "f72d640b7c7de40b4c5d83b69748535e4254c941",
      "tree": "984c3ef3759970c80d7f794eb06020776307453e",
      "parents": [
        "ed65428df256e3d51c1817acdd05ad15c6a91396"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jul 08 15:56:53 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jul 08 15:59:25 2009 -0700"
      },
      "message": "Add timestamps to video frames to improve A/V sync.\nBug 1927069.\n"
    },
    {
      "commit": "72b0ffe4c3776b33844bb00b9be5693bddd391f9",
      "tree": "d8c905e98ea19682efe06ab6a89995bc9296166b",
      "parents": [
        "dcab005f0729b42cb782ddd16e1205654cc9f0b5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 06 18:07:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 06 18:07:26 2009 -0700"
      },
      "message": "should fix sim build\n"
    },
    {
      "commit": "0f7f88db2771ec6b08df1354f1d85290f93227d5",
      "tree": "63ed23a46b8a32f1f21c734cd430fc88033dc925",
      "parents": [
        "af54ab9d889c574b44786e81696e47bdbc9dffd4",
        "d1d016be5fefc74977b4fe71c0166f7fd5b1172a"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 06 14:16:55 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jul 06 14:16:55 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n"
    },
    {
      "commit": "4361996a8c4a398d818da4ea453595a0a3404358",
      "tree": "4b9751025d02c21ed9473ea3f35e045945b62ebb",
      "parents": [
        "d356587db388019c552a6a185d9d3d98d24a41aa",
        "f777ac1a2be695b016dff078d14579483e9c3de9"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 06 11:02:33 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jul 06 11:02:33 2009 -0700"
      },
      "message": "am c7396025: Merge change 6084 into donut\n\nMerge commit \u0027c7396025e59524e7ef639fd86fc23123939ee91c\u0027\n\n* commit \u0027c7396025e59524e7ef639fd86fc23123939ee91c\u0027:\n  Return CAMERA_ERROR_SERVER_DIED to camera app when camera service dies (bug 1956726)\n"
    },
    {
      "commit": "7303c6bf1a8b00a0e7d8165d774a1f259b4ccda9",
      "tree": "329ae25bcf03c06ddca3828a038bd499c63dbee0",
      "parents": [
        "6b5513538aedc19c624ff7a260c832dcfae630f2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 02 18:11:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jul 02 18:50:51 2009 -0700"
      },
      "message": "get rid of references to MemoryDealer in SurfaceFlinger\n"
    },
    {
      "commit": "16f3d35459a03bf7fad41df0a0d192d2c50a0594",
      "tree": "5f417649d10b986df42f7851b3b67541f75632d9",
      "parents": [
        "bdfffcc0c265350a1d4fa79f0bc12a5b8606fde1"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 02 10:04:20 2009 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Jul 02 10:04:20 2009 -0700"
      },
      "message": "Return CAMERA_ERROR_SERVER_DIED to camera app when camera service dies (bug 1956726)\n"
    },
    {
      "commit": "84d1f7a09827fe195dd08b647b8c5092d03516f7",
      "tree": "3ae98a01683005e0fd44a5ca58d9cb453172157e",
      "parents": [
        "2dd6727c46120f2164f7ac447281f485ece9bc72",
        "9ff0fe07b6a93c1dbf967298dbba50e136bc4162"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 01 18:33:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jul 01 18:33:18 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n"
    },
    {
      "commit": "cd998742c3b439eff94683e236c09c70c9729ecf",
      "tree": "ced08bb77259f4c9fadc00c1f9dab38e9d889994",
      "parents": [
        "5c670fbc50a5eaf5615fbff48cdf82a84d8059e3",
        "988fb62884c108e487a39ef03f0873f74525a9c8"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jul 01 11:20:08 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jul 01 11:20:08 2009 -0700"
      },
      "message": "am b8a10fe4: Allow setPreviewDisplay after startPreview.\n\nMerge commit \u0027b8a10fe45657f2dcc50cae8a06805f8438a6937e\u0027\n\n* commit \u0027b8a10fe45657f2dcc50cae8a06805f8438a6937e\u0027:\n  Allow setPreviewDisplay after startPreview.\n"
    },
    {
      "commit": "988fb62884c108e487a39ef03f0873f74525a9c8",
      "tree": "28dee31c23cf25106f7ae5e8c1e76ddd5e9ff9aa",
      "parents": [
        "0bfb456fc044666c76e5047eec19487c778e4706"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Tue Jun 23 23:37:36 2009 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Wed Jul 01 01:41:25 2009 +0800"
      },
      "message": "Allow setPreviewDisplay after startPreview.\n"
    },
    {
      "commit": "9f96145725ff3f265712d607d19078fb91a5c8ec",
      "tree": "353412441f6f9e59e3cafcf29a2189d510b19d9a",
      "parents": [
        "446ff920387052887bc905cc0cc439a7e3c38b83"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 18:46:37 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 29 18:46:37 2009 -0700"
      },
      "message": "Region::makeBoundsSelf() efficiently turns a region to its bounds\n"
    },
    {
      "commit": "694fcc5d1d3505c034a2cb89b6150214e7cea0fd",
      "tree": "f6227f22f57d9d1d5fe0d82edc2fc75ba3c9dd20",
      "parents": [
        "39e0745497bfe09b251ce57c41717b382d328b5c",
        "a54d053e79794f4fde5508eae0fdd792e08a31db"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 25 15:11:09 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Thu Jun 25 15:11:09 2009 -0700"
      },
      "message": "am c44989d6: Merge change 5350 into donut\n\nMerge commit \u0027c44989d6c7bcc761fb37f54fd37aac2070ba8e5e\u0027\n\n* commit \u0027c44989d6c7bcc761fb37f54fd37aac2070ba8e5e\u0027:\n  move ui/Time.cpp to core/jni, since this is the only place it is used\n"
    },
    {
      "commit": "a8664df810ad46ce33c0ea28d4e648c067112db8",
      "tree": "53c63e4eb2709b2100586f1a13118a4e750824fa",
      "parents": [
        "d654ae6d7eadd919b8e5983fabd3e60c9e04bdf5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 23:12:06 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 14:39:56 2009 -0700"
      },
      "message": "move ui/Time.cpp to core/jni, since this is the only place it is used\n"
    },
    {
      "commit": "2ab55a4e31c37d74abdd85486e1f4045c7f708e2",
      "tree": "d4ff7f4fe7ac7a6078eb819077e1325d7938e28e",
      "parents": [
        "8d2e83b9f44c7f2207a312fcfda8eb3a4c26745f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 22:39:26 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 25 00:09:27 2009 -0700"
      },
      "message": "make use of new eglGetRenderBufferANDROID extension to clean-up a bit a few hacks added recently\n"
    },
    {
      "commit": "69029eb5abfaeb52716b84db89e32dc742551508",
      "tree": "42f99fe892035c13c17fcee07582a607a5566355",
      "parents": [
        "4c4b387afb2e775fcac3b81a249bb7646515dffa"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue Jun 23 21:11:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 20:39:16 2009 -0700"
      },
      "message": "hack copybit back in for video playback on msm7k. we have h/w accelerated video again\n"
    }
  ],
  "next": "4c4b387afb2e775fcac3b81a249bb7646515dffa"
}
