(more details on StackOverflow)
I'm getting messages like the following, SOMETIMES, when I draw to a CGContext
IOSurface creation failed: e00002c2 parentID: 00000000 properties: {
IOSurfaceAddress = 5207703552;
IOSurfaceAllocSize = 9461418;
IOSurfaceCacheMode = 0;
IOSurfaceName = CMPhoto;
IOSurfacePixelFormat = 1246774599;
}
call to context.draw()
:
context.draw(photo.image,
in: CGRect(x: 0, y: top, width: width, height: height),
byTiling: false)
The results are just fine, so the draw
seems to be working. It also, most often, draws without producing this error, but it fails pretty often.
I'm not sure where to begin looking to sort out what I might need to do differently to avoid this error message in the console.
Complete code:
import Foundation
import SwiftUI
func generateSpritesImage(thumbPhotos: [Photo], width: Int, filename: URL) -> [Int] {
var indices = [Int]()
let totalHeight = thumbPhotos.reduce(0) {
$0 + $1.heightOfImage(ofWidth: width)
}
debugPrint("creating context")
let context = CGContext(data: nil,
width: width,
height: totalHeight,
bitsPerComponent: 8,
bytesPerRow: 0,
space: CGColorSpace(name: CGColorSpace.sRGB)!,
bitmapInfo: CGImageAlphaInfo.noneSkipLast.rawValue)!
var top = totalHeight
for photo in thumbPhotos {
let height = photo.heightOfImage(ofWidth: width)
indices.append(top - totalHeight)
top -= height
debugPrint("drawing \(photo.filteredFileURL())")
context.draw(photo.image,
in: CGRect(x: 0, y: top, width: width, height: height),
byTiling: false)
}
debugPrint("write jpeg")
writeJpegFromContext(context: context, filename: filename)
return indices
}
func writeJpegFromContext(context: CGContext, filename: URL) {
let cgImage = context.makeImage()!
let bitmapRep = NSBitmapImageRep(cgImage: cgImage)
let jpegData = bitmapRep.representation(using: NSBitmapImageRep.FileType.jpeg, properties: [:])!
try! jpegData.write(to: filename)
}
sample of output:
"drawing 0002-_MG_8542.jpg"
"drawing 0003-_MG_8545.jpg"
"drawing 0004-_MG_8550.jpg"
IOSurface creation failed: e00002c2 parentID: 00000000 properties: {
IOSurfaceAddress = 5211357184;
IOSurfaceAllocSize = 9983331;
IOSurfaceCacheMode = 0;
IOSurfaceName = CMPhoto;
IOSurfacePixelFormat = 1246774599;
}
"drawing 0005-_MG_8555.jpg"
IOSurface creation failed: e00002c2 parentID: 00000000 properties: {
IOSurfaceAddress = 5221351424;
IOSurfaceAllocSize = 10041215;
IOSurfaceCacheMode = 0;
IOSurfaceName = CMPhoto;
IOSurfacePixelFormat = 1246774599;
}
"drawing 0006-_MG_8562.jpg"
"drawing 0007-_MG_8563.jpg"
IOSurface creation failed: e00002c2 parentID: 00000000 properties: {
IOSurfaceAddress = 5376163840;
IOSurfaceAllocSize = 10109756;
IOSurfaceCacheMode = 0;
IOSurfaceName = CMPhoto;
IOSurfacePixelFormat = 1246774599;
}
"drawing 0008-_MG_8584.jpg"
"drawing 0009-_MG_8618.jpg"
IOSurface creation failed: e00002c2 parentID: 00000000 properties: {
IOSurfaceAddress = 5394612224;
IOSurfaceAllocSize = 8425564;
IOSurfaceCacheMode = 0;
IOSurfaceName = CMPhoto;
IOSurfacePixelFormat = 1246774599;
}
"drawing 0010-_MG_8627.jpg"
"drawing 0011-_MG_8649.jpg"
"drawing 0012-_MG_8658.jpg"
"drawing 0013-_MG_8665.jpg"
"drawing 0014-_MG_8677.jpg"
"drawing 0015-_MG_8675.jpg"
"drawing 0016-_MG_8676.jpg"
"drawing 0017-IMGP0873.jpg"
"drawing 0018-_MG_8719.jpg"
"drawing 0019-_MG_8743.jpg"
...