Skip to content

Commit 69951cc

Browse files
zeyapfacebook-github-bot
authored andcommitted
[skip ci] synchronouslyUpdateViewOnUIThread on UIManager
Summary: ## Changelog: [Android] [Added] - Allow invoking `synchronouslyUpdateViewOnUIThread` from c++ via `UIManager` Differential Revision: D71648772
1 parent 0f4e939 commit 69951cc

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,4 +690,19 @@ void UIManager::animationTick() const {
690690
}
691691
}
692692

693+
void UIManager::synchronouslyUpdateViewOnUIThread(
694+
Tag tag,
695+
const folly::dynamic& props) {
696+
std::shared_lock lock(synchronousViewUpdateCallbackMutex_);
697+
if (synchronousViewUpdateCallback_) {
698+
synchronousViewUpdateCallback_(tag, props);
699+
}
700+
}
701+
702+
void UIManager::setSynchronousViewUpdateCallback(
703+
SynchronousViewUpdateCallback&& callback) {
704+
std::unique_lock lock(synchronousViewUpdateCallbackMutex_);
705+
synchronousViewUpdateCallback_ = std::move(callback);
706+
}
707+
693708
} // namespace facebook::react

packages/react-native/ReactCommon/react/renderer/uimanager/UIManager.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,14 @@ class UIManager final : public ShadowTreeDelegate {
204204
void updateShadowTree(
205205
const std::unordered_map<Tag, folly::dynamic>& tagToProps);
206206

207+
using SynchronousViewUpdateCallback =
208+
std::function<void(Tag, const folly::dynamic&)>;
209+
210+
void synchronouslyUpdateViewOnUIThread(Tag tag, const folly::dynamic& props);
211+
212+
void setSynchronousViewUpdateCallback(
213+
SynchronousViewUpdateCallback&& callback);
214+
207215
private:
208216
friend class UIManagerBinding;
209217
friend class Scheduler;
@@ -242,6 +250,9 @@ class UIManager final : public ShadowTreeDelegate {
242250
lazyShadowTreeRevisionConsistencyManager_;
243251
std::unique_ptr<LatestShadowTreeRevisionProvider>
244252
latestShadowTreeRevisionProvider_;
253+
254+
std::shared_mutex synchronousViewUpdateCallbackMutex_;
255+
SynchronousViewUpdateCallback synchronousViewUpdateCallback_{nullptr};
245256
};
246257

247258
} // namespace facebook::react

0 commit comments

Comments
 (0)