gpt4 book ai didi

c++ - NPAPI 插件 - xulrunner 组件的传递实例 (nsCOMptr)

转载 作者:行者123 更新时间:2023-11-28 06:48:15 26 4
gpt4 key购买 nike

我在这里搜索后找不到解决方案,所以我不得不问!请原谅我的语言,因为我是 NPAPI 业务的新手。

我所拥有的是一个现有的插件,它以大约 100 毫秒的周期从本地运行的 xulrunner 应用程序中接收来自 nsComponent(dataCreator)的数据.结果看起来很不错,到目前为止 xul 应用程序很稳定。但是如果我增加数据的出现(我必须这样做),xul 应用程序需要太长时间才能使用react,这最终会导致 xul 崩溃。我认为 XUL->Plugin I/O 有点贵!?

到目前为止我了解到的是,插件能够创建组件的新实例:

    // inside myPlugin.cpp
nsresult rv;
nsCOMptr< myCompClass > _myComPtr ;
_myComPtr = do_CreateInstance( "@myDomain.org/DIR/MYCOMPONENT;1", &rv ) ;

函数

    do_CreateInstance( ) ;

来自 xulrunner SDK 之外的 nsComponentManagerUtlis.h,但它与

    do_giveMeTheRunningInstanceOf( "@myDomain.org/DIR/MYDATACREATOR;1", &rv ) ;

我现在的直觉是使用

    nsScriptablePeer::Invoke(NPIdentifier name, const NPVariant *args, uint32_t argCount, NPVariant *result )  

将正在运行的dataCreatornsCOMptr传递给插件的方法,使直接通信成为可能并减少xul<-->插件I/O 降到最低。创建 dataCreator 的另一个实例绝对不是一种选择!

老实说:我不知道如何将 NPVariant (args[0])“转换”为所需的 nsCOMptr,是吗?或者是否有另一种可能在插件内部接收指针?

谢谢你的帮助

最佳答案

据我所知,无法直接从 npapi 插件与 xulrunner sdk 交互,因为它们使用完全不同的 API。 NPVariants 不能传递 xulrunner 对象或其他 native 指针类型。

这是一场彻底的头脑 Storm ,我不知道它是否可行,但如果你能以某种方式将 xulrunner 扩展和 npapi 插件组合到同一个模块中,你可能可以使用全局 map 和插件中的 id 来获取共享内存,但我不知道这是否可能。

您是正确的,使用 javascript 进行交互是有成本的;不过,实际上,成本最高的是单个调用,因为它们最终是跨进程的。通常,您可以通过使用更高效的调用来最大限度地减少这种情况。快于 100 毫秒绝对不是问题。

关于c++ - NPAPI 插件 - xulrunner 组件的传递实例 (nsCOMptr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24536380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com