2010-02-13 27 views
1

我正在创建基于XULRunner的GStreamer应用程序。为此,创建了一个XPCOM组件,使XUL应用程序中的一些GStreamer功能可用。但是,GStreamer通常使用一个消息循环(GMainLoop),它可以让人接收总线消息。因为XULRunner已经有了自己的消息循环,所以我不能创建GMainLoop。所以我需要另一种获取这些消息的方式。一种方法是使用gst_bus_poll调用。我需要经常调用它以防止消息队列被淹没。所以我在想这个计时器是正确的解决方案。如何在XPCOM组件中实现一个定时器?

长话短说:如何在XPCOM组件中创建计时器?

+1

XPCOM插件?这项技术已经死了。你的意思是NPAPI插件还是XPCOM组件? – Nickolay

+0

我的意思是XPCOM组件。更新了我的帖子。 – StackedCrooked

回答

1

看看nsITimer

你可能会对this bug about implementing a GStreamer backend for <video>的代码感兴趣。

+0

我一直在尝试一点,最终实现了计时器在Javascript侧(setTimeout)。 关于用于html视频的GStreamer后端。这似乎很有趣,但我似乎无法在Mozilla源代码目录(a/content/html/content/public/nsHTMLMediaElement.h)中找到实际的源文件。我可能看错了地方。 顺便说一句,目前我的代码灵感来自Songbird的来源。它在Windows和Mac上运行得非常好。但偶尔该应用程序变得无法响应(通常同时在另一个应用程序或YouTube上播放视频)。 – StackedCrooked

+0

@StackedCrooked:http://mxr.mozilla.org/mozilla-central/source/content/html/content/public/nsHTMLMediaElement.h。 “a /”的事情就是DVCS经常出现的方式。 – Nickolay