@@ -44,7 +44,6 @@ @implementation ASImageNode
44
44
UIImage *_image;
45
45
46
46
void (^_displayCompletionBlock)(BOOL canceled);
47
- ASDN::RecursiveMutex _imageLock;
48
47
49
48
// Drawing
50
49
ASImageNodeDrawParameters _drawParameter;
@@ -119,7 +118,7 @@ - (void)dealloc
119
118
120
119
- (CGSize)calculateSizeThatFits : (CGSize)constrainedSize
121
120
{
122
- ASDN::MutexLocker l (_imageLock );
121
+ ASDN::MutexLocker l (_propertyLock );
123
122
// if a preferredFrameSize is set, call the superclass to return that instead of using the image size.
124
123
if (CGSizeEqualToSize (self.preferredFrameSize , CGSizeZero) == NO )
125
124
return [super calculateSizeThatFits: constrainedSize];
@@ -133,11 +132,9 @@ - (CGSize)calculateSizeThatFits:(CGSize)constrainedSize
133
132
134
133
- (void )setImage : (UIImage *)image
135
134
{
136
- _imageLock. lock ( );
135
+ ASDN::MutexLocker l (_propertyLock );
137
136
if (!ASObjectIsEqual (_image, image)) {
138
137
_image = image;
139
-
140
- _imageLock.unlock ();
141
138
142
139
[self invalidateCalculatedLayout ];
143
140
if (image) {
@@ -153,14 +150,12 @@ - (void)setImage:(UIImage *)image
153
150
} else {
154
151
self.contents = nil ;
155
152
}
156
- } else {
157
- _imageLock.unlock (); // We avoid using MutexUnlocker as it needlessly re-locks at the end of the scope.
158
153
}
159
154
}
160
155
161
156
- (UIImage *)image
162
157
{
163
- ASDN::MutexLocker l (_imageLock );
158
+ ASDN::MutexLocker l (_propertyLock );
164
159
return _image;
165
160
}
166
161
@@ -176,7 +171,7 @@ - (void)setPlaceholderColor:(UIColor *)placeholderColor
176
171
177
172
- (NSObject *)drawParametersForAsyncLayer : (_ASDisplayLayer *)layer
178
173
{
179
- ASDN::MutexLocker l (_imageLock );
174
+ ASDN::MutexLocker l (_propertyLock );
180
175
181
176
_drawParameter = {
182
177
.bounds = self.bounds ,
@@ -221,7 +216,7 @@ - (UIImage *)displayWithParameters:(id<NSObject> *)parameter isCancelled:(asdisp
221
216
asimagenode_modification_block_t imageModificationBlock;
222
217
223
218
{
224
- ASDN::MutexLocker l (_imageLock );
219
+ ASDN::MutexLocker l (_propertyLock );
225
220
ASImageNodeDrawParameters drawParameter = _drawParameter;
226
221
227
222
drawParameterBounds = drawParameter.bounds ;
@@ -356,19 +351,19 @@ - (void)displayDidFinish
356
351
{
357
352
[super displayDidFinish ];
358
353
359
- _imageLock .lock ();
354
+ _propertyLock .lock ();
360
355
void (^displayCompletionBlock)(BOOL canceled) = _displayCompletionBlock;
361
356
UIImage *image = _image;
362
- _imageLock .unlock ();
357
+ _propertyLock .unlock ();
363
358
364
359
// If we've got a block to perform after displaying, do it.
365
360
if (image && displayCompletionBlock) {
366
361
367
362
displayCompletionBlock (NO );
368
363
369
- _imageLock .lock ();
364
+ _propertyLock .lock ();
370
365
_displayCompletionBlock = nil ;
371
- _imageLock .unlock ();
366
+ _propertyLock .unlock ();
372
367
}
373
368
}
374
369
@@ -381,7 +376,7 @@ - (void)setNeedsDisplayWithCompletion:(void (^ _Nullable)(BOOL canceled))display
381
376
}
382
377
383
378
// Stash the block and call-site queue. We'll invoke it in -displayDidFinish.
384
- ASDN::MutexLocker l (_imageLock );
379
+ ASDN::MutexLocker l (_propertyLock );
385
380
if (_displayCompletionBlock != displayCompletionBlock) {
386
381
_displayCompletionBlock = [displayCompletionBlock copy ];
387
382
}
@@ -393,7 +388,7 @@ - (void)setNeedsDisplayWithCompletion:(void (^ _Nullable)(BOOL canceled))display
393
388
394
389
- (BOOL )isCropEnabled
395
390
{
396
- ASDN::MutexLocker l (_imageLock );
391
+ ASDN::MutexLocker l (_propertyLock );
397
392
return _cropEnabled;
398
393
}
399
394
@@ -404,7 +399,7 @@ - (void)setCropEnabled:(BOOL)cropEnabled
404
399
405
400
- (void )setCropEnabled : (BOOL )cropEnabled recropImmediately : (BOOL )recropImmediately inBounds : (CGRect)cropBounds
406
401
{
407
- ASDN::MutexLocker l (_imageLock );
402
+ ASDN::MutexLocker l (_propertyLock );
408
403
if (_cropEnabled == cropEnabled)
409
404
return ;
410
405
@@ -425,13 +420,13 @@ - (void)setCropEnabled:(BOOL)cropEnabled recropImmediately:(BOOL)recropImmediate
425
420
426
421
- (CGRect)cropRect
427
422
{
428
- ASDN::MutexLocker l (_imageLock );
423
+ ASDN::MutexLocker l (_propertyLock );
429
424
return _cropRect;
430
425
}
431
426
432
427
- (void )setCropRect : (CGRect)cropRect
433
428
{
434
- ASDN::MutexLocker l (_imageLock );
429
+ ASDN::MutexLocker l (_propertyLock );
435
430
if (CGRectEqualToRect (_cropRect, cropRect))
436
431
return ;
437
432
@@ -452,25 +447,25 @@ - (void)setCropRect:(CGRect)cropRect
452
447
453
448
- (BOOL )forceUpscaling
454
449
{
455
- ASDN::MutexLocker l (_imageLock );
450
+ ASDN::MutexLocker l (_propertyLock );
456
451
return _forceUpscaling;
457
452
}
458
453
459
454
- (void )setForceUpscaling : (BOOL )forceUpscaling
460
455
{
461
- ASDN::MutexLocker l (_imageLock );
456
+ ASDN::MutexLocker l (_propertyLock );
462
457
_forceUpscaling = forceUpscaling;
463
458
}
464
459
465
460
- (asimagenode_modification_block_t )imageModificationBlock
466
461
{
467
- ASDN::MutexLocker l (_imageLock );
462
+ ASDN::MutexLocker l (_propertyLock );
468
463
return _imageModificationBlock;
469
464
}
470
465
471
466
- (void )setImageModificationBlock : (asimagenode_modification_block_t )imageModificationBlock
472
467
{
473
- ASDN::MutexLocker l (_imageLock );
468
+ ASDN::MutexLocker l (_propertyLock );
474
469
_imageModificationBlock = imageModificationBlock;
475
470
}
476
471
0 commit comments