首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >safari下的NPAPI自呈现插件(32位对64位)

safari下的NPAPI自呈现插件(32位对64位)
EN

Stack Overflow用户
提问于 2011-09-13 04:30:29
回答 1查看 503关注 0票数 0

我在safari工作,在OSX之上,使用核心图形,我有一个插件运行两个线程(主线程和渲染计时器线程)。呈现计时器线程调用"NPN_InvalidateRect“,而主插件线程处理相应的事件并重新绘制自身。然而,在safari 32位和safari 64位中,这似乎是不同的:

  • 64位(可可事件模型):需要NPN_InvalidateRect + NPN_ForceRedraw =正确重绘
  • 32位(如果支持可可,否则使用碳):NPN_InvalidateRect =正确重绘,但是,同时执行NPN_InvalidateRect + NPN_ForceRedraw (类似64位情况)会导致闪烁图像。

问题:

  1. 是一种更好的方法来强制插件呈现自身,同时坚持本机NPAPI、核心图形以及对碳和可可事件模型的支持。如果不是,如何在运行时检测浏览器是否以32位和64位应用程序运行,以便选择调用的NPN函数。

谢谢,

(交叉张贴在火上,我会在两处张贴回应)

EN

回答 1

Stack Overflow用户

发布于 2011-09-14 00:52:00

首先,这是:

呈现计时器线程调用"NPN_InvalidateRect“

是一个严重的问题,除非您真正的意思是您的呈现计时器线程导致在主插件线程上调用NPN_InvalidateRect。NPAPI显然不是线程安全,您需要在主线程上调用像NPN_InvalidateRect这样的方法。

其次,你真的不应该打电话给NPN_ForceRedraw。an,Firefox,WebKit2,以及几乎可以肯定的Safari的OOP模式(这就是你在64位中得到的)将NPN_ForceRedraw视为无op;强制立即重新绘制的概念与整个OOP插件模型背道而驰。在任何情况下,您都应该调用NPN_InvalidateRect,并信任浏览器会给您回电话。在OOP-plugin世界中,您不应该期望能够强迫浏览器在任何特定时刻呈现插件。

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

https://stackoverflow.com/questions/7401889

复制
相关文章

相似问题

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