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: 
bbrouse
Level 7

Player Crash when function named onSubmitButtonSelected

I don't know if this is an isolated problem, or if I'm just crazy, but I ran into a very strange issue today while developing a scene.

I have a scene that is structured like all my others that work just fine. I have my brightscript code embedded into the xml file itself rather than splitting them up. I added some functions for handling button logic to the scene, packaged it up, and deployed it to my local Roku player.

The debugger shows the normal:
------ Compiling dev 'channelname' ------


Once that displays in the debugger there's no other output and the player freezes and doesn't accept remote input, doesn't respond to external control commands; the splash screen for the channel doesn't even display. When I restart the player the Roku logo appears then goes into a black screen. I let it sit for 30 minutes a couple times but the main menu failed to load. I had to do a factory reset to get the player to boot properly again.

After some debugging I narrowed the problem down to the name of one of my button handler functions:
onSubmitButtonSelected


If I change the name of the function the channel runs fine. I thought maybe I had another function somewhere with the same name and that caused some kind of collision during compilation, but I don't.

Anyone have ideas what was happening here? Is there a global built-in function named onSubmitButtonSelected? I tried to see if that was the case but couldn't find any answers.
0 Kudos
6 Replies
EnTerr
Level 8

Re: Player Crash when function named onSubmitButtonSelected

For the record, can you give model# and firmware#?

Ha! Am i getting this right - you are saying that changing onSubmitButtonSelected to onSubmitButtonSelected1 fixes the problem - and changing it back makes it disappear?
(Best if you can do this as clean room experiment, i.e. repeating above - change only the name to literally onSubmitButtonSelected1 and try, then literally change only to onSubmitButtonSelected and try)

A reserved word would have caused syntax error, where a global function would've silently overridden yours.
0 Kudos
bbrouse
Level 7

Re: Player Crash when function named onSubmitButtonSelected

Both players had the same model/firmware:
Model: 4230X - Roku 3
Firmware: version 7.1.0 build 4061-04

I performed the test you proposed and saw the behavior I had been seeing all day: onSubmitButtonSelected caused a freeze/crash, onSubmitButtonSelected1 launched just fine.
0 Kudos
EnTerr
Level 8

Re: Player Crash when function named onSubmitButtonSelected

Wow, that seems like a splendiferous bug to discover! :twisted:
Considering you report it leaving the player dead beyond reboot - and in need of factory reset.

Can you assemble a minimal example, say something you can post as [ code] ... [/code] here - i can try it on my player too. There is better chance for Roku* to pay attention if the issue is confirmed by a 3rd party
0 Kudos
RokuRobB
Level 7

Re: Player Crash when function named onSubmitButtonSelected

It would be helpful to see the original sample. I just created the sample below with no issues:

SimpleButtonScene.xml

<?xml version="1.0" encoding="utf-8" ?>
<!--********** Copyright 2016 Roku Corp. All Rights Reserved. **********-->


<component name="SimpleButtonScene" extends="Scene" >

<script type="text/brightscript" uri="pkg:/components/SimpleButtonScene.brs" />

<children>
<Group id="myGroup">
<Button id="button" text="Press Me!" translation="[100, 100]" />
<Button id="button1" text="Button 1" translation="[100, 160]" />
<Label id="myLabel" text="Test label" vertAlign="center" horizAlign="center" translation="[400, 100]" />
</Group>
</children>

</component>

SimpleButtonScene.brs


'********** Copyright 2016 Roku Corp. All Rights Reserved. **********

function init()
m.button= m.top.findNode("button")
m.button1 = m.top.findNode("button1")
m.button.ObserveField("buttonSelected", "onButtonSelected")
m.button1.ObserveField("buttonSelected", "onSubmitButtonSelected")
m.button.SetFocus(true)
m.label = m.top.FindNode("myLabel")
end function

function onButtonSelected() as void
m.label.text = "Button Pressed"
end function

function onSubmitButtonSelected() as void
m.label.text = "Button1 Pressed"
end function

function onKeyEvent(key as String, press as Boolean) as Boolean
handled = false
if press then
if (key = "down") then
if (m.button.hasFocus())
m.button1.setFocus(true)
else
m.button.setFocus(true)
end if
handled = true
else if (key = "up")
if (m.button1.hasFocus())
m.button.setFocus(true)
else
m.button1.setFocus(true)
end if
handled = true
end if
end if
return handled
end function
0 Kudos
bbrouse
Level 7

Re: Player Crash when function named onSubmitButtonSelected

Here's a gist to the code for the WIP scene in question: https://gist.github.com/bbrouse/ded69da63b3306ffb76c4420b6e60ea4

This is the working code; the function in question has been changed to submitButtonSelected()

BaseScene is just a scene component that handles loading some data into each of our scenes (user data, config, etc.)
0 Kudos
Veeta
Level 7

Re: Player Crash when function named onSubmitButtonSelected

I'm seeing this same behavior, though I haven't been able to narrow down to a single function name. I don't have a "onSubmitButtonSelected" function, but i have some interfaces with xxxButtonSelected fields. Hopefully I can narrow this down but it's a very long debug cycle having to reset my Roku 4 each time.
0 Kudos