mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Support view allocation counters with Venice
Summary: Venice uses `SurfaceHandler` abstraction which start/stops surfaces independently from `Binding.cpp`, so previous `onSurfaceStart/Stop` callback would not be triggered. On Android, each surface is used exactly once at the time of writing, so we can use `register/unregister` callbacks to create/clear remembered views for the surface. Changelog: [Internal] Reviewed By: sammy-SC Differential Revision: D33845685 fbshipit-source-id: 8de4204c7498176fdbe8d44fbc5f2e4079212a1c
This commit is contained in:
committed by
Facebook GitHub Bot
parent
fbb9d33cee
commit
65df2f30a5
@@ -266,13 +266,37 @@ void Binding::stopSurface(jint surfaceId) {
|
||||
}
|
||||
|
||||
void Binding::registerSurface(SurfaceHandlerBinding *surfaceHandlerBinding) {
|
||||
auto const &surfaceHandler = surfaceHandlerBinding->getSurfaceHandler();
|
||||
auto scheduler = getScheduler();
|
||||
scheduler->registerSurface(surfaceHandlerBinding->getSurfaceHandler());
|
||||
if (!scheduler) {
|
||||
LOG(ERROR) << "Binding::registerSurface: scheduler disappeared";
|
||||
return;
|
||||
}
|
||||
scheduler->registerSurface(surfaceHandler);
|
||||
|
||||
auto mountingManager =
|
||||
verifyMountingManager("FabricUIManagerBinding::registerSurface");
|
||||
if (!mountingManager) {
|
||||
return;
|
||||
}
|
||||
mountingManager->onSurfaceStart(surfaceHandler.getSurfaceId());
|
||||
}
|
||||
|
||||
void Binding::unregisterSurface(SurfaceHandlerBinding *surfaceHandlerBinding) {
|
||||
auto const &surfaceHandler = surfaceHandlerBinding->getSurfaceHandler();
|
||||
auto scheduler = getScheduler();
|
||||
scheduler->unregisterSurface(surfaceHandlerBinding->getSurfaceHandler());
|
||||
if (!scheduler) {
|
||||
LOG(ERROR) << "Binding::unregisterSurface: scheduler disappeared";
|
||||
return;
|
||||
}
|
||||
scheduler->unregisterSurface(surfaceHandler);
|
||||
|
||||
auto mountingManager =
|
||||
verifyMountingManager("FabricUIManagerBinding::unregisterSurface");
|
||||
if (!mountingManager) {
|
||||
return;
|
||||
}
|
||||
mountingManager->onSurfaceStop(surfaceHandler.getSurfaceId());
|
||||
}
|
||||
|
||||
void Binding::setConstraints(
|
||||
|
||||
Reference in New Issue
Block a user