[Linux] show/hide emission hooks are never removed; verify clean exit
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 68/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Aktiv
- Tech-Stack
- cpp, linux
- Bereich
- desktop, operating-systems
Rechercherichtung
Start in src/platform/linux/window_manager_linux.cpp at InstallGlobalSwizzling(), comparing the show/hide hooks with the nearby focus-in/focus-out hooks. Trace where window_manager shuts down and verify the hook lifecycle there. Done means a nativeapi Flutter app exits cleanly on Linux under X11 and Wayland, including after closing a secondary window created through package:nativeapi/windowing.dart.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
InstallGlobalSwizzling() in src/platform/linux/window_manager_linux.cpp adds show / hide emission hooks on GtkWidget with g_signal_add_emission_hook(), but doesn't keep the hook ids, so they are never removed. The focus-in/focus-out hooks next to them are removed properly.
window_manager had a similar never-removed button-press-event emission hook in its Linux plugin. Users reported crashes when the app exits, or when a secondary Flutter window closes: FlutterEngineRemoveView ... The implicit view cannot be removed, followed by an epoxy/GLX assertion. The hooks here pass no user data, so they probably can't use a freed plugin pointer, but that should be confirmed:
- keep the hook ids and remove them when the manager shuts down
- check that a Flutter app with nativeapi exits cleanly on Linux (X11 and Wayland), including after a secondary window created through
package:nativeapi/windowing.dartis closed
Background:
- leanflutter/window_manager#585: crash on exit on Fedora 44 KDE X11, from just having the plugin
- leanflutter/window_manager#567: a PR that removes the emission hook on plugin dispose
- Vorherrschende Sprache
- C++
- Sterne
- 34
- Forks
- 7
- Ø Merge
- 3 T. 1 Std.
- Gemergte PRs (30 T.)
- 1
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus libnativeapi/nativeapi
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
libnativeapi/nativeapi#81 ·
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
libnativeapi/nativeapi#80 ·
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
libnativeapi/nativeapi#79 ·
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
libnativeapi/nativeapi#78 ·
-
bug
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
libnativeapi/nativeapi#77 ·
Alle Issues in libnativeapi/nativeapi
Ähnliche Issues
-
AuTest Bug Tests
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
apache/trafficserver#13714 ·
-
bug build
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
facebookincubator/velox#19143 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
tenstorrent/tt-metal#57393 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
objectionary/eo-graphs#74 ·