GithubHelp home page GithubHelp logo

sony / flutter-embedded-linux Goto Github PK

View Code? Open in Web Editor NEW
1.1K 1.1K 116.0 1.11 MB

Embedded Linux embedding for Flutter

License: BSD 3-Clause "New" or "Revised" License

CMake 1.88% C++ 80.46% C 17.66%
embedded-linux embedded-systems flutter linux

flutter-embedded-linux's People

Contributors

andreadaoud avatar cfreemoser avatar flafydev avatar fredrmag avatar hidenorimatsubayashi avatar lhoward avatar makotosato-at avatar snarpix avatar t123yh avatar taka-okayama avatar vially avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flutter-embedded-linux's Issues

patches to build weston examples in yocto

Patches for weston examples. MIT licensed reference recipes here

From 09fec6d14ee6aeb3e5472f1eb8aa7e7e70c2a7c0 Mon Sep 17 00:00:00 2001
From: Joel Winarske <[email protected]>
Date: Wed, 14 Apr 2021 16:53:46 +0000
Subject: [PATCH 1/3] weston parser fixes for desktop

---
 examples/flutter-weston-desktop-shell/main.cc | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/examples/flutter-weston-desktop-shell/main.cc b/examples/flutter-weston-desktop-shell/main.cc
index db81ea9..51d04ec 100644
--- a/examples/flutter-weston-desktop-shell/main.cc
+++ b/examples/flutter-weston-desktop-shell/main.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <config-parser.h>
+#include <libweston/config-parser.h>
 #include <flutter/dart_project.h>
 #include <flutter/flutter_view_controller.h>
 
@@ -12,14 +12,14 @@
 
 int main(int argc, char** argv) {
   // Works as a weston desktop shell.
-  int show_cursor = 1;
+  bool show_cursor = true;
   auto config_file = weston_config_get_name_from_env();
   auto config = weston_config_parse(config_file);
   auto s =
       weston_config_get_section(config, "flutter_linux_wayland", NULL, NULL);
   char* path = nullptr;
   if (s) {
-    weston_config_section_get_bool(s, "show-cursor", &show_cursor, 1);
+    weston_config_section_get_bool(s, "show-cursor", &show_cursor, true);
     weston_config_section_get_string(
         s, "flutter-project-path", &path,
         "../../sample-app/sample/build/linux/x64/release/bundle");
-- 
2.30.2

From ef8fc6cc91a23445fd52fc2f0f456a3be94a92d9 Mon Sep 17 00:00:00 2001
From: Joel Winarske <[email protected]>
Date: Wed, 14 Apr 2021 16:55:23 +0000
Subject: [PATCH 2/3] weston parser fixes for desktop vkey

---
 .../flutter-weston-desktop-shell-virtual-keyboard/main.cc   | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/examples/flutter-weston-desktop-shell-virtual-keyboard/main.cc b/examples/flutter-weston-desktop-shell-virtual-keyboard/main.cc
index db81ea9..51d04ec 100644
--- a/examples/flutter-weston-desktop-shell-virtual-keyboard/main.cc
+++ b/examples/flutter-weston-desktop-shell-virtual-keyboard/main.cc
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#include <config-parser.h>
+#include <libweston/config-parser.h>
 #include <flutter/dart_project.h>
 #include <flutter/flutter_view_controller.h>
 
@@ -12,14 +12,14 @@
 
 int main(int argc, char** argv) {
   // Works as a weston desktop shell.
-  int show_cursor = 1;
+  bool show_cursor = true;
   auto config_file = weston_config_get_name_from_env();
   auto config = weston_config_parse(config_file);
   auto s =
       weston_config_get_section(config, "flutter_linux_wayland", NULL, NULL);
   char* path = nullptr;
   if (s) {
-    weston_config_section_get_bool(s, "show-cursor", &show_cursor, 1);
+    weston_config_section_get_bool(s, "show-cursor", &show_cursor, true);
     weston_config_section_get_string(
         s, "flutter-project-path", &path,
         "../../sample-app/sample/build/linux/x64/release/bundle");
-- 
2.30.2

Without this the LIBWESTON_INCLUDE_DIRS is not getting picked up:

From abc1619e40dc49f4f5feec997636837a0a0d8606 Mon Sep 17 00:00:00 2001
From: Joel Winarske <[email protected]>
Date: Wed, 14 Apr 2021 16:56:29 +0000
Subject: [PATCH 3/3] weston include dir

---
 cmake/package.cmake | 1 +
 1 file changed, 1 insertion(+)

diff --git a/cmake/package.cmake b/cmake/package.cmake
index 96ad106..ce198b8 100644
--- a/cmake/package.cmake
+++ b/cmake/package.cmake
@@ -32,6 +32,7 @@ else()
     string(REPLACE "." ";" WESTON_VERSION_LIST ${WESTON_VERSION})
     list(GET WESTON_VERSION_LIST 0 WESTON_VERSION_MAJOR)
     pkg_check_modules(LIBWESTON REQUIRED libweston-${WESTON_VERSION_MAJOR})
+    include_directories(${LIBWESTON_INCLUDE_DIRS})
   endif()
 endif()
 
-- 
2.30.2

DRM doesn't work the PinePhone

Using PinePhone running ManjaroARM with Plasma Mobile, the DRM backend doesn't work.
Device information:

  • Allwinner A64
  • kernel: Linux plasma-mobile 5.11.4-1-MANJARO-ARM #1 SMP Sun Mar 7 19:22:26 UTC 2021 aarch64 GNU/Linux
  • mesa: 20.3.4 (the device is using the Lima driver)

Flutter version:

$ flutter --version
Flutter 2.1.0-11.0.pre.164 • channel unknown • unknown source
Framework • revision ede798e029 (2 days ago) • 2021-03-09 01:34:02 -0500
Engine • revision 2441c476a6
Tools • Dart 2.13.0 (build 2.13.0-116.0.dev)

LLDB trace when running the drm backend:

Process 29798 launched: '/home/kde/flutter-embedded-linux/build/flutter-drm-backend' (aarch64)
[ERROR][native_window_drm.cc(185)] Couldn't get resources
Process 29798 stopped
* thread #1, name = 'flutter-drm-bac', stop reason = signal SIGSEGV: invalid address (fault address: 0x20)
    frame #0: 0x0000aaaaaab2e570 flutter-drm-backend`flutter::NativeWindowDrm::FindConnector(this=0x0000aaaaaac75870, resources=0x0000000000000000) at native_window_drm.cc:215:34
   212 	}
   213 	
   214 	drmModeConnectorPtr NativeWindowDrm::FindConnector(drmModeResPtr resources) {
-> 215 	  for (int i = 0; i < resources->count_connectors; i++) {
    	                                 ^
   216 	    auto connector = drmModeGetConnector(drm_device_, resources->connectors[i]);
   217 	    // pick the first connected connector
   218 	    if (connector->connection == DRM_MODE_CONNECTED) {

I don't have a RPi4 to verify if it is the same issue as the one observed with #9

Ozone abstraction

Hi,
I was wondering if you might be interested in using Ozone to abstract away the back ends for Wayland, DRM, etc.

That would also bring along support for X11, Cast and any future backends as well.

There is no dependency on any other toolkit like GTK or even a dependency on Chromium.

It would bring along support for running headless, using hardware overlays and zero-copy texture uploads for things like low power hardware accelerated video on embedded and desktop platforms.

README and information on how to gather logs and errors

There is no information on how to gather logs or to trace errors.

To gather some further information about the DRM segfault I'm getting on my aarch64 devices, I've built the drm backend with an additional parameter so that lldb and gdb can provide more detailed feedback:

cmake -DUSER_PROJECT_PATH=examples/flutter-drm-backend -DCMAKE_BUILD_TYPE=Debug ..

What would be the preferred method of capturing/tracing errors with the embedder?

Doesn't work on Raspberry Pi4 when using DRM backend

I tried to run this embedder on Raspberry Pi4 (Ubuntu 20), but drmModeGetResources returns NULL. According to this article, the correct device file name is /dev/dri/card1 instead of /dev/dri/card0. So, we need to add a mechanism to change the device file name properly.

Add X11 backend support for debugging

Supports X11 backend for debugging purposes only when developing Flutter apps. Supporting x11 is the lowest priority task because we don't plan to use x11 in embedded at least now.

  • Base implementation with Xlib
  • Support window resize
  • Support mouse/button input
  • Support keyboard input
  • Support clipboard
  • Support mouse cursor
  • Full screen option

Mouse Dragging (Swipe)

I can run the Gallery app (master) AOT on a NVIDIA Xavier (demo-image-egl - master) using flutter-drm-eglstream-backend. LC_ALL needs to be properly set or you get a gray screen with a small flutter logo on top of the screen. Mouse swipes don't work, only click and scroll. Most of the screens support swipes.

root@jetson-xavier-nx-devkit:~# LC_ALL=en_GB flutter-drm-eglstream-backend -b /usr/share/flutter-gallery/sony
[WARNING][linuxes_window_drm.h(112)] FLUTTER_DRM_DEVICE is not set, use /dev/dri/card0
[INFO][native_window_drm.cc(67)] resolution: 1680x1440
[INFO][linuxes_window_drm.h(140)] Display output resolution: 1680x1440
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14
[ERROR][native_window_drm.cc(43)] Couldn't move the mouse cursor: -14

Built with meta-flutter

weston >= 8

Embedders hang when using weston >= 8. It should also reflect in test matrix version of compositor.

Tests should be based on Dunfell (LTS) or later.

Test on arm devices

This issue is a memo for testing on different arm devices. I would like to test on a lot of arm devices.

Tested devices

  • Jetson Nano (OS: Ubuntu 18.04, JetPack)

    • Wayland backend
    • DRM backend (#1)
  • Raspberry Pi4 (OS: Ubuntu 20) #9

    • Wayland backend
    • DRM backend
  • i.MX 8M Mini EVK (OS: Zeus, imx-5.4.70-2.3.1.xml)

    • Wayland backend
      DRM backend NXP doesn't support EGL for GBM.
  • RB5 (OS: Based Ubuntu 18.04)

    • DRM-GBM backend
      Wayland backend Weston version is 3.0 and it doesn't support xdg-shell

Segmentation faut with flutter-client

I tried flutter-client (wayland) with no luck.

Environment:
Board: NXP imx8mm (lpddr4)
BSP/Kernel: 5.4.70-2.3.0
Distro: fsl-imx-wayland
Flutter-engine: 1.26-rc17 compiled to aarch64 from the official repository. Config switches:--unoptimized --embedder-for-target --enable-fontconfig --full-dart-sdk --enable-skshaper--runtime-mode debug

At first I got the following error:

root@imx8mmlpddr4evk:~# flutter-client ./bundle 
embedder.cc (1933): 'FlutterEnginePostDartObject' returned 'kInvalidArguments'. Engine not running.
embedder.cc (930): 'FlutterEngineInitialize' returned 'kInvalidArguments'. Not running in AOT mode but could not resolve the kernel binary.
[ERROR][flutter_linuxes_engine.cc(221)] Failed to start Flutter engine: error 2
Failed to create view controller.

After some debugging with strace, we can see that the executable tries to load the bundle from /usr/bin:
newfstatat(AT_FDCWD, "/usr/bin/./bundle/data/flutter_assets/kernel_blob.bin", 0xffffc0d18640, 0) = -1 ENOENT (No such file or directory)

So after copying the demo app bundel in /usr/bin, I got the following error:
root@imx8mmlpddr4evk:~# flutter-client ./bundle
embedder.cc (1933): 'FlutterEnginePostDartObject' returned 'kInvalidArguments'. Engine not running.
flutter: Observatory listening on http://127.0.0.1:33095/EMMK_h2PrrA=/
[ 1633.147478] audit: type=1701 audit(1633.140:3): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=457 comm="flutter-client" exe="/usr/bin/flutter-client" sig=11 res=1
Segmentation fault

I also tried the drm-egl version with no luck:

root@imx8mmlpddr4evk:~# export FLUTTER_DRM_DEVICE=/dev/dri/card1
root@imx8mmlpddr4evk:~# flutter-drm-eglstream-backend --help
[ERROR][environment_egl_drm_eglst[  141.702444] audit: type=1701 audit(387.168:3): auid=4294967295 uid=0 gid=0 ses=4294967295 pid=384 comm="flutter-drm-egl" exe="/usr/bin/flutter-drm-eglstream-backend" sig=11 res=1
ream.cc(15)] Failed to set extension function pointers
[ERROR][context_egl.cc(31)] Failed to choose EGL surface config: eglGetError: EGL_BAD_DISPLAY
[ERROR][context_egl_drm_eglstream.cc(20)] Failed to set extension function pointers
Segmentation fault

My primary target is Wayland.

Can't run Gallery app

Can't start the Gallery app using the embedder.
There are no log messages to help narrow down why that is:

$ ./flutter-client ./gallery/build/linux/x64/release/bundle     

Observed on my x64 system as well as the PinebookPro (rk3399) and PinePhone (Allwinner A64).

Tried with drm client and debug modes as well - still no feedback from the system as to why it doesn't want to start.

Support Platform views

We need to add support Platform views support to embed native views like WebView in a Flutter app

Build failed with Weston v8.0

Trying to build flutter-desktop-shell but got error. The header file config-parser.h had been move to libweston/config-parser.h which is the main issue.

Please have a look.

Host Platform Target Plaform Documentation

I've just finished successfully building for an RPi4 with the DRM Backend. Thanks for all your hard work guys.
I did have a small head scratching hiccup during the process though. I had to perform Step 3 Build for DRM Backend on the target device (RPi4). With a libflutter_engine.so targeting arm64, this step of the build would fail on my X64 machine.
If this is expected behavior then I think it would be worth adding a note to Step 3 that the following steps must be built on the target platform (Similar to the note about compiling the Dart/Flutter code)

Switch internal compiler switch depending build type

Currently, FLUTTER_RELEASE which is the internal compiler switch to disable the command arguments for Dart VM is always enabled. We need to use this command arguments when we do debugging Flutter apps (e.g. --observatory-port=49494, --disable-service-auth-codes to fix always same observatory URI)

e.g.

$ cmake -DUSER_PROJECT_PATH=examples/flutter-x11-client -DCMAKE_BUILD_TYPE=Debug ..
$ cmake --build .
$ FLUTTER_ENGINE_SWITCHES=2 FLUTTER_ENGINE_SWITCH_1="observatory-port=12345"  FLUTTER_ENGINE_SWITCH_2="disable-service-auth-codes" \
    ./flutter-x11-clinet sample/build/linux/x64/debug/bundle

Wayland window decorations

Support window events such as window resize and window move for Wayland backend.

  • Move window
  • Close button
  • Maximise button
  • Minimise button
  • Resize window

Support multi version weston

Currently, the version we support weston is 6.0.1. So, we need to update to the latest version. However, many BSPs have not supported the latest version yet. So, we need to consider how to support multi-version. Does Weston have backwards compatibility?

Notes

Jeston Nano: weston version 6.0.1

libflutter_engine.so install location confusion

Just finished running through the instructions to get an App built for an RPi4. Although I now have the app running (via drm backend) I did have some confusion with where to put the built libflutter_engine.so file.

I could only get it to run correctly if I copied libflutter_engine.so to both the cmake build directory as well as /usr/lib on the target device. I'm not sure if this is due to a bug or intended behavior. If it is intended behavior then I feel like the documentation needs some adjustment to reflect that.
Perhaps Step 5 of BUILDING-ENGINE-EMBEDDER.md could be amended to also include installing libflutter_engine.so to /usr/lib on the target device.

It would also be worth amending step 3) of the Install Flutter Engine library section of the readme for those who download the engine from google infra.

Switch from wl_shell to xdg_shell (doesn't work on Wayland compositors other than weston)

Currently, we use wl_shell for the Wayland backend. However, this protocols deprecated and other Wayland compositors such as Sway don't support wl_shell (swaywm/sway#1692). Therefore, the embedder doesn't work on Wayland compositors other than weston.

You would get the following error message.

[ERROR][linuxes_window_wayland.cc(627)] Invalid compositor and shell.
Failed to create view controller.

Related issues

Compile Error in flutter-client in yocto-sdk

Compiling the standalone wayland client caused a compile error:

Used commands:

cmake -DUSER_PROJECT_PATH=examples/flutter-wayland-client ..
cmake --build .

Environment:
Custom Yocto SDK - Cross compilation for arm64.

Error from the build:

In file included from /home/user/flutter/flutter-embedded-linux/src/flutter/shell/platform/linux_embedded/flutter_linuxes.cc:29:
/home/user/flutter/flutter-embedded-linux/src/flutter/shell/platform/linux_embedded/window/linuxes_window_wayland.h:76:17: error: declaration of ‘wl_pointer* flutter::LinuxesWindowWayland::CursorInfo::wl_pointer’ changes meaning of ‘wl_pointer’ [-fpermissive]
   76 |     wl_pointer* wl_pointer;
      |                 ^~~~~~~~~~
In file included from /opt/yoctosdk/3.1/sysroots/aarch64-yoctosdk-linux/usr/include/wayland-client.h:40,
                 from /home/user/flutter/flutter-embedded-linux/src/flutter/shell/platform/linux_embedded/window/linuxes_window_wayland.h:8,
                 from /home/user/flutter/flutter-embedded-linux/src/flutter/shell/platform/linux_embedded/flutter_linuxes.cc:29:
/opt/yoctosdk/3.1/sysroots/aarch64-yoctosdk-linux/usr/include/wayland-client-protocol.h:78:8: note: ‘wl_pointer’ declared here as ‘struct wl_pointer’
   78 | struct wl_pointer;
      |        ^~~~~~~~~~

Workaround:
Rename wl_pointer in CursorInfo.

Create Flutter tools for embedded Linux

Currently, we need to build Flutter Engine to use this embedder ourselves. We also need to use a specific Flutter SDK to build Flutter apps. These tasks are bothered, so we will create a tool to support such as flutter build embedded-linux and flutter run -d embedded-linux, etc.

Test in various Wayland compositors

At the moment using the standalone wayland client appears to be made to work only within a Weston environment.
My attempts to use the embedder with other Wayland environments such as Plasma Wayland, wlroots based ones like Wayfire result in the following error:

[ERROR][linuxes_window_wayland.cc(627)] Invalid compositor and shell.
Failed to create view controller.

I haven't attempted to run the embedder within Cage or Phosh but I don't expect different results.

From what I can see, this is because the defined shell protocol is specific to Weston's implementation: https://github.com/sony/flutter-embedded-linux/tree/master/src/wayland/protocol

Would using a different shell implementation like xdg allow for more Wayland environments to be supported?
Or is the error given by the embedder a result from different check defined somewhere in linuxes_window_wayland.h?

From the Wayland book, I can see the section explaining on how to generate the C headers and glue code. Would experiments with other shell protocols be useful to the project?

My understanding isn't as complete as I would like it to be so I don't know if I'm just using the Wayland client incorrectly in this case.

Debug mode doesn't work on the DRM backend.

Flutter applications in debug mode don't work on the DRM backend.
The application crashes with the following log:

[FATAL:flutter/fml/memory/weak_ptr.h(122)] Check failed: (checker_.checker).IsCreationThreadCurrent(). 

Related: #15 (comment)

[README] Installing the embedder library and using different modes (debug/profile/release)

The documentation implies that libflutter_engine.so has to be installed here:

While this is the preferred method, the libraries can be loaded without placing them in /urs/lib.
The following method can be used instead:
LD_LIBRARY_PATH=<path_to_engine> ./flutter-client ./sample/build/linux/x64/debug/bundle

This could be useful when:

  • Switching quickly between debug / profile / release modes for the Flutter application without replacing libflutter_engine.so

Support EGLStream

Add EGLStream support for NVIDIA devices. Currently, this embedder doesn't work with DRM backends on NVIDIA devices such as Jetson Nano. Because NVIDIA basically doesn't support GBM. So, we need to add EGLStream support.

Support headless mode

Add headless rendering mode support. This feature is very low priority since it's not normal use cases.

Add sleep to wait for the next event in the main loop properly

Currently, there isn't any sleep to wait for the next event in the main loop properly. Therefore, it is high CPU usage.

main.cc

  // Main loop.
  while (flutter_controller->view()->DispatchEvent()) {
    flutter_controller->engine()->ProcessMessages();
  }

Support to resize on DRM backends

If the resolution of the display changes while displaying the screen with the EGLStream backend, the screen display is not updated.

DRM-GBM backend binaries load Wayland libraries?

The DRM-GBM client works on RPI4, but it will get a segmentation fault on i.mx8m devices.

# ldd ./flutter-drm-gbm-backend
        linux-vdso.so.1 (0x0000ffffb9c4e000)
        libxkbcommon.so.0 => /usr/lib/libxkbcommon.so.0 (0x0000ffffb9bd1000)
        libEGL.so.1 => /usr/lib/libEGL.so.1 (0x0000ffffb9b6c000)
        libdrm.so.2 => /usr/lib/libdrm.so.2 (0x0000ffffb9b49000)
        libgbm.so.1 => /usr/lib/libgbm.so.1 (0x0000ffffb9b35000)
        libinput.so.10 => /usr/lib/libinput.so.10 (0x0000ffffb9ae2000)
        libudev.so.1 => /lib/libudev.so.1 (0x0000ffffb9aa2000)
        libsystemd.so.0 => /lib/libsystemd.so.0 (0x0000ffffb99db000)
        libflutter_engine.so => /usr/lib/libflutter_engine.so (0x0000ffffb8f09000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0000ffffb8d2a000)
        libm.so.6 => /lib/libm.so.6 (0x0000ffffb8c80000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0000ffffb8c5b000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x0000ffffb8c2b000)
        libc.so.6 => /lib/libc.so.6 (0x0000ffffb8abe000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffffb9c20000)
        libGAL.so => /usr/lib/libGAL.so (0x0000ffffb88fb000)
        libwayland-server.so.0 => /usr/lib/libwayland-server.so.0 (0x0000ffffb88d6000)
        libwayland-client.so.0 => /usr/lib/libwayland-client.so.0 (0x0000ffffb88b7000)
        libgbm_viv.so => /usr/lib/libgbm_viv.so (0x0000ffffb88a2000)
        libmtdev.so.1 => /usr/lib/libmtdev.so.1 (0x0000ffffb888c000)
        libevdev.so.2 => /usr/lib/libevdev.so.2 (0x0000ffffb885e000)
        librt.so.1 => /lib/librt.so.1 (0x0000ffffb8846000)
        liblzma.so.5 => /usr/lib/liblzma.so.5 (0x0000ffffb8811000)
        libcap.so.2 => /lib/libcap.so.2 (0x0000ffffb87fb000)
        libdl.so.2 => /lib/libdl.so.2 (0x0000ffffb87e7000)
        libffi.so.7 => /usr/lib/libffi.so.7 (0x0000ffffb87cc000)
Thread 1 "flutter-drm-gbm" received signal SIGSEGV, Segmentation fault.
0x0000fffff6fe3eb4 in __GI___pthread_mutex_lock (mutex=0xe9) at pthread_mutex_lock.c:67
67      pthread_mutex_lock.c: No such file or directory.
(gdb) backtrace
#0  0x0000fffff6fe3eb4 in __GI___pthread_mutex_lock (mutex=0xe9) at pthread_mutex_lock.c:67
#1  0x0000fffff6c6c340 in wl_proxy_create_wrapper () from /usr/lib/libwayland-client.so.0
#2  0x0000fffff7f448e0 in ?? () from /usr/lib/libEGL.so.1
#3  0x0000fffff7f3721c in eglInitialize () from /usr/lib/libEGL.so.1
#4  0x0000000000484498 in flutter::EnvironmentEgl::InitializeEgl() const ()
#5  0x00000000004842c0 in flutter::EnvironmentEgl::EnvironmentEgl(gbm_device*) ()
#6  0x00000000004830a4 in std::_MakeUniq<flutter::EnvironmentEgl>::__single_object std::make_unique<flutter::EnvironmentEgl, gbm_device*&>(gbm_device*&) ()
#7  0x00000000004829cc in flutter::NativeWindowDrmGbm::CreateRenderSurface() ()
#8  0x00000000004157cc in flutter::LinuxesWindowDrm<flutter::NativeWindowDrmGbm, flutter::SurfaceGlDrm<flutter::ContextEgl> >::CreateRenderSurface(int, int) ()
#9  0x0000000000427b48 in flutter::FlutterLinuxesView::CreateRenderSurface() ()
#10 0x0000000000410fa4 in FlutterDesktopViewControllerCreate ()
#11 0x000000000040ff50 in flutter::FlutterViewController::FlutterViewController(flutter::FlutterViewController::ViewMode, int, int, bool, flutter::DartProject const&) ()
#12 0x000000000040bd34 in std::_MakeUniq<flutter::FlutterViewController>::__single_object std::make_unique<flutter::FlutterViewController, flutter::FlutterViewController::ViewMode, int&, int&, bool&, flutter::DartProject&>(flutter::FlutterViewController::ViewMode&&, int&, int&, bool&, flutter::DartProject&) ()
#13 0x000000000040b55c in main ()

cc: @Mai-Matsuura

Related issues

Add mouse cursor support for DRM-EGLStream backend

There are the following problems.

  • The mouse cursor is not updated when a change notification comes from the flutter.
  • NativeWindowEglstream::ShowCursor() function is not implemented, but the mouse cursor works fine (move, press, etc.).
    • Need to investigate if NativeWindowEglstream::ShowCursor() function is unnecessary.
  • Cannot dismiss cursor.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.