@@ -44,7 +44,6 @@ @implementation ASImageNode
4444 UIImage *_image;
4545
4646 void (^_displayCompletionBlock)(BOOL canceled);
47- ASDN::RecursiveMutex _imageLock;
4847
4948 // Drawing
5049 ASImageNodeDrawParameters _drawParameter;
@@ -119,7 +118,7 @@ - (void)dealloc
119118
120119- (CGSize)calculateSizeThatFits : (CGSize)constrainedSize
121120{
122- ASDN::MutexLocker l (_imageLock );
121+ ASDN::MutexLocker l (_propertyLock );
123122 // if a preferredFrameSize is set, call the superclass to return that instead of using the image size.
124123 if (CGSizeEqualToSize (self.preferredFrameSize , CGSizeZero) == NO )
125124 return [super calculateSizeThatFits: constrainedSize];
@@ -133,11 +132,9 @@ - (CGSize)calculateSizeThatFits:(CGSize)constrainedSize
133132
134133- (void )setImage : (UIImage *)image
135134{
136- _imageLock. lock ( );
135+ ASDN::MutexLocker l (_propertyLock );
137136 if (!ASObjectIsEqual (_image, image)) {
138137 _image = image;
139-
140- _imageLock.unlock ();
141138
142139 [self invalidateCalculatedLayout ];
143140 if (image) {
@@ -153,14 +150,12 @@ - (void)setImage:(UIImage *)image
153150 } else {
154151 self.contents = nil ;
155152 }
156- } else {
157- _imageLock.unlock (); // We avoid using MutexUnlocker as it needlessly re-locks at the end of the scope.
158153 }
159154}
160155
161156- (UIImage *)image
162157{
163- ASDN::MutexLocker l (_imageLock );
158+ ASDN::MutexLocker l (_propertyLock );
164159 return _image;
165160}
166161
@@ -176,7 +171,7 @@ - (void)setPlaceholderColor:(UIColor *)placeholderColor
176171
177172- (NSObject *)drawParametersForAsyncLayer : (_ASDisplayLayer *)layer
178173{
179- ASDN::MutexLocker l (_imageLock );
174+ ASDN::MutexLocker l (_propertyLock );
180175
181176 _drawParameter = {
182177 .bounds = self.bounds ,
@@ -221,7 +216,7 @@ - (UIImage *)displayWithParameters:(id<NSObject> *)parameter isCancelled:(asdisp
221216 asimagenode_modification_block_t imageModificationBlock;
222217
223218 {
224- ASDN::MutexLocker l (_imageLock );
219+ ASDN::MutexLocker l (_propertyLock );
225220 ASImageNodeDrawParameters drawParameter = _drawParameter;
226221
227222 drawParameterBounds = drawParameter.bounds ;
@@ -356,19 +351,19 @@ - (void)displayDidFinish
356351{
357352 [super displayDidFinish ];
358353
359- _imageLock .lock ();
354+ _propertyLock .lock ();
360355 void (^displayCompletionBlock)(BOOL canceled) = _displayCompletionBlock;
361356 UIImage *image = _image;
362- _imageLock .unlock ();
357+ _propertyLock .unlock ();
363358
364359 // If we've got a block to perform after displaying, do it.
365360 if (image && displayCompletionBlock) {
366361
367362 displayCompletionBlock (NO );
368363
369- _imageLock .lock ();
364+ _propertyLock .lock ();
370365 _displayCompletionBlock = nil ;
371- _imageLock .unlock ();
366+ _propertyLock .unlock ();
372367 }
373368}
374369
@@ -381,7 +376,7 @@ - (void)setNeedsDisplayWithCompletion:(void (^ _Nullable)(BOOL canceled))display
381376 }
382377
383378 // Stash the block and call-site queue. We'll invoke it in -displayDidFinish.
384- ASDN::MutexLocker l (_imageLock );
379+ ASDN::MutexLocker l (_propertyLock );
385380 if (_displayCompletionBlock != displayCompletionBlock) {
386381 _displayCompletionBlock = [displayCompletionBlock copy ];
387382 }
@@ -393,7 +388,7 @@ - (void)setNeedsDisplayWithCompletion:(void (^ _Nullable)(BOOL canceled))display
393388
394389- (BOOL )isCropEnabled
395390{
396- ASDN::MutexLocker l (_imageLock );
391+ ASDN::MutexLocker l (_propertyLock );
397392 return _cropEnabled;
398393}
399394
@@ -404,7 +399,7 @@ - (void)setCropEnabled:(BOOL)cropEnabled
404399
405400- (void )setCropEnabled : (BOOL )cropEnabled recropImmediately : (BOOL )recropImmediately inBounds : (CGRect)cropBounds
406401{
407- ASDN::MutexLocker l (_imageLock );
402+ ASDN::MutexLocker l (_propertyLock );
408403 if (_cropEnabled == cropEnabled)
409404 return ;
410405
@@ -425,13 +420,13 @@ - (void)setCropEnabled:(BOOL)cropEnabled recropImmediately:(BOOL)recropImmediate
425420
426421- (CGRect)cropRect
427422{
428- ASDN::MutexLocker l (_imageLock );
423+ ASDN::MutexLocker l (_propertyLock );
429424 return _cropRect;
430425}
431426
432427- (void )setCropRect : (CGRect)cropRect
433428{
434- ASDN::MutexLocker l (_imageLock );
429+ ASDN::MutexLocker l (_propertyLock );
435430 if (CGRectEqualToRect (_cropRect, cropRect))
436431 return ;
437432
@@ -452,25 +447,25 @@ - (void)setCropRect:(CGRect)cropRect
452447
453448- (BOOL )forceUpscaling
454449{
455- ASDN::MutexLocker l (_imageLock );
450+ ASDN::MutexLocker l (_propertyLock );
456451 return _forceUpscaling;
457452}
458453
459454- (void )setForceUpscaling : (BOOL )forceUpscaling
460455{
461- ASDN::MutexLocker l (_imageLock );
456+ ASDN::MutexLocker l (_propertyLock );
462457 _forceUpscaling = forceUpscaling;
463458}
464459
465460- (asimagenode_modification_block_t )imageModificationBlock
466461{
467- ASDN::MutexLocker l (_imageLock );
462+ ASDN::MutexLocker l (_propertyLock );
468463 return _imageModificationBlock;
469464}
470465
471466- (void )setImageModificationBlock : (asimagenode_modification_block_t )imageModificationBlock
472467{
473- ASDN::MutexLocker l (_imageLock );
468+ ASDN::MutexLocker l (_propertyLock );
474469 _imageModificationBlock = imageModificationBlock;
475470}
476471
0 commit comments