)]}'
{
  "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": "e156e6478f8393dc519a903d48ef09b3eabf32ad",
      "tree": "a8864bc0a8985836aab7df8c8a3d5ef5f84eb9e4",
      "parents": [
        "49b2fdce2f7e9745e1ae5279f28fe64ece34c496"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 11 15:05:52 2010 -0800"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Mar 11 15:05:52 2010 -0800"
      },
      "message": "Add a new connect/disconnect API to android_native_window_t\n\nit\u0027s used to keep track of which API owns the surface.\n\nChange-Id: I1021c5905c020efc3c428e561b38189377168b22\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": "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": "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": "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": "5994a330ac949e7706540f22cd73d76d9f2a96cb",
      "tree": "46250601cda14ac8a44572be4566a8ac0869701d",
      "parents": [
        "32f6863e218e19f8a3daab7e345bb4ae6587865a"
      ],
      "author": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 16:30:39 2010 -0800"
      },
      "committer": {
        "name": "Chih-Chung Chang",
        "email": "chihchung@google.com",
        "time": "Fri Jan 22 16:30:39 2010 -0800"
      },
      "message": "Add support for 180/270 degrees rotation.\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": "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": "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": "986e0dcf7ad2bbf0ec717430cd4e84ee82a3c6ea",
      "tree": "6e5cc79434d23a456184af9067260bc15df05c37",
      "parents": [
        "d6223663f76f435e94eff7fe98505054ff06a47f"
      ],
      "author": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Fri Oct 23 17:39:46 2009 +0800"
      },
      "committer": {
        "name": "Wu-cheng Li",
        "email": "wuchengli@google.com",
        "time": "Thu Oct 29 13:20:26 2009 +0800"
      },
      "message": "Use image rect information to display zoomed picture.\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": "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": "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": "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": "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": "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": "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": "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": "37b2a3744c2045cbf15a50dc1312fdd8c67ae8b1",
      "tree": "7ca06828ddfe3d25dce19295c95d22cf2a9b6835",
      "parents": [
        "50ba9f09b2ef30f12167c006b5c4573f2f68efb9"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 17 12:33:20 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Aug 17 12:33:20 2009 -0700"
      },
      "message": "really be more friendly with C\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": "238a66e67b155d7e1fcdb19b672ffc0ae4a6fc94",
      "tree": "64bc22ea6169a05f1dc9ba6b1bee591e47fbd74e",
      "parents": [
        "ccde199f7ce916e42a45b5a50e937d9c17904da2"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 17:57:53 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 18:27:10 2009 -0700"
      },
      "message": "be more friendly with C\n"
    },
    {
      "commit": "ccde199f7ce916e42a45b5a50e937d9c17904da2",
      "tree": "5c2898152809f167bf29fbb723c027c49730e463",
      "parents": [
        "400f18045af0fc39f95c7e5736808648d19b28b4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Aug 13 17:29:02 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 18:19:32 2009 -0700"
      },
      "message": "Surface::GPU and Surface::HARDWARE are now deprecated; they will be set automatically if needed.\n\nthis also ripples into the window manager API by making some constant there deprecated as well.\n"
    },
    {
      "commit": "fae3e73b6157555e8605f8b0c1d5b0bcc5b5ea00",
      "tree": "1beec506272f367f679bfe583eb1c7e816fdc91f",
      "parents": [
        "3bca35a3f4a7cf82eb04b1ae09f307e28de78830"
      ],
      "author": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Aug 13 16:50:54 2009 -0700"
      },
      "committer": {
        "name": "Dima Zavin",
        "email": "dima@android.com",
        "time": "Thu Aug 13 16:52:24 2009 -0700"
      },
      "message": "ui: make native_window_set_usage be a static inline\n\nSigned-off-by: Dima Zavin \u003cdima@android.com\u003e\n"
    },
    {
      "commit": "4c8fb0a184e51c3f561fff26ba84ceb5ec75be24",
      "tree": "bf62fcd39b8ddce9c5a9104bad23244cc747a15b",
      "parents": [
        "1689746b118fbf3a3a3e23f2ce7e2ab104d2ecfc"
      ],
      "author": {
        "name": "Benny Wong",
        "email": "Benny.Wong@motorola.com",
        "time": "Wed Aug 12 12:01:27 2009 -0500"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Thu Aug 13 10:46:28 2009 -0700"
      },
      "message": "Modified the camera HAL interface to use the same generic callback architecture as camera services\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": "e186431c33fa332b585e37f6b5ef5efd39b359cf",
      "tree": "471d016198876e139ecd39934e126c6485cb47d4",
      "parents": [
        "fc40bc2e35f73f6efac91f9acca14d8e116a7565"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Aug 07 12:01:29 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Mon Aug 10 12:58:05 2009 -0700"
      },
      "message": "Expose a variation of the createRenderer API that works on a plain Surface.\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": "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": "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": "764d4ab4561b8556c06f2ae7c56b7e983a5cf0b7",
      "tree": "d422e17ee9f3b8e921695a3a519adc140d4e06c8",
      "parents": [
        "3e27ed48f32d12441a1eb69e69217514530642f9"
      ],
      "author": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 31 11:52:50 2009 -0700"
      },
      "committer": {
        "name": "Andreas Huber",
        "email": "andih@google.com",
        "time": "Fri Jul 31 12:48:53 2009 -0700"
      },
      "message": "The IOMX interface now instantiates IOMXRenderers to hide the details of hardware accelerated blitting.\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": "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": "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": "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": "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": "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": "ff10113dd45b6a8cb32ccaf36b2bc768c06ff26a",
      "tree": "d3f9fc3a02171d447eba0d35aa68d8385fb3a1ec",
      "parents": [
        "b9c8a7349671ed003f40f70412ed0bbacab90931",
        "5579a65263a93786219737f28c7b902ff3bf4529"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 29 16:37:31 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon Jun 29 16:37:31 2009 -0700"
      },
      "message": "am 17a80081: Merge change 5544 into donut\n\nMerge commit \u002717a80081a42410f541a220ab7e6afc64fc6cc399\u0027\n\n* commit \u002717a80081a42410f541a220ab7e6afc64fc6cc399\u0027:\n  Pipe all the camera callbacks to Java to facilitate the addition\n"
    },
    {
      "commit": "17b2ad027b4b72b96dfb663c0ea001972da7ef58",
      "tree": "91158f500cc96a54c53041cbff9b6bebf6f65b1f",
      "parents": [
        "d512f238a6c439c422a229fe53a86dc386bd3b58"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 26 19:02:40 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Jun 26 19:02:40 2009 -0700"
      },
      "message": "return bounds Rect by value\n"
    },
    {
      "commit": "c06b7cb6f35989580dff68ebc7edabc0352aa556",
      "tree": "9036dc47c60f8dfda23cb38700191cd6ca466426",
      "parents": [
        "781d1ce454023551b2634143ea145258887de898"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Fri Jun 26 13:33:32 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Fri Jun 26 13:33:32 2009 -0700"
      },
      "message": "Pipe all the camera callbacks to Java to facilitate the addition\nof new features. This will make it easy to add things like zoom\ncallbacks without modifying the entire camera stack.\nBug 1837832.\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"
    },
    {
      "commit": "4c4b387afb2e775fcac3b81a249bb7646515dffa",
      "tree": "893af3f7521ad4aa204449dc58132b21177e41fb",
      "parents": [
        "2e123245811a1f31c080a29728fcc1655045f011",
        "6ebed6600464d507a651d99792baa3a23a4f0766"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 18:31:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed Jun 24 18:31:21 2009 -0700"
      },
      "message": "merge master in master_gl\n"
    },
    {
      "commit": "aa8d188de37e262c1e705981d6fedc990b6dc100",
      "tree": "6ce0c47317a5cc4d70fba4e87aca68783ed1ca4f",
      "parents": [
        "3fc010e74e1c4f9627daf1d48ed9d89702bf8028",
        "ae0dcb536b5dc3b3a28d393f883d04ed63c30ec1"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 15:44:45 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 15:44:45 2009 -0700"
      },
      "message": "am a93466f5: Merge change 5220 into donut\n\nMerge commit \u0027a93466f5ca41c2ba6c3524c8d1edc2138bf753e3\u0027\n\n* commit \u0027a93466f5ca41c2ba6c3524c8d1edc2138bf753e3\u0027:\n  Cleanup header file. Disallow copy of Camera object by making copy\n"
    },
    {
      "commit": "de5b60b06254748e4593d6095277da45e44acf80",
      "tree": "bc06b60cc82a9f5613b76bca681d481c5a6c38fa",
      "parents": [
        "e193f7cd9eded002b5a74b8823be704c020be536",
        "43b4f796bbfe2e64cf0da79c2efa474a066ebddb"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 13:54:13 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 13:54:13 2009 -0700"
      },
      "message": "am eaa89f74: Merge change 5172 into donut\n\nMerge commit \u0027eaa89f74c04c0f10d5f3f8190b457087537bff2e\u0027\n\n* commit \u0027eaa89f74c04c0f10d5f3f8190b457087537bff2e\u0027:\n  Remove deprecated callback function support.\n"
    },
    {
      "commit": "e193f7cd9eded002b5a74b8823be704c020be536",
      "tree": "791f958dac5fd75d89cdd4020df37b2bf408cb42",
      "parents": [
        "994c7d1fe2fe0cdf4ad0a888e1b82af5b58b255d",
        "e1a75447f5ec3e9d41cb2e5d039958680477b2c5"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jun 24 13:54:09 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Wed Jun 24 13:54:09 2009 -0700"
      },
      "message": "am 3d7b8d1a: Merge change 5158 into donut\n\nMerge commit \u00273d7b8d1aa6a362292f56defbe8fb2d5653f79282\u0027\n\n* commit \u00273d7b8d1aa6a362292f56defbe8fb2d5653f79282\u0027:\n  Use a ref-counted callback interface for Camera.\n"
    },
    {
      "commit": "f5a8faa751cc55c8474ce17d407c9933ad0efdeb",
      "tree": "a792deda75c8cd4f52d9ddc94d3ea0cb8c268ef6",
      "parents": [
        "dc76f7bfa10a037ea0cc0f253022d8de7eefc691"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jun 24 10:42:53 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jun 24 10:42:53 2009 -0700"
      },
      "message": "Cleanup header file. Disallow copy of Camera object by making copy\nconstructor and operator\u003d private.\n"
    },
    {
      "commit": "dc76f7bfa10a037ea0cc0f253022d8de7eefc691",
      "tree": "50b17db5f387dffadd3e936d35eea9e811e9f2d0",
      "parents": [
        "bbbc7cb77efba3dd46e9d13fc22e81cff17c35d2"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Jun 23 19:09:05 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jun 24 07:58:27 2009 -0700"
      },
      "message": "Remove deprecated callback function support.\nThis is the last of a 3-part change to modify the camera to use\na more streamlined callback interface. This change removes the\nold code.\nBug 1884362\n"
    },
    {
      "commit": "bbbc7cb77efba3dd46e9d13fc22e81cff17c35d2",
      "tree": "ad5f5dd2ecdc50bed94d205d4ee05b006551a84e",
      "parents": [
        "c8be159ba67931ae38c552fc7b9da6084ca5a60a"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Tue Jun 23 17:30:11 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Wed Jun 24 07:58:27 2009 -0700"
      },
      "message": "Use a ref-counted callback interface for Camera.\nThis allows the camera service to hang onto the callback interface\nuntil all callbacks have been processed. This prevents problems\nwhere pending callbacks in binder worker threads are processed\nafter the Java camera object and its associated native resources\nhave been released.\nBug 1884362\n"
    },
    {
      "commit": "3d57964a81cd631d80aa9575647e1ce35b5e82d5",
      "tree": "0958ca702a23944cd1b69d4718ee19ac545d9150",
      "parents": [
        "9648c1a2b9b527bcef64bb9d96e8385a14949840"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 04 18:46:21 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jun 04 18:46:21 2009 -0700"
      },
      "message": "fix a bunch of problems with destroying surfaces.\n\nnow, all destruction path, go through the purgatory which is emptied when ~ISurface is called, but we also make sure to remove the surface from the current list from there (in case a client forgot to request the destruction explicitely).\n"
    },
    {
      "commit": "6457359fa5df7869d5881acee80b34dfc760a5bf",
      "tree": "ef8f648559e4bb622173959721c6e24c05a19a58",
      "parents": [
        "e839d826804b36b86839cb4c080f2541e9977438",
        "d23399d0fffcc87bb1f7b56c246fc696cbb6fb89"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 01 14:30:08 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon Jun 01 14:30:08 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n"
    },
    {
      "commit": "e0c322049ab2be291c1fc40f79702543d4e77934",
      "tree": "e3e672f4f4fdd72b465cc0f39fb95c7711814122",
      "parents": [
        "d07f2a523f43051a681683657f7c0da2c49f46a4"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun May 31 19:13:00 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun May 31 19:13:00 2009 -0700"
      },
      "message": "get rid of utils.h\n"
    },
    {
      "commit": "bed9dd128dfbdc7d9dbca005078536dadc0b9359",
      "tree": "eabfee52c02276a81d270595d4d436e35a5da7fa",
      "parents": [
        "4b8160fdfd3281d1d66c0cae9bb9c647b4333491"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 17:01:58 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 17:01:58 2009 -0700"
      },
      "message": "make sure the Region code disallows constructs like \"(a+b)\u003dc;\", which is somewhat meaningless.\n"
    },
    {
      "commit": "4b8160fdfd3281d1d66c0cae9bb9c647b4333491",
      "tree": "13d03a1b1839acdd42c514cbd37223e88f580d35",
      "parents": [
        "723ec00af46d1f95d69fe5af53e0a5d09f01a7d6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 15:02:35 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 15:02:35 2009 -0700"
      },
      "message": "oops forgot these changes in the previous merge. fixes build\n"
    },
    {
      "commit": "723ec00af46d1f95d69fe5af53e0a5d09f01a7d6",
      "tree": "ef596c117b8f11f8025770c52baeac04b2e4551a",
      "parents": [
        "310f8da0c3122ed5419db8f12a6e98d3188325b2",
        "39afd5f7daaa525adaf38caf4a48d2cb22e0a41d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 14:34:50 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 27 14:34:50 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n\nConflicts:\n\tinclude/ui/Rect.h\n\tlibs/ui/ISurfaceComposer.cpp\n"
    },
    {
      "commit": "2787dddcd0a814aa4a90b9e8cc72c9c258c94854",
      "tree": "7fb2c22a1938e7825397bf0100404d3608d46df9",
      "parents": [
        "ea44d9ab96a26cd85116b6ec0dc5639be38db034",
        "5208ec29db756f8c875a121e8134e22f4aa4d23c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 26 18:15:53 2009 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue May 26 18:15:53 2009 -0700"
      },
      "message": "am 0c0ad39c: Merge change 2502 into donut\n\nMerge commit \u00270c0ad39cd8eaa6de6b7f99cec3971bcc953461e0\u0027\n\n* commit \u00270c0ad39cd8eaa6de6b7f99cec3971bcc953461e0\u0027:\n  minor clean-up to Rect and Point.\n"
    },
    {
      "commit": "35801cea5f301c0e1d7a93b15a8f73f98e6b1033",
      "tree": "2cad208ad6212d912b6f3476c98c0873f8d56fd4",
      "parents": [
        "7419ebc96fa5ae665dd4426dc5a4277c9ae1f325"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 26 17:44:57 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 26 17:47:39 2009 -0700"
      },
      "message": "minor clean-up to Rect and Point.\n\n- return \"const\" objects for overloaded operators to disallow constructs like: (a+b) \u003d c;\n- don\u0027t return references to non-static members, it\u0027s not always safe.\n- Point.cpp was empty, so get rid of it\n"
    },
    {
      "commit": "310f8da0c3122ed5419db8f12a6e98d3188325b2",
      "tree": "0f3435d35e7fe8fca8dc2b347ff46276a8c351c8",
      "parents": [
        "20f68782a4ea71c6a977d7f87d8288d3daa265ec",
        "bdbf6b094d61f694f162a5a5279caededcb1f0a5"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 01:27:01 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 22 02:16:08 2009 -0700"
      },
      "message": "merge master to master_gl\n"
    },
    {
      "commit": "c5b2c0bf8007562536b822eb060fc54a01f8e08b",
      "tree": "da6084f542177972cf72a985b5d2c10330f87de3",
      "parents": [
        "208059f67ed2dd9fa025e07fcb6954d3cb61c79e"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 19 19:08:10 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Wed May 20 12:55:03 2009 -0700"
      },
      "message": "move libbinder\u0027s header files under includes/binder\n"
    },
    {
      "commit": "20f68782a4ea71c6a977d7f87d8288d3daa265ec",
      "tree": "5f286e70c9d2b870d3594354e321795496ef9b4e",
      "parents": [
        "d8fb7b586f3cfac42694208547b58438d7f3b3ed"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 11 00:03:41 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Sun May 17 23:34:16 2009 -0700"
      },
      "message": "Region now has its own implementation instead of relying on SkRegion, which allows us to break libui\u0027s dependency on libcorecg.\n"
    },
    {
      "commit": "d717598616910b5454b56429dec3bfad2757bd52",
      "tree": "c2271b0f7e475c4ac1cf520bcecd6f35e002d99a",
      "parents": [
        "5958661507b39cd59e68e9bc2b54399af92847c4",
        "757a434f81895ddcad2481a5912ff1eb0de8a0d6"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 14 22:44:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 14 22:44:23 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n\nConflicts:\n\topengl/libagl/Android.mk\n\topengl/libs/Android.mk\n\topengl/libs/egl_impl.h\n"
    },
    {
      "commit": "93b94584edb1c59037319d9bbf84881ccff9f66a",
      "tree": "7397a7b18c5731e1350f15ff9e9855443261b8d5",
      "parents": [
        "acbd84df864a26d2a928dcc9975001f6f7fb42d7"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu May 07 19:27:32 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Mon May 11 07:36:58 2009 -0700"
      },
      "message": "Modify camera framework to use new streamlined binder interface.\nThis is the second half of bug 1837832. Modifies the camera client\nand camera service to use the new binder interface. Removes the\nold binder interface. There will be one more part to this change\nto surface the undefined callbacks to the Java layer so that\npartners can implement new features without having to touch the\nstack.\n"
    },
    {
      "commit": "5958661507b39cd59e68e9bc2b54399af92847c4",
      "tree": "f387a501a721db7b34789f31c8461d554aac03c0",
      "parents": [
        "15e3747012fb2dc1b2656b0c7c8812c5bc3c6e31",
        "a1b9b6a529b0bc86867ed0facb572d1d0fc01a65"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 13:13:12 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri May 08 13:13:12 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n"
    },
    {
      "commit": "1e16b13857809eaa9bd17fb60ac0a471dc92844b",
      "tree": "0af8e8f35ac417b91d454318a45a2130e56cee04",
      "parents": [
        "e6bf8b32b616450f80b64d226ea673f4a2e0bf8d"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 17:40:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu May 07 17:40:23 2009 -0700"
      },
      "message": "add support for update-on-demand in SurfaceFlinger\n"
    },
    {
      "commit": "9b35233ea511eab24aa15de5dc2e94b6f8ed081d",
      "tree": "31e1e46ec081d441165e2f478560901b76192b55",
      "parents": [
        "2594c71c1c537fd204b5d1730437f151d31cc343"
      ],
      "author": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu May 07 12:25:25 2009 -0700"
      },
      "committer": {
        "name": "Dave Sparks",
        "email": "davidsparks@android.com",
        "time": "Thu May 07 12:25:25 2009 -0700"
      },
      "message": "Add new binder methods to camera client to support generic callbacks\nThis is the first step in a multi-step change to move from the old\nspecific callbacks to a generic callback. This will allow future\nflexibility in the interface without requiring binder rewrites.\nBug 1837832\n"
    },
    {
      "commit": "aa8c0ff7a36b4840dcf3e72c9696b86d192c4314",
      "tree": "04b4b817e26c300ad1da1a27784b0b7b2abf2420",
      "parents": [
        "58a79f47457e9cae2f6880653b581fe3170b0b1f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:29:35 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:29:35 2009 -0700"
      },
      "message": "get rid off unneeded flags\n"
    },
    {
      "commit": "58a79f47457e9cae2f6880653b581fe3170b0b1f",
      "tree": "a8d9998ea868301995f31298b3c555dadd084ad2",
      "parents": [
        "7189c0054e29a66d945f5657c48d5ecf538ea511"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:21:32 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:21:32 2009 -0700"
      },
      "message": "move android_native_buffer_t declaration into its own private/ui/android_native_priv.h header, since user code should never have access to it.\n"
    },
    {
      "commit": "7189c0054e29a66d945f5657c48d5ecf538ea511",
      "tree": "59ffcb8c9e9aa615b86dd3b033059e1014eda3ac",
      "parents": [
        "21c59d0070fe24a8e04e52ce04d511a924a9932f"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:11:11 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 18:11:11 2009 -0700"
      },
      "message": "move opengl/include/EGL/android_natives.h to include/ui/egl/android_natives.h and don\u0027t include it from egl.h\n\nthe android_native_ types are just forward declared in egl.h\n"
    },
    {
      "commit": "21c59d0070fe24a8e04e52ce04d511a924a9932f",
      "tree": "fb3f5f8519fce57c714dce607b12dc44aba67702",
      "parents": [
        "e71212ba5397387100a578d23b15862518a7a859"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 00:59:23 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 00:59:23 2009 -0700"
      },
      "message": "get rid of android_native_buffer_t::getHandle() and replace it with an handle field\n\nthis abstraction was not necessary. things are easier now.\n"
    },
    {
      "commit": "e71212ba5397387100a578d23b15862518a7a859",
      "tree": "3bbcd9e77ec897c785781aacc35a5498fe2a0edc",
      "parents": [
        "b2dd686d06a608ee40285b93bc0217cf26c2b035"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 00:37:46 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Tue May 05 00:37:46 2009 -0700"
      },
      "message": "removed the \"bits\" attribute from android_native_buffer_t.\n\n\"bits\" can never be trusted now that we need to call lock() on the handle to get the virtual address of the buffer.\n"
    },
    {
      "commit": "b2dd686d06a608ee40285b93bc0217cf26c2b035",
      "tree": "a2eba0a8b1f21384dd93cb251022d1b031bf2a5a",
      "parents": [
        "0926f50664c739eaee60341f8e8c694dc9a4f3eb"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 19:38:43 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 19:38:43 2009 -0700"
      },
      "message": "minor clean-up in FramebufferNativeWindow\n"
    },
    {
      "commit": "0926f50664c739eaee60341f8e8c694dc9a4f3eb",
      "tree": "642597de2cc52f7636ae74f1a88f3706e3e54a4a",
      "parents": [
        "7be3e5d2d8101a8f5e12bbdf650431a734f88eba"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 14:17:04 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Mon May 04 14:17:04 2009 -0700"
      },
      "message": "update surfaceflinger, libui and libagl to the new gralloc api\n\n- Currently the lock/unlock path is naive and is done for each drawing operation (glDrawElements and glDrawArrays). this should be improved eventually.\n- factor all the lock/unlock code in SurfaceBuffer.\n- fixed \"showupdate\" so it works even when we don\u0027t have preserving eglSwapBuffers().\n- improved the situation with the dirty-region and fixed a problem that caused GL apps to not update.\n- make use of LightRefBase() where needed, instead of duplicating its implementation\n- add LightRefBase::getStrongCount()\n- renamed EGLNativeWindowSurface.cpp to FramebufferNativeWindow.cpp\n\n- disabled copybits test, since it clashes with the new gralloc api\n\n- Camera/Video will be fixed later when we rework the overlay apis\n"
    },
    {
      "commit": "7be3e5d2d8101a8f5e12bbdf650431a734f88eba",
      "tree": "d45d998a3a085ce95bc632095edd0f468391f0e7",
      "parents": [
        "18829d11aae5035b439dce157dca8867a0777d7a",
        "fb5982967eddeb19a2e6454961e37a32e0e1b986"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 30 14:43:18 2009 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Apr 30 14:43:18 2009 -0700"
      },
      "message": "Merge commit \u0027goog/master\u0027 into merge_master\n\nConflicts:\n\tlibs/surfaceflinger/Layer.cpp\n\tlibs/surfaceflinger/SurfaceFlinger.cpp\n\topengl/libagl/egl.cpp\n\topengl/libs/EGL/egl.cpp\n\topengl/libs/GLES_CM/gl.cpp\n\topengl/libs/GLES_CM/gl_api.in\n\topengl/libs/gl_entries.in\n\topengl/libs/tools/glapigen\n"
    },
    {
      "commit": "d2dc9ac87bbdbbe465a0a07b63843282fb28eee7",
      "tree": "81353fd56e648c945020fd67bdb770d9a5edcba4",
      "parents": [
        "9d206fa56f77ae6c32bf5144db4f95b0a6cfcb62"
      ],
      "author": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 27 12:01:59 2009 -0700"
      },
      "committer": {
        "name": "James Dong",
        "email": "jdong@google.com",
        "time": "Mon Apr 27 12:01:59 2009 -0700"
      },
      "message": "Bug fix(1807910): media recorder crash due to the use of locked camera object (last part)\n- remove an unused Camera constructor\n- add a check on the argument in Camera::create() method\n"
    }
  ],
  "next": "f1a5314076248a352915ae1a987725ae76cc8a22"
}
