mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Fabric: Simplifying allocation/storing of RCTImageResponseObserverProxy
Summary: We don't need to have it as `std::unique_ptr`, we can simply store it by value. Reviewed By: sammy-SC Differential Revision: D17923551 fbshipit-source-id: e8222834a8dd8f84826e4e89067610cd0a7cac73
This commit is contained in:
committed by
Facebook Github Bot
parent
01143859ff
commit
dec80fe486
@@ -25,7 +25,7 @@
|
||||
UIImageView *_imageView;
|
||||
SharedImageLocalData _imageLocalData;
|
||||
ImageResponseObserverCoordinator const *_coordinator;
|
||||
std::unique_ptr<RCTImageResponseObserverProxy> _imageResponseObserverProxy;
|
||||
RCTImageResponseObserverProxy _imageResponseObserverProxy;
|
||||
}
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
@@ -36,10 +36,9 @@
|
||||
|
||||
_imageView = [[UIImageView alloc] initWithFrame:self.bounds];
|
||||
_imageView.clipsToBounds = YES;
|
||||
|
||||
_imageView.contentMode = (UIViewContentMode)RCTResizeModeFromImageResizeMode(defaultProps->resizeMode);
|
||||
|
||||
_imageResponseObserverProxy = std::make_unique<RCTImageResponseObserverProxy>(self);
|
||||
_imageResponseObserverProxy = RCTImageResponseObserverProxy(self);
|
||||
|
||||
self.contentView = _imageView;
|
||||
}
|
||||
@@ -107,11 +106,11 @@
|
||||
- (void)setCoordinator:(ImageResponseObserverCoordinator const *)coordinator
|
||||
{
|
||||
if (_coordinator) {
|
||||
_coordinator->removeObserver(*_imageResponseObserverProxy);
|
||||
_coordinator->removeObserver(_imageResponseObserverProxy);
|
||||
}
|
||||
_coordinator = coordinator;
|
||||
if (_coordinator != nullptr) {
|
||||
_coordinator->addObserver(*_imageResponseObserverProxy);
|
||||
_coordinator->addObserver(_imageResponseObserverProxy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +125,6 @@
|
||||
- (void)dealloc
|
||||
{
|
||||
self.coordinator = nullptr;
|
||||
_imageResponseObserverProxy.reset();
|
||||
}
|
||||
|
||||
#pragma mark - RCTImageResponseDelegate
|
||||
|
||||
@@ -34,10 +34,10 @@ using namespace facebook::react;
|
||||
const ImageResponseObserverCoordinator *_maximumTrackImageCoordinator;
|
||||
const ImageResponseObserverCoordinator *_thumbImageCoordinator;
|
||||
|
||||
std::unique_ptr<RCTImageResponseObserverProxy> _trackImageResponseObserverProxy;
|
||||
std::unique_ptr<RCTImageResponseObserverProxy> _minimumTrackImageResponseObserverProxy;
|
||||
std::unique_ptr<RCTImageResponseObserverProxy> _maximumTrackImageResponseObserverProxy;
|
||||
std::unique_ptr<RCTImageResponseObserverProxy> _thumbImageResponseObserverProxy;
|
||||
RCTImageResponseObserverProxy _trackImageResponseObserverProxy;
|
||||
RCTImageResponseObserverProxy _minimumTrackImageResponseObserverProxy;
|
||||
RCTImageResponseObserverProxy _maximumTrackImageResponseObserverProxy;
|
||||
RCTImageResponseObserverProxy _thumbImageResponseObserverProxy;
|
||||
}
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
@@ -55,10 +55,10 @@ using namespace facebook::react;
|
||||
|
||||
_sliderView.value = defaultProps->value;
|
||||
|
||||
_trackImageResponseObserverProxy = std::make_unique<RCTImageResponseObserverProxy>(self);
|
||||
_minimumTrackImageResponseObserverProxy = std::make_unique<RCTImageResponseObserverProxy>(self);
|
||||
_maximumTrackImageResponseObserverProxy = std::make_unique<RCTImageResponseObserverProxy>(self);
|
||||
_thumbImageResponseObserverProxy = std::make_unique<RCTImageResponseObserverProxy>(self);
|
||||
_trackImageResponseObserverProxy = RCTImageResponseObserverProxy(self);
|
||||
_minimumTrackImageResponseObserverProxy = RCTImageResponseObserverProxy(self);
|
||||
_maximumTrackImageResponseObserverProxy = RCTImageResponseObserverProxy(self);
|
||||
_thumbImageResponseObserverProxy = RCTImageResponseObserverProxy(self);
|
||||
|
||||
self.contentView = _sliderView;
|
||||
}
|
||||
@@ -97,11 +97,6 @@ using namespace facebook::react;
|
||||
self.minimumTrackImageCoordinator = nullptr;
|
||||
self.maximumTrackImageCoordinator = nullptr;
|
||||
self.thumbImageCoordinator = nullptr;
|
||||
|
||||
_trackImageResponseObserverProxy.reset();
|
||||
_minimumTrackImageResponseObserverProxy.reset();
|
||||
_maximumTrackImageResponseObserverProxy.reset();
|
||||
_thumbImageResponseObserverProxy.reset();
|
||||
}
|
||||
|
||||
#pragma mark - RCTComponentViewProtocol
|
||||
@@ -181,44 +176,44 @@ using namespace facebook::react;
|
||||
- (void)setTrackImageCoordinator:(const ImageResponseObserverCoordinator *)coordinator
|
||||
{
|
||||
if (_trackImageCoordinator) {
|
||||
_trackImageCoordinator->removeObserver(*_trackImageResponseObserverProxy);
|
||||
_trackImageCoordinator->removeObserver(_trackImageResponseObserverProxy);
|
||||
}
|
||||
_trackImageCoordinator = coordinator;
|
||||
if (_trackImageCoordinator) {
|
||||
_trackImageCoordinator->addObserver(*_trackImageResponseObserverProxy);
|
||||
_trackImageCoordinator->addObserver(_trackImageResponseObserverProxy);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setMinimumTrackImageCoordinator:(const ImageResponseObserverCoordinator *)coordinator
|
||||
{
|
||||
if (_minimumTrackImageCoordinator) {
|
||||
_minimumTrackImageCoordinator->removeObserver(*_minimumTrackImageResponseObserverProxy);
|
||||
_minimumTrackImageCoordinator->removeObserver(_minimumTrackImageResponseObserverProxy);
|
||||
}
|
||||
_minimumTrackImageCoordinator = coordinator;
|
||||
if (_minimumTrackImageCoordinator) {
|
||||
_minimumTrackImageCoordinator->addObserver(*_minimumTrackImageResponseObserverProxy);
|
||||
_minimumTrackImageCoordinator->addObserver(_minimumTrackImageResponseObserverProxy);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setMaximumTrackImageCoordinator:(const ImageResponseObserverCoordinator *)coordinator
|
||||
{
|
||||
if (_maximumTrackImageCoordinator) {
|
||||
_maximumTrackImageCoordinator->removeObserver(*_maximumTrackImageResponseObserverProxy);
|
||||
_maximumTrackImageCoordinator->removeObserver(_maximumTrackImageResponseObserverProxy);
|
||||
}
|
||||
_maximumTrackImageCoordinator = coordinator;
|
||||
if (_maximumTrackImageCoordinator) {
|
||||
_maximumTrackImageCoordinator->addObserver(*_maximumTrackImageResponseObserverProxy);
|
||||
_maximumTrackImageCoordinator->addObserver(_maximumTrackImageResponseObserverProxy);
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setThumbImageCoordinator:(const ImageResponseObserverCoordinator *)coordinator
|
||||
{
|
||||
if (_thumbImageCoordinator) {
|
||||
_thumbImageCoordinator->removeObserver(*_thumbImageResponseObserverProxy);
|
||||
_thumbImageCoordinator->removeObserver(_thumbImageResponseObserverProxy);
|
||||
}
|
||||
_thumbImageCoordinator = coordinator;
|
||||
if (_thumbImageCoordinator) {
|
||||
_thumbImageCoordinator->addObserver(*_thumbImageResponseObserverProxy);
|
||||
_thumbImageCoordinator->addObserver(_thumbImageResponseObserverProxy);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -318,13 +313,13 @@ using namespace facebook::react;
|
||||
|
||||
- (void)didReceiveImage:(UIImage *)image fromObserver:(void const *)observer
|
||||
{
|
||||
if (observer == _trackImageResponseObserverProxy.get()) {
|
||||
if (observer == &_trackImageResponseObserverProxy) {
|
||||
self.trackImage = image;
|
||||
} else if (observer == _minimumTrackImageResponseObserverProxy.get()) {
|
||||
} else if (observer == &_minimumTrackImageResponseObserverProxy) {
|
||||
self.minimumTrackImage = image;
|
||||
} else if (observer == _maximumTrackImageResponseObserverProxy.get()) {
|
||||
} else if (observer == &_maximumTrackImageResponseObserverProxy) {
|
||||
self.maximumTrackImage = image;
|
||||
} else if (observer == _thumbImageResponseObserverProxy.get()) {
|
||||
} else if (observer == &_thumbImageResponseObserverProxy) {
|
||||
self.thumbImage = image;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace react {
|
||||
|
||||
class RCTImageResponseObserverProxy final : public ImageResponseObserver {
|
||||
public:
|
||||
RCTImageResponseObserverProxy(id<RCTImageResponseDelegate> delegate);
|
||||
RCTImageResponseObserverProxy(id<RCTImageResponseDelegate> delegate = nil);
|
||||
|
||||
void didReceiveImage(ImageResponse const &imageResponse) const override;
|
||||
void didReceiveProgress(float progress) const override;
|
||||
|
||||
Reference in New Issue
Block a user