2006-09-19, 04:44 PM
Snarky Wrote:I don't follow. You say that this problem occurs when GBPVR is playing video "in the background", but that your plugin is not running as an IVideoPlugin. As far as I am aware, the only way to run a plugin while video is playing is to run it as an IVideoPlugin. Am I missing something here?First, when I referred to "running video in the background," what I meant is that I went back to the main menu without turning off live TV. In this case, the only evidence live TV is still running is the audio. That is, live TV is "running in the background" from an application execution standpoint, not a user interface standpoint.
Second, a plugin does not have to implement IVideoPlugin to show up as an overlay on the live TV screen. My plugin just implements IMenuTask, but if i add it to one of the <VideoPluginX/> elements in config.xml, it shows up just fine. Looks kinda cool.
Quote:Also, when a plugin is running as an IVideoPlugin, needsRendering() is irrelevant. As long as the plugin is active (having returned true when needsToBeShown() is polled), render() will be called every ~1 second. Check the IVP.rtf file for a fuller explanation.Yes, I've discovered this through experimentation. I want my plugin's main screen to reflect the timer's current countdown value (approximate to the minute). If it runs over top of live TV (as a <VideoPluginX/> element; even though it does not implement IVideoPlugin), render() is called every second, as expected. Not so if live TV is running and I call the plugin from the main menu.
Quote:Yes, OSDs (On-Screen Displays) are controls and displays that are superimposed on a video screen.Ah. Thanks.
Quote:So if I understand you correctly, your plugin is active, running on top of video, and render() gets called every second, but you don't see the effects of it being drawn until after a keyboard event.Forget about it running as an overlay or an OSD or whatever. Forget about running it on top of a live TV video image. That opens up an entirely different can of worms.
Here are the steps to reproduce the bug. I have a WinTV-PVR-150, latest drivers, etc. And my Sleep Timer plugin is installed.
- From the Main Menu, click Live TV.
- Once watching Live TV, click Menu (on the remote).
- From the menu (which now displays a Live TV video inset), click Sleep Timer.
- From the Sleep Timer menu, click "10 minutes." You'll be returned to the Main Menu.
- Wait exactly 2 minutes.
- From the Main Menu, click Sleep Timer. On the Sleep Timer screen, you'll see that your previous choice ("10 minutes") is selected, and at the bottom a status message will tell you about 8 minutes are left on the timer.
- Watch this screen for another 2 minutes. Don't touch any arrow keys or click the mouse. The status message does not change.
- Move the Up arrow key. The status message updates.
The Weather plugin behaves the same way. The updates. The screen doesn't reflect the new values if Live TV is running in the background (not as an OSD; just the regular plugin).
Quote:That's odd.I bet it seems even more odd now. :-)
Quote:I wonder if it's something weird you're doing that's causing this.Of course it is! lol
Quote:The "Hello World" plugin can easily be adapted to run on top of video. Can you try that, adding for example a counter ("Hello World 1", "Hello World 2", ...) that increments each time it is rendered, to see if the thing updates without your key input?Yes, I will make a simple example plugin that demonstrates the bug precisely. I was looking to kill some time. :-)
Quote:Also, can you please post the code of your current render() method, and a log showing video starting, the plugin getting activated, render() getting called, etc.I'll make the simple test first, then we'll see. :-)
WinTV PVR-150 / ATI X1600 512 / 3GHz P4 / 2GB RAM