mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fix race condition in SurfaceHandler (#37088)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/37088 changelog: [internal] This is a race condition. parameters need to be copied out, otherwise they might be changed during read. Reviewed By: luluwu2032 Differential Revision: D45272086 fbshipit-source-id: 9043762dfaaf61d08e187c0d83f743e991a94ed1
This commit is contained in:
committed by
Facebook GitHub Bot
parent
ec1ab73674
commit
6c385c6433
@@ -112,6 +112,7 @@ void SurfaceHandler::stop() const noexcept {
|
||||
}
|
||||
|
||||
void SurfaceHandler::setDisplayMode(DisplayMode displayMode) const noexcept {
|
||||
auto parameters = Parameters{};
|
||||
{
|
||||
std::unique_lock lock(parametersMutex_);
|
||||
if (parameters_.displayMode == displayMode) {
|
||||
@@ -119,6 +120,7 @@ void SurfaceHandler::setDisplayMode(DisplayMode displayMode) const noexcept {
|
||||
}
|
||||
|
||||
parameters_.displayMode = displayMode;
|
||||
parameters = parameters_;
|
||||
}
|
||||
|
||||
{
|
||||
@@ -129,10 +131,10 @@ void SurfaceHandler::setDisplayMode(DisplayMode displayMode) const noexcept {
|
||||
}
|
||||
|
||||
link_.uiManager->setSurfaceProps(
|
||||
parameters_.surfaceId,
|
||||
parameters_.moduleName,
|
||||
parameters_.props,
|
||||
parameters_.displayMode);
|
||||
parameters.surfaceId,
|
||||
parameters.moduleName,
|
||||
parameters.props,
|
||||
parameters.displayMode);
|
||||
|
||||
applyDisplayMode(displayMode);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user