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:
Valentin Shergin
2019-10-15 16:15:11 -07:00
committed by Facebook Github Bot
parent 01143859ff
commit dec80fe486
3 changed files with 25 additions and 32 deletions
@@ -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;
}
}
+1 -1
View File
@@ -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;