我的AudioUnit插件出现崩溃(在Logic 9和Logic X下运行 - Mac OS X 10.8.4。在AU实验室中无法重现)
我的AudioUnit插件在单独的线程中执行绘制。 当插件GUI关闭时,AU插件会收到以下呼叫: NSView removeFromSuperviewWithoutNeedingDisplay 问题是,在使用此功能调用AU时启动OS X 10.8.4, 执行绘制的单独线程仍在运行。 但是,此时有些东西已经被破坏,所以我在尝试绘制时收到了一个openGL错误: 帧缓冲区操作无效(1286)。 这当然会导致下一个插件GUI绘图中的图形损坏,以及几次GUI打开和关闭尝试后的崩溃。
问题是: 1.在NSView removeFromSuperviewWithoutNeedingDisplay之前是否有可以实现的函数? 这样,我可以在Logic破坏视图之前在单独的线程中停止绘图。 如果没办法,你还有其他建议吗?也许每次尝试都要检查一下?
谢谢! 下进行。
答案 0 :(得分:0)
removeFromSuperviewWithoutNeedingDisplay方法可能不是关闭subView UI的最佳点。
有两种选择:
订阅并回应插件主机窗口NSWindowWillClose通知。
当NSView方法 - (void)viewWillMoveToWindow:(NSWindow)w
(这基本上意味着视图将很快从窗口中删除)。
在这两种情况下,都可以在关闭窗口或更改视图层次结构之前立即做出反应,因此仍然存在"正常" SubView的UI环境。