From 1b03173e2adac1217fc3c2d305218bc9fd7e3a73 Mon Sep 17 00:00:00 2001 From: annes Date: Wed, 24 Dec 2025 18:45:55 +0800 Subject: [PATCH] comments --- src/_cocoalayer.mm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/_cocoalayer.mm b/src/_cocoalayer.mm index 4bba84eae..a3a8ef804 100644 --- a/src/_cocoalayer.mm +++ b/src/_cocoalayer.mm @@ -34,14 +34,23 @@ extern "C" { void CocoaSetDockIcon(unsigned char* data, int width, int height) { + // Create an empty NSImage NSImage *dockIcon = [[NSImage alloc] initWithSize:NSMakeSize(width, height)]; + + // Create a CGImage CGDataProviderRef provider = CGDataProviderCreateWithData(nullptr, data, width*height*4, nullptr); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGImageRef cgImage = CGImageCreate(width, height, 8, 32, width*4, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big, provider, nullptr, false, kCGRenderingIntentDefault); + + // Keep the Icon Alive? [dockIcon addRepresentation:[[NSBitmapImageRep alloc] initWithCGImage:cgImage]]; + + // set the app icon [NSApp setApplicationIconImage:dockIcon]; + + // Free the garbage CGImageRelease(cgImage); CGColorSpaceRelease(colorSpace); CGDataProviderRelease(provider);