sony / flutter-embedded-linux

Embedded Linux embedding for Flutter
BSD 3-Clause "New" or "Revised" License
1.16k stars 122 forks source link

Application window does not display correctly on weston #349

Closed makotosato-at closed 11 months ago

makotosato-at commented 11 months ago

Hello.

I'm using RPi4 and flutter-elinux 3.10.6. When I launch an application with -f option on weston, the window does not display correctly as shown below. flutter_app_ss (This is the default application created by flutter-elinux create.)

Is there any solution to this problem? I think #336 is related.

flutter-elinux 3.10.6 weston 9.0.0 Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux

HidenoriMatsubayashi commented 11 months ago

Can you please inform me of some more information?

makotosato-at commented 11 months ago

Thank you for your reply.

  • Reproduce rate

Reproduce rate is 47/50

  • Can it be reproduced even using Sway?

Yes. Reproduce rate is 47/50

  • Did old flutter-elinux versions work fine?

3.7.10 : It works fine. 3.7.11 : It does not work fine.

HidenoriMatsubayashi commented 11 months ago

Can you please get trace level logs?

makotosato-at commented 11 months ago

Hello.

I could not get FLUTTER_LOG_LEVELS=TRACE log because it only occurs in the release version, but I could get WAYLAND_DEBUG=1 log instead.(ok_log.txt and ng_log.txt)

flutter-elinux version is 3.10.6 and I got this log on RPi4. ok_log.txt ng_log.txt

makotosato-at commented 11 months ago

I built libflutter_elinux_wayland.so with -DENABLE_ELINUX_EMBEDDER_LOG=ON -DFLUTTER_RELEASE=ON and I got trace level log. The log is the same whether the phenomenon occurs or not. trace_log.txt

HidenoriMatsubayashi commented 11 months ago

Thanks. #350 should fix this issue. Can you please check it? I'm a little concerned about degradation.

makotosato-at commented 11 months ago

Thank you for the patch. I tried it and it works fine, but "xdg_surface has never been configured" occurred.(Same as #330)

I tried the following patch and it worked.

diff --git a/src/flutter/shell/platform/linux_embedded/window/elinux_window_wayland.cc b/src/flutter/shell/platform/linux_embedded/window/elinux_window_wayland.cc
index 8a84022..64b72e4 100644
--- a/src/flutter/shell/platform/linux_embedded/window/elinux_window_wayland.cc
+++ b/src/flutter/shell/platform/linux_embedded/window/elinux_window_wayland.cc
@@ -86,6 +86,7 @@ const xdg_surface_listener ELinuxWindowWayland::kXdgSurfaceListener = {
           if (self->wait_for_configure_) {
             self->wait_for_configure_ = false;
           }
+          self->request_redraw_ = true;
         },
 };
HidenoriMatsubayashi commented 11 months ago

I see. Can you please create a change and send it to the PR?