AudioPlayer combined with Gridscreen 'BUG'

If you populate a gridscreen, and the selected item uses roAudioPlayer, when you add content to the audioplayer it changes the graphics for the gridscreen to square, and creates black lines between the overhanglogo and the bottom of the screen. Moving the selection box around kind of ‘fixes the icons’ on a row basis, but doesn’t restore the screen. This also happens if you load the audioplayer component and add content to it on a springboard screen on top of the gridscreen. It’s kind of weird when it happens - so I guess the way to avoid the problem would be to go back to closing the gridscreen before adding content, and then recreating the gridscreen when you’re done with the audioplayer?

Code to recreate –


Sub Main()
	Gridscreen()
End Sub

Sub Gridscreen()
	port=CreateObject("roMessagePort")
	grid=CreateObject("roGridScreen")
	grid.SetMessagePort(port)
	rowTitles=CreateObject("roArray",10,TRUE)
	For j=0 To 10
		rowTitles.Push("[Row Title "+j.toStr()+" ] ")
	Next
	grid.SetupLists(rowTitles.Count())
	grid.SetListNames(rowTitles)
	For j=0 To 10
		list=CreateObject("roArray",10,TRUE)
		For i=0 To 10
			o=CreateObject("roAssociativeArray")
			o.ContentType="episode"
			o.Title="[Title"+i.tostr()+"]"
			o.ShortDescriptionLine1="[ShortDescriptionLine1]"
			o.ShortDescriptionLine2="[ShortDescriptionLine2]"
			o.Description=""
			o.Description="[Description] "
			o.Rating="NR"
			o.StarRating="75"
			o.ReleaseDate="[<mm/dd/yyyy]"
			o.Length=5400
			o.Actors=[]
			o.Actors.Push("[Actor1]")
			o.Actors.Push("[Actor2]")
			o.Actors.Push("[Actor3]")
			o.Director="[Director]"
			list.Push(o)
		Next
		grid.SetContentList(j,list)
	Next
	grid.Show()

	While TRUE
		msg=Wait(0,port)
		If type(msg)="roGridScreenEvent"
			If msg.isScreenClosed()
				Exit While
			Else If msg.isListItemFocused()
				Print"Focused msg: ";msg.GetMessage();"row: ";msg.GetIndex();
				Print" col: ";msg.GetData()
			Else If msg.isListItemSelected()

'problem is caused by this, or any combination of springboard screen on top of gridscreen, etc etc

	audioPlayer=CreateObject("roAudioPlayer")
	audioPlayer.SetMessagePort(port)
	item=CreateObject("roAssociativeArray")
	item.Url=""  '''any item can go here, makes no difference if it's a valid url or not
	item.StreamFormat=("mp3")
	audioPlayer.AddContent(item) ' this is the problem line to screw up the gridscreen display

				Print"Selected msg: ";msg.GetMessage();"row: ";msg.GetIndex();
				Print" col: ";msg.GetData()
			Else If msg.isRemoteKeyPressed()
				Print"Button Pressed msg: ";msg.GetIndex()
			End If
		End If
	End While
	Return
End Sub

I’ve seen similar oddities with GridScreen on both the 2.9 and 3.0 firmware.

In my particular case, the main screen is an roGridScreen. Selecting an item goes to a spring board during which then plays audio using a background roAudioPlayer. You can then press the “Up” button to go back to the grid screen while the audio continues to play. Everything goes okay until the track is over and the roAudioPlayer switches to the next track. At this point the grid screen “flashes black” and then it is drawn incorrectly. In my case I’m already using the square grid screen, so what happens is the bottom 20% of the screen is all black and each grid is about 3/4 filled in with icons.

Also, for what it’s worth, there are also known issues when other screens are stacked on top of a grid screen.
viewtopic.php?f=34&t=37984&p=247904&hilit=gridscreen#p247904

I am having the same issue as the OP. Just the mere creation of an roAudioPlayer object causes the gridscreen to glitch.

Best is to store all the data for your grid-screen in an array of arrays, destroy the grid screen when launching any other screens, and recreate it from the array when closing the other screen.

  • Joel