toyota-connected / ivi-homescreen Goto Github PK
View Code? Open in Web Editor NEWEmbedded Flutter runtime targeting Embedded Linux with Wayland
License: Other
Embedded Flutter runtime targeting Embedded Linux with Wayland
License: Other
I am playing around with multiple apps and embedders via meta-flutter at the moment.
Specifying the path of the bundle works like this with homescreen, the sony embedder and flutter-pi:
homescreen --b=/usr/share/flutter/flutter-gallery/3.16.5/release/
flutter-client -b /usr/share/flutter/flutter-gallery/3.16.5/release/
flutter-pi --release /usr/share/flutter/flutter-gallery/3.16.5/release/
When playing around with multiple test apps or new flutter versions, I often modify this path parameter by hand. The format of flutter-client and flutter-pi allows auto-completion of this path parameter, while the leading '=' of homescreen breaks autocompletion of the path in bash.
Maybe homescreen could add an alternative way of specifying the bundle path that also has a space before the path?
From my understanding, ivi-homescreen can launch the flutter aseets placed at /usr/local/share/homescreen
only.
How can I launch multiple flutter apps with ivi-homescreen?
If ivi-homescreen accepts another flutter assets path from cmdline args like flutter-wayland(https://github.com/chinmaygarde/flutter_wayland), ivi-homescreen will become more flexible.
What do you think of this idea?
Implementing Dirty Region Management resolves visual banding anomalies found with Impeller based engines.
I can build desktop ubuntu 20 just fine but when it comes to running
Copy libflutter_engine.so to /usr/local/lib or use LD_LIBRARY_PATH to point downloaded engine for build:
Question where do i get libflutter_engine.so from ?
Do I try and build a copy using https://github.com/meta-flutter/flutter_embedded
or
Can i use one of my local copies created during flutter snap install maybe the release copy
parallels > find /home/parallels/snap/flutter -type f -name "libflutter*.so" -print
/home/parallels/snap/flutter/common/flutter/bin/cache/artifacts/engine/android-x86/libflutter.so
/home/parallels/snap/flutter/common/flutter/bin/cache/artifacts/engine/android-x64/libflutter.so
/home/parallels/snap/flutter/common/flutter/bin/cache/artifacts/engine/linux-x64/libflutter_linux_gtk.so
/home/parallels/snap/flutter/common/flutter/bin/cache/artifacts/engine/linux-x64-release/libflutter_linux_gtk.so
/home/parallels/snap/flutter/common/flutter/bin/cache/artifacts/engine/linux-x64-profile/libflutter_linux_gtk.so
please advise
regards
Tracking issue for:
Hi, we have a setup where homescreen runs with a smaller dimensions than the screen.
Previously we used b18a478 (sumo branch).
There we called:
homescreen --f --w=<width> --h=<height> --a=/path/to/flutter_assets
This starts homescreen centered in the screen.
Now after switching to kirkstone with a3113ea this does not work anymore.
As soon as --f is used, its full screen, width and heigth are ignored.
As far as I can see you cannot give margins or positions for homescreen.
Without --f homescreen has the dimensions as specified with --w and --h but at a random position within the screen.
Is there any way to get it centered?
fixed in internal repo. Pending OSS release
Building with BUILD_BACKEND_DRM or BUILD_BACKEND_WAYLAND_LEASED_DRM results in the failure:
CMake Error at third_party/CMakeLists.txt:116 (add_subdirectory):
add_subdirectory given source "libliftoff-0.6.0-dev" which is not an
existing directory.
It seems like libliftoff was not included as a submodule in the third_party directory
Added to internal repo. Pending OSS release
Only a single instance of Video Player is currently supported. The static plugin needs to be refactored to handle multiple views.
Currently a low priority.
Firs of all this is not an issue. I am not able to find steps to run release version of flutter apps.
With this patch I was able to run debug version of the the apps with ivi-homescreen.
diff --git a/shell/engine.cc b/shell/engine.cc
index 5eb4205..7c979f1 100644
--- a/shell/engine.cc
+++ b/shell/engine.cc
@@ -87,7 +87,7 @@ Engine::Engine(App* app, size_t index)
}),
m_renderer_config(
{.type = kOpenGL,
- .open_gl = {
+ .open_gl = FlutterOpenGLRendererConfig {
.struct_size = sizeof(FlutterOpenGLRendererConfig),
.make_current = [](void* userdata) -> bool {
auto e = reinterpret_cast<Engine*>(userdata);
Above fix is probably only required for g++ & not clang++.
$ g++ --version
g++ (Ubuntu 11.2.0-7ubuntu2) 11.2.0
However when I attempt to run release bundle I see an error about missing flutter_assets/kernel_blob.bin
[INFO:display.cc(67)] No agl_shell extension present
[INFO:display.cc(71)] WL_SHM_FORMAT_XRGB32 not available
[INFO:display.cc(257)] Pointer Present
[INFO:display.cc(266)] Keyboard Present
[ERROR:/home/skamath/proactive/flutter/ivi-homescreen/shell/engine.cc(142)] (0) /usr/local/share/homescreen/bundle/flutter_assets/kernel_blob.bin missing Flutter Kernel
@jwinarske
I tried to run my app to check the ivi-homescreen's features related to input envents, but, my app have not worked correctly.
It seems ivi-homescreen cannot accept any keyboard events at least.
The behavior of my app is the following.
[A_KeyDown][A_Repeat][A_KeyUp]
will be output in the low half of the window.When I use the official linux-desktop device, the app worked correctly, but, when I use ivi-homescreen for Desktop, even if I press any keys, the app has no reaction for any keys.
Please see the video.
How can I use keyboard inputs in ivi-homescreen? OR, keyboard inputs is the missing feature of ivi-homescreen?
SIDE NOTES:
ivi-homescreen causes core-dump when it is interrupted by Ctrl-C.
$ ~/homescreen --a=build/flutter_assets
[INFO:display.cc(50)] agl_shell extension not present
[INFO:display.cc(280)] Pointer Present
[INFO:display.cc(289)] Keyboard Present
[INFO:engine.cc(200)] Runtime=debug
[INFO:engine.cc(91)] flutter: The Dart VM service is listening on http://127.0.0.1:42187/ufLHlW6rddA=/
[INFO:navigation.cc(33)] Navigation: Select Single Entry History
[INFO:navigation.cc(47)] Navigation: Route Information Updated
location: /
state:
replace: 0
dddddddddddddddaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbb^C[FATAL:flutter/fml/thread_local.cc(30)] Check failed: false. pthread_setspecific failed (22): Invalid argument
[1] 28678 abort (core dumped) ~/homescreen --a=build/flutter_assets
On my ubuntu 20.04, wayland+weston+ivi-homescreen running the default flutter create "increment" button app with debug engine v2.10.3 arm64, I'm finding that the app often crashes when using mouse input because this assertion check fails.
[FATAL:flutter/lib/ui/window/pointer_data_packet_converter.cc(189)] Check failed: !state.is_down.
https://github.com/flutter/engine/blob/main/lib/ui/window/pointer_data_packet_converter.cc#L190
I believe this is a manifestation of a bug in translating wayland input events to flutter, specifically within Display::pointer_handle_motion()
https://github.com/toyota-connected/ivi-homescreen/blob/main/shell/display.cc#L399
Which calls getPointerPhase(), and in some instances the state can be such that p->buttons is not null and state == WL_POINTER_BUTTON_STATE_RELEASED which ends up translating the event to FlutterPointerPhase::kUp.
https://github.com/toyota-connected/ivi-homescreen/blob/main/shell/display.cc#L337
However, if no kDown event is sent between this kUp event and some previous kUp event (say from releasing the mouse button) then the debug assert fails and the app crashes with the FATAL warning above.
Based on what I've gathered from reading the comments in embedder.h
https://github.com/flutter/engine/blob/main/shell/platform/embedder/embedder.h#L727-L743
I propose that the wayland input event listener Display::pointer_handle_motion() should only translate to FlutterPointerPhase::kMove or FlutterPointerPhase::kHover depending on whether the left mouse button is currently pressed down or not during the motion event. PR that implements this change coming shortly.
Hey,
I just stumbled upon an embedder API bug with vulkan, that's fixed already but still present in flutter stable:
Issue: flutter/flutter#118956
PR: flutter/engine#39051
Problematic code: https://github.com/flutter/engine/blob/3.7.10/shell/platform/embedder/embedder.cc#L560-L561
I had to add a workaround to flutter-pi to make vulkan work again: ardera/flutter-pi@90faaf0
Just thought I'd bring this up to you, not sure you're already aware of it. I didn't see a workaround in your code at least. ๐
Fixed in internal repo. Pending OSS release
After building flutter application as guide, I can't find libflutter_engine.so
$ find build
build
build/flutter_assets
build/flutter_assets/NOTICES.Z
build/flutter_assets/shaders
build/flutter_assets/shaders/ink_sparkle.frag
build/flutter_assets/isolate_snapshot_data
build/flutter_assets/AssetManifest.bin
build/flutter_assets/.last_build_id
build/flutter_assets/AssetManifest.json
build/flutter_assets/kernel_blob.bin
build/flutter_assets/fonts
build/flutter_assets/fonts/MaterialIcons-Regular.otf
build/flutter_assets/packages
build/flutter_assets/packages/cupertino_icons
build/flutter_assets/packages/cupertino_icons/assets
build/flutter_assets/packages/cupertino_icons/assets/CupertinoIcons.ttf
build/flutter_assets/vm_snapshot_data
build/flutter_assets/FontManifest.json
build/snapshot_blob.bin.d
That might be out of scope you can guide, I would appreciate it if you could kindly guide me.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.