首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >释放IOSurface

释放IOSurface
EN

Stack Overflow用户
提问于 2012-12-19 12:16:19
回答 1查看 3.9K关注 0票数 7

这个问题是对以下问题的延伸:

链接-1:Creating an image out of the ios surface and saving it

链接-2:Taking Screenshots from iOS app - emulating Display recorder (query on the internals)

(参考链接-1)我有在后台工作的截图的代码。但是如前所述,它需要2秒的睡眠才能不间断地工作,否则操作系统就会挂起应用程序。我发现原因可能是我没有显式地发布我创建的IOSurface。

原因-使用维克多罗宁给出的链接http://pastie.org/pastes/3734430,捕捉工作良好,即使没有睡眠。每次写入图像后,我尝试使用destSurf (我创建的目标面)发布CFRelease,但这不起作用。

任何关于何时、如何以及是否发布创建的IOSurface的帮助都将是非常有用的。谢谢。

更新

所以,这就是到底发生了什么。(参考链接-1)

代码语言:javascript
复制
IOSurfaceRef destSurf = IOSurfaceCreate(dict);
IOSurfaceAcceleratorRef outAcc;
IOSurfaceAcceleratorCreate(NULL, 0, &outAcc);

CFDictionaryRef ed = (__bridge CFDictionaryRef)[NSDictionary dictionaryWithObjectsAndKeys: nil];
IOSurfaceAcceleratorTransferSurface(outAcc, screenSurface, destSurf, ed, NULL);

IOSurfaceUnlock(screenSurface, kIOSurfaceLockReadOnly, &aseed);

CGDataProviderRef provider = CGDataProviderCreateWithData(NULL, IOSurfaceGetBaseAddress(destSurf), (width*height*4), NULL);
CGImageRef cgImage=CGImageCreate(width, height, 8, 8*4, IOSurfaceGetBytesPerRow(destSurf), CGColorSpaceCreateDeviceRGB(), kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Little, provider, NULL, YES, kCGRenderingIntentDefault);
UIImage *image = [UIImage imageWithCGImage: cgImage];
CGImageRelease(cgImage);
UIImageWriteToSavedPhotosAlbum(image, self, nil, nil);
CFRelease(destSurf);
  1. 对CFRelease的调用发生,应用程序崩溃。没有保存图像。但是,如果您在发布前的睡眠时间为1-2秒,它就可以正常工作。
  2. 如果您跳过对UIImageWriteToSavePhotosAlbum()的调用,一切都会正常工作,并且捕获过程不会中断。 我仍然不清楚究竟是什么问题,以及如何解决它。任何帮助都是非常感谢的。
EN

回答 1

Stack Overflow用户

发布于 2012-12-19 17:52:32

我认为你需要释放表面。它是由API IOSurfaceCreate创建的,它不是由自动发行版管理的。

例如,我发现下面的代码是发布的:

Q9WJMm4hqgw

http://www.opensource.apple.com/source/WebCore/WebCore-7536.24/platform/graphics/surfaces/mac/GraphicsSurfaceMac.cpp?txt

如果您试图用CFRelease发布它,会发生什么?它崩溃了还是有同样的2秒问题?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13952313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档