|
24 | 24 | end if |
25 | 25 |
|
26 | 26 | m.serverSelection = "Saved" |
| 27 | + ' Always ensure server select is on the stack before user select (for back button) |
27 | 28 | if startOver or invalidServer |
| 29 | + ' Need to show server select interactively |
28 | 30 | print "Get server details" |
29 | 31 | SendPerformanceBeacon("AppDialogInitiate") ' Roku Performance monitoring - Dialog Starting |
30 | 32 | m.serverSelection = CreateServerGroup() |
|
35 | 37 | return false |
36 | 38 | end if |
37 | 39 | SaveServerList() |
| 40 | + else |
| 41 | + ' Server is valid - push placeholder to maintain consistent stack depth |
| 42 | + ' This ensures the scene stack has the same depth regardless of whether |
| 43 | + ' server selection UI was shown, preventing stack corruption on cleanup |
| 44 | + ' Using Group because it has a visible field (ContentNode does not) |
| 45 | + print "Server valid, pushing placeholder to stack" |
| 46 | + placeholderNode = CreateObject("roSGNode", "Group") |
| 47 | + placeholderNode.visible = false |
| 48 | + m.global.sceneManager.callFunc("pushScene", placeholderNode) |
38 | 49 | end if |
39 | 50 |
|
40 | 51 | localUser = m.global.user |
|
94 | 105 | userSelected = CreateUserSelectGroup(publicUsersNodes) |
95 | 106 | SendPerformanceBeacon("AppDialogComplete") ' Roku Performance monitoring - Dialog Closed |
96 | 107 | if userSelected = "backPressed" |
| 108 | + ' User wants to change server - clear all scenes and restart |
97 | 109 | server.Delete() |
98 | 110 | unset_setting("server") |
| 111 | + m.global.sceneManager.callFunc("clearScenes") |
99 | 112 | goto start_login |
100 | 113 | else if userSelected <> "" |
101 | 114 | startLoadingSpinner() |
|
417 | 430 | group.visible = false |
418 | 431 | return -1 |
419 | 432 | else if isNodeEvent(msg, "backPressed") |
| 433 | + group.visible = false |
420 | 434 | return "backPressed" |
421 | 435 | else if type(msg) = "roSGNodeEvent" and msg.getField() = "userSelected" |
422 | 436 | return msg.GetData() |
|
0 commit comments