Thanks for posting your solution, but after looking at the documentation I don't think your setting m.player.loop to true is really doing anything. From the documentation:
"Both the Audio and Video nodes support the use of playlists, which are lists of several media items to play in sequence rather than a single media item. If a playlist is used, setting the loop field to true causes the entire playlist to play again after the last item in the playlist completes."
It looks to me that loop only affects playlists. I'd say your solution is fine, but you might want to see if setting up a playlist with one entry would allow you to eliminate your observer.
Roku Community Streaming Expert
Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.
I am not a Roku employee.