Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: [windows] Fix TextureRender crash #1999

Merged
merged 7 commits into from
Sep 6, 2024
Merged

Conversation

littleGnAl
Copy link
Contributor

@littleGnAl littleGnAl commented Sep 6, 2024

We can't delete the TextureRender in the VideoViewController::DestroyTextureRender, because the flutter::TextureRegistrar::UnregisterTexture is called in the Flutter rasterizer thread, it's not thread-safe.

We change the VideoViewController::renderers_ to std::map<int64_t, TextureRender *>, which holds the raw pointer TextureRender *, and delete the TextureRender in the flutter::TextureRegistrar::UnregisterTexture callback which introduces from Flutter SDK 3.7.0.

@littleGnAl
Copy link
Contributor Author

littleGnAl commented Sep 6, 2024

Need this PR #2001

We need this
change(flutter/engine@90815e5),
which was released in Flutter SDK 3.7.0 to fix a crash on
Windows(#1999)

This PR is preparing for the fix.
littleGnAl added a commit that referenced this pull request Sep 6, 2024
We need this
change(flutter/engine@90815e5),
which was released in Flutter SDK 3.7.0 to fix a crash on
Windows(#1999)

This PR is preparing for the fix.
@littleGnAl littleGnAl merged commit 0edbfe5 into main Sep 6, 2024
35 checks passed
@littleGnAl littleGnAl deleted the littlegnal/fix-windows-crash branch September 6, 2024 08:32
littleGnAl added a commit that referenced this pull request Sep 6, 2024
We need this
change(flutter/engine@90815e5),
which was released in Flutter SDK 3.7.0 to fix a crash on
Windows(#1999)

This PR is preparing for the fix.
littleGnAl added a commit that referenced this pull request Sep 6, 2024
We can't delete the `TextureRender` in the
`VideoViewController::DestroyTextureRender`, because the
`flutter::TextureRegistrar::UnregisterTexture` is called in the Flutter
rasterizer thread, it's not thread-safe.

We change the `VideoViewController::renderers_` to `std::map<int64_t,
TextureRender *>`, which holds the raw pointer `TextureRender *`, and
delete the `TextureRender ` in the
`flutter::TextureRegistrar::UnregisterTexture` callback which introduces
from Flutter SDK 3.7.0.
littleGnAl added a commit that referenced this pull request Sep 13, 2024
We need this
change(flutter/engine@90815e5),
which was released in Flutter SDK 3.7.0 to fix a crash on
Windows(#1999)

This PR is preparing for the fix.
littleGnAl added a commit that referenced this pull request Sep 13, 2024
We can't delete the `TextureRender` in the
`VideoViewController::DestroyTextureRender`, because the
`flutter::TextureRegistrar::UnregisterTexture` is called in the Flutter
rasterizer thread, it's not thread-safe.

We change the `VideoViewController::renderers_` to `std::map<int64_t,
TextureRender *>`, which holds the raw pointer `TextureRender *`, and
delete the `TextureRender ` in the
`flutter::TextureRegistrar::UnregisterTexture` callback which introduces
from Flutter SDK 3.7.0.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant