cocoa – 在Mac应用程序中加载NPAPI插件时遇到问题

cocoa – 在Mac应用程序中加载NPAPI插件时遇到问题,第1张

概述我正在研究一个独立的守护程序可执行文件,它需要在主机上加载现有的第三方NPAPI插件.我想要做的是将生成的视图从插件渲染到纹理/表面. 它需要在Mac和Windows上运行,但由于我是一个沉重的Mac用户,我决定首先构建Mac版本.我们没有这个插件的源代码 – 这是外部供应商提供给我们的东西 – 所以它是一个黑盒实现. 在网络上,该插件的工作方式与flash非常相似.您在链接到某个mimetype 我正在研究一个独立的守护程序可执行文件,它需要在主机上加载现有的第三方NPAPI插件.我想要做的是将生成的视图从插件渲染到纹理/表面.

它需要在Mac和Windows上运行,但由于我是一个沉重的Mac用户,我决定首先构建Mac版本.我们没有这个插件的源代码 – 这是外部供应商提供给我们的东西 – 所以它是一个黑盒实现.

在网络上,该插件的工作方式与flash非常相似.您在链接到某个mimetype(即应用程序/ flash)的网页中嵌入了一个区域,并加载了插件,而插件又会指示插件加载某个文件(想想SWF)然后渲染它.

我现在正在做的是:

1. Open the library (Bundle) and extract NP_Initialize etc.2. Call NP_Initialize -> returns the object with NPP function pointers etc3. Call NPP_New (this calls a set of NPP functions) -> ultimately returns NPERR_NO_ERROR.

由于NPERR_NO_ERROR是预期的响应,我假设这三个步骤已成功完成.

在NPP_New期间,插件请求Cocoa事件模型和Core Animation(或者Core Graphics,如果我为Core Animation返回false)渲染模式.

然后我打电话给:

4. NPP_Setwindow5. Once the window is set,I load an online file with CURL,and call NPP_NewStream/WriteReady/Write and DestroyStream.

根据我在NPapi文档中可以找到的内容,NewStream / WriteStream / etc函数基本上将文件加载到插件的内存中,因此可以呈现它.

该插件在浏览器中支持Core Animation和Core Graphics,并且在支持NPAPI插件的浏览器中工作正常.

完成上述所有 *** 作后,我尝试渲染到纹理,但在Core Graphics模式下,我继续使用CGContextRef从NPP_Event函数调用中获得错误响应.在Core Animation模式下运行时,我使用renderInContext将纹理渲染到位图,但整个图像保持空白/透明.

这是一个很长的镜头,但有没有人有任何想法?

解决方法 我假设你不使用这个UI线程,如果你在不同的线程中尝试你的代码,如果是这样的话.但是,它可能与许多事情有关,从图像本身开始(因为它是空的/透明的),这就是我使用的:

UIGraphicsBeginImageContextWithOptions(vIEw.bounds.size,vIEw.opaque,[[UIScreen mainScreen] scale]);[vIEw.layer renderInContext:UIGraphicsGetCurrentContext()];UIImage *image = UIGraphicsGetimageFromCurrentimageContext();UIGraphicsEndImageContext(); //after this you should see the image

以下评论与Mozilla CoreAnimationDrawingModel plugin有关

(你的黑盒插件可能基于它吗?)

确保使用Flash 10.1,因为在该版本之前不支持Core Animation绘图模型(您加载了SWF).

注意!如果您的黑盒插件使用QTMovIELayer渲染它应该失败,因为它不支持renderInContext.

关于您的主题的其他有趣读物(自2010年起):Core Animation

总结

以上是内存溢出为你收集整理的cocoa – 在Mac应用程序中加载NPAPI插件时遇到问题全部内容,希望文章能够帮你解决cocoa – 在Mac应用程序中加载NPAPI插件时遇到问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1020442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存