| 
																	
																	
																		
																	
																	
																 | 
																@@ -549,15 +549,20 @@ void CoreGraphicsContext::drawImage (const Image& sourceImage, const AffineTrans | 
															
														
														
													
														
															
																 | 
																 | 
																        CGContextDrawTiledImage (context.get(), imageRect, image.get());
 | 
																 | 
																 | 
																        CGContextDrawTiledImage (context.get(), imageRect, image.get());
 | 
															
														
														
													
														
															
																 | 
																 | 
																      #else
 | 
																 | 
																 | 
																      #else
 | 
															
														
														
													
														
															
																 | 
																 | 
																        // There's a bug in CGContextDrawTiledImage that makes it incredibly slow
 | 
																 | 
																 | 
																        // There's a bug in CGContextDrawTiledImage that makes it incredibly slow
 | 
															
														
														
													
														
															
																 | 
																 | 
																        // if it's doing a transformation - it's quicker to just draw lots of images manually
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        if (&CGContextDrawTiledImage != nullptr && transform.isOnlyTranslation())
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        // if it's doing a transformation - it's quicker to just draw lots of images manually,
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        // but we might not be able to draw the images ourselves if the clipping region is not
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        // finite
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        const auto doCustomTiling = [&]
 | 
															
														
														
													
														
															
																 | 
																 | 
																        {
 | 
																 | 
																 | 
																        {
 | 
															
														
														
													
														
															
																 | 
																 | 
																            CGContextDrawTiledImage (context.get(), imageRect, image.get());
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        }
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        else
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        {
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            // Fallback to manually doing a tiled fill
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																            auto clip = CGRectIntegral (CGContextGetClipBoundingBox (context.get()));
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (transform.isOnlyTranslation())
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                return false;
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            const auto bound = CGContextGetClipBoundingBox (context.get());
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            if (CGRectIsNull (bound))
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                return false;
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            const auto clip = CGRectIntegral (bound);
 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																            int x = 0, y = 0;
 | 
																 | 
																 | 
																            int x = 0, y = 0;
 | 
															
														
														
													
														
															
																 | 
																 | 
																            while (x > clip.origin.x)   x -= iw;
 | 
																 | 
																 | 
																            while (x > clip.origin.x)   x -= iw;
 | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -573,7 +578,12 @@ void CoreGraphicsContext::drawImage (const Image& sourceImage, const AffineTrans | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																                y += ih;
 | 
																 | 
																 | 
																                y += ih;
 | 
															
														
														
													
														
															
																 | 
																 | 
																            }
 | 
																 | 
																 | 
																            }
 | 
															
														
														
													
														
															
																 | 
																 | 
																        }
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            return true;
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        };
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        if (! doCustomTiling())
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																            CGContextDrawTiledImage (context.get(), imageRect, image.get());
 | 
															
														
														
													
														
															
																 | 
																 | 
																      #endif
 | 
																 | 
																 | 
																      #endif
 | 
															
														
														
													
														
															
																 | 
																 | 
																    }
 | 
																 | 
																 | 
																    }
 | 
															
														
														
													
														
															
																 | 
																 | 
																    else
 | 
																 | 
																 | 
																    else
 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |