)]}'
{
  "commit": "90ee3787451950bccddb760214de2603222566eb",
  "tree": "af694ddf958c2ec5f3dea4b6440e0c0978a965d6",
  "parents": [
    "0306a9af2c0c2f5799bf1d8591b387ff8cf9c1f0"
  ],
  "author": {
    "name": "Robert Ancell",
    "email": "robert.ancell@canonical.com",
    "time": "Tue Sep 03 16:02:21 2024 +1200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 03 16:02:21 2024 +1200"
  },
  "message": "Make FlApplication class (#54637)\n\nAn app can now be:\r\n```c\r\n#include \u003cflutter_linux/flutter_linux.h\u003e\r\n\r\n#include \"flutter/generated_plugin_registrant.h\"\r\n\r\nstatic void register_plugins_cb(FlApplication *app, FlPluginRegistry *registry) {\r\n  fl_register_plugins(registry);\r\n}\r\n\r\nstatic GtkWindow *create_window_cb(FlApplication *app, FlView *view) {\r\n  GtkApplicationWindow *window \u003d\r\n      GTK_APPLICATION_WINDOW(gtk_application_window_new(GTK_APPLICATION(app)));\r\n\r\n  gtk_window_set_title(GTK_WINDOW(window), \"flutter_application_test\");\r\n  gtk_window_set_default_size(GTK_WINDOW(window), 1280, 720);\r\n\r\n  gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));\r\n\r\n  return GTK_WINDOW(window);\r\n}\r\n\r\nint main(int argc, char** argv) {\r\n  g_autoptr(FlApplication) app \u003d fl_application_new(APPLICATION_ID, G_APPLICATION_NON_UNIQUE);\r\n  g_signal_connect(app, \"register-plugins\", G_CALLBACK(register_plugins_cb), nullptr);\r\n  g_signal_connect(app, \"create-window\", G_CALLBACK(create_window_cb), nullptr);\r\n  return g_application_run(G_APPLICATION(app), argc, argv);\r\n}\r\n```\r\n\r\nWith this simplified, we can now build multi-window behaviour without having to modify the template much in the future.\r\n\r\nFixes https://github.com/flutter/flutter/issues/142920\r\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7ace4f7de27c2049e79638585d5aac6cbd3c930f",
      "old_mode": 33188,
      "old_path": "ci/licenses_golden/licenses_flutter",
      "new_id": "832c014b39bfbba3b72bef8aed8db1022a22ef1c",
      "new_mode": 33188,
      "new_path": "ci/licenses_golden/licenses_flutter"
    },
    {
      "type": "modify",
      "old_id": "ef05b4ddd211748309414e97fb06a9e2672f07e8",
      "old_mode": 33188,
      "old_path": "shell/platform/linux/BUILD.gn",
      "new_id": "13511e93e4b3221fe8178b08091376326507df62",
      "new_mode": 33188,
      "new_path": "shell/platform/linux/BUILD.gn"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "84fc87d765ddf00c3c8f629ff8acf9db84d84cdc",
      "new_mode": 33188,
      "new_path": "shell/platform/linux/fl_application.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "73b5dc1173f35fd758cdd7aecdca33072a27c596",
      "new_mode": 33188,
      "new_path": "shell/platform/linux/fl_application_test.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c4c4133bdf5a222fcd2a36c343bbc2eca9bea9f9",
      "new_mode": 33188,
      "new_path": "shell/platform/linux/public/flutter_linux/fl_application.h"
    },
    {
      "type": "modify",
      "old_id": "715cb5597bae29067880b68bcb98f5deaa4a4079",
      "old_mode": 33188,
      "old_path": "shell/platform/linux/public/flutter_linux/flutter_linux.h",
      "new_id": "c0d1483baa02fdaaf66f35b9e7d97656cecb0e38",
      "new_mode": 33188,
      "new_path": "shell/platform/linux/public/flutter_linux/flutter_linux.h"
    }
  ]
}
