)]}'
{
  "commit": "65dec05eee19238126a556991fb34fc76005b8df",
  "tree": "7cb17c8d024cd95fa1b857f41cd4c34e4bfe3fe3",
  "parents": [
    "7c18a85ef91a50ac0a91ffc648ba0a1d22b8184a"
  ],
  "author": {
    "name": "Robert Ancell",
    "email": "robert.ancell@canonical.com",
    "time": "Wed Aug 19 12:16:32 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Aug 19 12:16:32 2026 +0000"
  },
  "message": "Move compositor frame ownership into the view renderers (#189162)\n\nMake FlCompositorSoftware and FlCompositorOpenGL stateless so they only\ncomposite layers into a caller-provided target. The view renderers now\nown the Cairo surface / OpenGL framebuffer and CPU pixel buffers, size\nthem, and read frames back as required.\n\nAdd FlOpenGLFrame to encapsulate the OpenGL framebuffer and CPU pixel\ncopy managed by the OpenGL renderer, and move the shared window-resize\nlogic into a common fl_view_renderer_resize_to_frame method on\nFlViewRenderer. Drop the now unused return value from\nfl_compositor_opengl_composite_layers. Update the tests and compositor\nclass descriptions to match.\n\n---------\n\nCo-authored-by: Matthew Kosarek \u003cmatt.kosarek@canonical.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "52f189e37943677651fa4f57da04a1cc79906109",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/BUILD.gn",
      "new_id": "e8098a71d4eb2eeefcdecb4bd69686468f01bb6b",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "b36061b72086fd7c26a9a3fa7b3f0de71d98de49",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_compositor_opengl.cc",
      "new_id": "a90a659754cffdbe5b73ec8da2f9adede47e8c5e",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_compositor_opengl.cc"
    },
    {
      "type": "modify",
      "old_id": "448c032e90064c38cf18cd10b42b16efa4ae71aa",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_compositor_opengl.h",
      "new_id": "b95e3c97c6e5f543b505f044d4b93260767e6269",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_compositor_opengl.h"
    },
    {
      "type": "modify",
      "old_id": "424ec4f3c9aa6291bf42ef30f81fc4182586f89b",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_compositor_opengl_test.cc",
      "new_id": "649cbbd311524804978d21df2ea568b66127e634",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_compositor_opengl_test.cc"
    },
    {
      "type": "modify",
      "old_id": "f604d9b72d0b5c6990344bf42875e7ce6a7f5f80",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_compositor_software.cc",
      "new_id": "54e1a0c4f501c0c9699eb6db3760d1b745934687",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_compositor_software.cc"
    },
    {
      "type": "modify",
      "old_id": "a0c8657213daea92665ca60660919eea0cc2cc2e",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_compositor_software.h",
      "new_id": "909788c1b7a347db017dad38cbfa3e336c59d928",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_compositor_software.h"
    },
    {
      "type": "modify",
      "old_id": "b478b9b46f27ee3f251cc49bf04cd1152ee76875",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_compositor_software_test.cc",
      "new_id": "67950e352f6a3cb2e727d87423cb0ed8b8e47171",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_compositor_software_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cb9c793caacb5b82addbb3dff90d7aaa954051a0",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_opengl_frame.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fdb9e17d006669c38281cb156d5e99269047141a",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_opengl_frame.h"
    },
    {
      "type": "modify",
      "old_id": "bc4143fb579a35feb6fcc033878ab19a7508cfee",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_view_renderer.cc",
      "new_id": "65270f49e91e53b4b0edaa5bbd651dc21f42adc9",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_view_renderer.cc"
    },
    {
      "type": "modify",
      "old_id": "b00f778a45c32f9fc35073d0609f4578af7e1ae2",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_view_renderer.h",
      "new_id": "e0687a8b1384392f95198c3c438c6d2324d0f3e1",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_view_renderer.h"
    },
    {
      "type": "modify",
      "old_id": "7a3f9552c2280d0bfd034302c87e10b220cb721c",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_view_renderer_opengl.cc",
      "new_id": "59fc4d7df1b119c161d3aaec05065ad3dbd08c4a",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_view_renderer_opengl.cc"
    },
    {
      "type": "modify",
      "old_id": "03d82511150cce4d92c0f3d0130a250d51d2acc6",
      "old_mode": 33188,
      "old_path": "engine/src/flutter/shell/platform/linux/fl_view_renderer_software.cc",
      "new_id": "c639352094e6e5694f9bebb58a969f1ce1861f5b",
      "new_mode": 33188,
      "new_path": "engine/src/flutter/shell/platform/linux/fl_view_renderer_software.cc"
    }
  ]
}
