Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
greubel
Level 7

Screensaver and Video Player

Is this normal or have I missed something ?
Had a user complain that he is watching a video, pauses it and goes to bed. Next morning he exits the screen saver and the video player has closed.
I know this is a nuisance factor but I tried it and on two different platforms and the video player exits after 3 hours without doing anything.

3.x
15:50:07.142 VideoScreenEvent msg: Playback paused. type:12 index:0
15:50:07.194 Video Paused
18:50:06.741 VideoScreenEvent msg: type:1 index:0
18:50:06.752 Video Screen Closed

5.x
15:52:10.801 VideoScreenEvent msg: Playback paused. type:12 index:0
15:52:10.802 Video Paused
18:52:11.088 VideoScreenEvent msg: type:1 index:0
18:52:11.089 Video Screen Closed
0 Kudos
16 Replies
EnTerr
Level 8

Re: Screensaver and Video Player

Neat. Seems very deliberate exit after 3hrs. Does that event have any getInfo()?
Man, this will be one hard to debug... place STOP for when the event occurs, wait 3hrs and... 50/50 chance if it will actually break into console (the fw 5 bug - fw 3 reliable here).

Btw, am i the only one who did not know about ro*Event.getType()? This is mighty undocumented...
0 Kudos
belltown
Level 7

Re: Screensaver and Video Player

I'd be curious to know if there was any TCP activity going on - maybe it's deciding to shut down a seemingly idle channel so it can perform its bloatware updates.
https://github.com/belltown/
0 Kudos
greubel
Level 7

Re: Screensaver and Video Player

The channel continues to function, I can tell by the traces that follow.
0 Kudos
EnTerr
Level 8

Re: Screensaver and Video Player

It might be a network timeout - ip stack on either side dropping tcp connection after 3hrs - or drop from router NAT table (if not on the same LAN; unlikely) - or application layer on either side deciding they had enough. IP trace indeed should help.
0 Kudos
TheEndless
Level 7

Re: Screensaver and Video Player

"EnTerr" wrote:
Neat. Seems very deliberate exit after 3hrs. Does that event have any getInfo()?
Man, this will be one hard to debug... place STOP for when the event occurs, wait 3hrs and... 50/50 chance if it will actually break into console (the fw 5 bug - fw 3 reliable here).

You can break into the channel as soon as it starts up. If it lands you in the debugger, instead of bailing out to the home screen, then you should be good to go for hitting the STOP three hours later.

"EnTerr" wrote:
Btw, am i the only one who did not know about ro*Event.getType()? This is mighty undocumented...

The Types used to be documented in the old PDF docs. I still keep them around to look up some events that way when debugging. Not sure why they dropped that info from the wiki docs.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
0 Kudos
EnTerr
Level 8

Re: Screensaver and Video Player

"TheEndless" wrote:
"EnTerr" wrote:
Man, this will be one hard to debug... place STOP for when the event occurs, wait 3hrs and... 50/50 chance if it will actually break into console (the fw 5 bug - fw 3 reliable here).
You can break into the channel as soon as it starts up. If it lands you in the debugger, instead of bailing out to the home screen, then you should be good to go for hitting the STOP three hours later.

Wise tip. Or add a STOP command somewhere in the beginning too and then "c"ontinue if it survives. Lately i go by even simpler - by doing development/debug on firmware 3 box first, since it does not have the 50/50 bug.

"EnTerr" wrote:
Btw, am i the only one who did not know about ro*Event.getType()? This is mighty undocumented...
The Types used to be documented in the old PDF docs. I still keep them around to look up some events that way when debugging. Not sure why they dropped that info from the wiki docs.

TheEndless, you are the greatest Roku asset outside of their corporate offices!
(That is, if you are indeed a real person and not a nom de plume like say Nicolas Bourbaki. Smiley LOL)
I doubt it was intentional - probably (like with screensavers) the info got "lost in translation" to wiki; another one for the "docs in need of fix" list. I discovered the method now by wondering what this "type" in Greubel's log were and then just tried getType() on event and then shocker - it worked but confluence search did not show it in wiki.
0 Kudos
Roku Employee
Roku Employee

Re: Screensaver and Video Player

The old list of event types (more have been added since):
Boolean isListItemSelected(Void)
Boolean isScreenClosed(Void)
Boolean isListFocused(Void)
Boolean isListSelected(Void)
Boolean isListItemFocused(Void)
Boolean isButtonPressed(Void)
Boolean isPlaybackPosition(Void)
Boolean isRemoteKeyPressed(Void)
Boolean isRequestSucceeded(Void)
Boolean isRequestFailed(Void)
Boolean isRequestInterrupted(Void)
Boolean isStatusMessage(Void)
Boolean isPaused(Void)
Boolean isResumed(Void)
Boolean isCleared(Void)
Boolean isPartialResult(Void)
Boolean isFullResult(Void)
Boolean isAdSelected(Void)

Since Firmware version 2.6:
Boolean isStorageDeviceInserted(Void)
Boolean isStorageDeviceRemoved(Void)
Boolean isStreamStarted(Void)

Since Firmware version 2.7:
Boolean isListItemInfo(Void)
Boolean isButtonInfo(Void)

The following methods allow you to obtain additional data from the event object:
Integer GetType(Void)
Integer GetIndex(Void)
String GetMessage(Void)
Integer GetData(Void) (Deprecated in v2.6)

Since Firmware version 2.6:
roAssociativeArray GetInfo(Void)
0 Kudos
TheEndless
Level 7

Re: Screensaver and Video Player

"RokuJoel" wrote:
The old list of event types (more have been added since):
Boolean isListItemSelected(Void)
Boolean isScreenClosed(Void)
Boolean isListFocused(Void)
Boolean isListSelected(Void)
Boolean isListItemFocused(Void)
Boolean isButtonPressed(Void)
Boolean isPlaybackPosition(Void)
Boolean isRemoteKeyPressed(Void)
Boolean isRequestSucceeded(Void)
Boolean isRequestFailed(Void)
Boolean isRequestInterrupted(Void)
Boolean isStatusMessage(Void)
Boolean isPaused(Void)
Boolean isResumed(Void)
Boolean isCleared(Void)
Boolean isPartialResult(Void)
Boolean isFullResult(Void)
Boolean isAdSelected(Void)

Since Firmware version 2.6:
Boolean isStorageDeviceInserted(Void)
Boolean isStorageDeviceRemoved(Void)
Boolean isStreamStarted(Void)

Since Firmware version 2.7:
Boolean isListItemInfo(Void)
Boolean isButtonInfo(Void)

The following methods allow you to obtain additional data from the event object:
Integer GetType(Void)
Integer GetIndex(Void)
String GetMessage(Void)
Integer GetData(Void) (Deprecated in v2.6)

Since Firmware version 2.6:
roAssociativeArray GetInfo(Void)


Hey Joel, Any chance of getting the event.GetType() values for each of the isXXXXX() events? It would be most helpful if they were documented like they used to be in the old PDFs.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
0 Kudos
RokuMarkn
Level 7

Re: Screensaver and Video Player

Am I correct that GetType is only useful for debugging? There isn't an real purpose for GetType in production code, is there?

--Mark
0 Kudos