diff --git a/modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h b/modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h index c0187d3e67..de0949776c 100644 --- a/modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h +++ b/modules/juce_gui_basics/native/juce_CGMetalLayerRenderer_mac.h @@ -86,9 +86,13 @@ public: { layer.drawableSize = transformedFrameSize; resources = std::make_unique (device.get(), layer); - dirtyRegions = convertToRectFloat (layer.bounds); + dirtyRegions.clear(); + dirtyRegions.add (convertToRectFloat (layer.bounds)); } + if (CGSizeEqualToSize (transformedFrameSize, CGSizeZero)) + return dirtyRegions; + auto gpuTexture = resources->getGpuTexture(); if (gpuTexture == nullptr) @@ -209,7 +213,8 @@ private: GpuTexturePool (id metalDevice, MTLTextureDescriptor* descriptor) { for (auto& t : textureCache) - t.reset ([metalDevice newTextureWithDescriptor: descriptor]); + t.reset ((descriptor.width != 0 && descriptor.height != 0) ? [metalDevice newTextureWithDescriptor: descriptor] + : nullptr); } id take() const