summaryrefslogtreecommitdiffstats
path: root/meta-agl-flutter/recipes-graphics/toyota/files/0001-Allow-the-embedder-to-run-as-a-regular-normal-applic.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-flutter/recipes-graphics/toyota/files/0001-Allow-the-embedder-to-run-as-a-regular-normal-applic.patch')
-rw-r--r--meta-agl-flutter/recipes-graphics/toyota/files/0001-Allow-the-embedder-to-run-as-a-regular-normal-applic.patch181
1 files changed, 0 insertions, 181 deletions
diff --git a/meta-agl-flutter/recipes-graphics/toyota/files/0001-Allow-the-embedder-to-run-as-a-regular-normal-applic.patch b/meta-agl-flutter/recipes-graphics/toyota/files/0001-Allow-the-embedder-to-run-as-a-regular-normal-applic.patch
deleted file mode 100644
index 5b63e20e..00000000
--- a/meta-agl-flutter/recipes-graphics/toyota/files/0001-Allow-the-embedder-to-run-as-a-regular-normal-applic.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-From 7f3f913ec5bea1d94c04f8a029db659c33e56dbf Mon Sep 17 00:00:00 2001
-From: Marius Vlad <mv0@users.noreply.github.com>
-Date: Sun, 24 Jul 2022 21:15:54 +0300
-Subject: [PATCH 1/3] Allow the embedder to run as a regular/normal application
- (#71)
-
-* shell: Do not issue always the ready request
-
-Rather than sending the ready request always, just do it when we've
-found at least a background type of surface.
-
-This way we can have a flutter instance as a regular application but
-also as a shell client.
-
-This is a work-around for the time being, a much more suitable approach
-would be to have a mechanism that tells us when the client has finished
-loading or has it's first frame swapped (or something similar to that).
-
-Note that we need at least a background surface so not finding one
-assumes that we're a regular application (WINDOW_NORMAL).
-
-Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
-
-* shell: Do not attempt always bind to agl-shell interface
-
-This helps up running as a regular application in
-situations where we already have a client bound to the agl-shell
-interface.
-
-We can't really accept more than one client to bind to the interface and
-without a change in the protocol to avoid racy situations, it seems more
-natural for the embedder to infer if it actually needs to do that.
-
-When the protocol has been updated to include additional events to let
-clients that they've lost the race, we can remove this change.
-
-Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
-
-Co-authored-by: Marius Vlad <marius.vlad@collabora.com>
----
- shell/app.cc | 13 +++++++++++--
- shell/wayland/display.cc | 18 +++++++++++++++---
- shell/wayland/display.h | 8 +++++++-
- shell/wayland/window.h | 2 +-
- 4 files changed, 34 insertions(+), 7 deletions(-)
-
-diff --git a/shell/app.cc b/shell/app.cc
-index 03c33ff..3ca183b 100644
---- a/shell/app.cc
-+++ b/shell/app.cc
-@@ -25,8 +25,10 @@
-
- App::App(const std::vector<Configuration::Config>& configs)
- : m_wayland_display(std::make_shared<Display>(!configs[0].disable_cursor,
-- configs[0].cursor_theme)) {
-+ configs[0].cursor_theme,
-+ configs)) {
- FML_DLOG(INFO) << "+App::App";
-+ bool found_view_with_bg = false;
-
- size_t index = 0;
- m_views.reserve(configs.size());
-@@ -35,9 +37,16 @@ App::App(const std::vector<Configuration::Config>& configs)
- view->Initialize();
- m_views.emplace_back(std::move(view));
- index++;
-+
-+ if (WaylandWindow::get_window_type(cfg.view.window_type) ==
-+ WaylandWindow::WINDOW_BG)
-+ found_view_with_bg = true;
- }
-
-- m_wayland_display->AglShellDoReady();
-+ // check that if we had a BG type and issue a ready() request for it,
-+ // otherwise we're going to assume that this is a NORMAL/REGULAR application.
-+ if (found_view_with_bg)
-+ m_wayland_display->AglShellDoReady();
-
- FML_DLOG(INFO) << "-App::App";
- }
-diff --git a/shell/wayland/display.cc b/shell/wayland/display.cc
-index 06eba8c..5d78471 100644
---- a/shell/wayland/display.cc
-+++ b/shell/wayland/display.cc
-@@ -27,7 +27,9 @@
- #include "constants.h"
- #include "engine.h"
-
--Display::Display(bool enable_cursor, std::string cursor_theme_name)
-+Display::Display(bool enable_cursor,
-+ std::string cursor_theme_name,
-+ const std::vector<Configuration::Config>& configs)
- : m_xkb_context(xkb_context_new(XKB_CONTEXT_NO_FLAGS)),
- m_buffer_scale(1),
- m_last_buffer_scale(m_buffer_scale),
-@@ -35,6 +37,15 @@ Display::Display(bool enable_cursor, std::string cursor_theme_name)
- m_cursor_theme_name(std::move(cursor_theme_name)) {
- FML_DLOG(INFO) << "+ Display()";
-
-+ for (auto const& cfg : configs) {
-+ // check if we actually need to bind to agl-shell
-+ auto window_type = WaylandWindow::get_window_type(cfg.view.window_type);
-+ if (window_type != WaylandWindow::WINDOW_NORMAL) {
-+ m_bind_to_agl_shell = true;
-+ break;
-+ }
-+ }
-+
- m_display = wl_display_connect(nullptr);
- if (m_display == nullptr) {
- FML_LOG(ERROR) << "Failed to connect to Wayland display. "
-@@ -46,7 +57,7 @@ Display::Display(bool enable_cursor, std::string cursor_theme_name)
- wl_registry_add_listener(m_registry, &registry_listener, this);
- wl_display_dispatch(m_display);
-
-- if (!m_agl_shell) {
-+ if (!m_agl_shell && m_bind_to_agl_shell) {
- FML_LOG(INFO) << "agl_shell extension not present";
- }
-
-@@ -152,7 +163,8 @@ void Display::registry_handle_global(void* data,
- wl_registry_bind(registry, name, &wl_seat_interface,
- std::min(static_cast<uint32_t>(5), version)));
- wl_seat_add_listener(d->m_seat, &seat_listener, d);
-- } else if (strcmp(interface, agl_shell_interface.name) == 0) {
-+ } else if (strcmp(interface, agl_shell_interface.name) == 0 &&
-+ d->m_bind_to_agl_shell) {
- d->m_agl_shell = static_cast<struct agl_shell*>(
- wl_registry_bind(registry, name, &agl_shell_interface,
- std::min(static_cast<uint32_t>(1), version)));
-diff --git a/shell/wayland/display.h b/shell/wayland/display.h
-index af3d460..bf05b27 100644
---- a/shell/wayland/display.h
-+++ b/shell/wayland/display.h
-@@ -32,11 +32,15 @@
- #include "static_plugins/text_input/text_input.h"
- #include "xdg-shell-client-protocol.h"
-
-+#include "configuration/configuration.h"
-+
- class Engine;
-
- class Display {
- public:
-- explicit Display(bool enable_cursor, std::string cursor_theme_name);
-+ explicit Display(bool enable_cursor,
-+ std::string cursor_theme_name,
-+ const std::vector<Configuration::Config>& configs);
-
- ~Display();
-
-@@ -96,6 +100,8 @@ class Display {
- struct wl_shm* m_shm{};
- struct wl_surface* m_base_surface{};
-
-+ bool m_bind_to_agl_shell = false;
-+
- std::map<wl_surface*, Engine*> m_surface_engine_map;
- wl_surface* m_active_surface{};
- Engine* m_active_engine{};
-diff --git a/shell/wayland/window.h b/shell/wayland/window.h
-index c4fe5e6..4b5c726 100644
---- a/shell/wayland/window.h
-+++ b/shell/wayland/window.h
-@@ -79,6 +79,7 @@ class WaylandWindow {
- wl_surface* GetBaseSurface() { return m_base_surface; }
-
- uint32_t m_fps_counter;
-+ static window_type get_window_type(const std::string& type);
-
- private:
- struct shm_buffer {
-@@ -157,5 +158,4 @@ class WaylandWindow {
-
- static const struct wl_callback_listener frame_listener;
-
-- static window_type get_window_type(const std::string& type);
- };
---
-2.35.3
-