Update: EmulationStation random video screensaver - use only media from a particular system, back and favorites controls
-
@pjft I am still seeing it with full-screen paging disabled:
(disabled via cfg before launching ES)
-
@pjft also, when returning from a game at or near the bottom of the list, the selected title appears vertically centered, even if that means blank lines after the final entry. Full screen paging does not affect this either.
(When browsing normally, the list stops scrolling at the bottom and the cursor itself moves down the last few entries instead of remaining centered.)
-
@sleve_mcdichael Awesome. Yes, this is on me, I just bisected it to an attempt at improving ES performance. Sigh. I'll revert it for now.
Can you test the latest emulationstation-dev code?
Also, for the last examples, can you check whether it is fixed - and, if not, if they were working on the previous commit you mentioned? Thank you.
@Lolonois alas, this was unrelated to your symptoms, the behavior you shared is still present. I can help dig into it if you give me guidance or directions.
-
@pjft said in Update: EmulationStation random video screensaver - use only media from a particular system, back and favorites controls:
The only thing I'm doing on my end is calling setFocus(game) which, I suppose, I expected to set the focus on that game. It seems it does, but the mList component for the view does not follow it.
You are right and were pretty close with setting
setCursor()
. However, the list renderer got confused as there was no user navigation to the game in question.Two things happened and cumulated.
One: Without the
setViewportTop(-1)
in theselectGame()
the renderer ofTextListComponent.h
[1] is not pre-initialize with "place cursor mid on screen with selected game", in turn this de-railed the cursor placement in the subsequentviewportTop()
[2].Two: For some reasons the
mCursorPrev
was not-1
(initial value) even withsetViewportTop(-1)
, which then made an assumption fail inviewportTop()
. (The assumption was that a user can only navigate to game after entering the system manually). It came to me when forcing the cursor to be mid-aligned, the previous cursor position is irrelevant (=it is safe to set to -1).This is what the patch [3] does.
PS: I had to inspect the values in
render()
andviewportTop()
to get to this conclusion.PPS: Once you find this working ok, I have a followup PR to make the code more understandable (i.e. replacing -1 with an constant with a meaningful name).
[1] https://github.com/RetroPie/EmulationStation/blob/19fd7d9ae91f22caca948acc46fb9dac587b2023/es-app/src/components/TextListComponent.h#L142
[2] https://github.com/RetroPie/EmulationStation/blob/19fd7d9ae91f22caca948acc46fb9dac587b2023/es-app/src/components/TextListComponent.h#L257
[3] https://github.com/RetroPie/EmulationStation/pull/850 -
@Lolonois Thank you! I'll test it out later, but I trust your judgement there. I left a comment on the PR.
-
Just updating everyone here, I believe most of the reported issues have been fixed by now. Thanks @Lolonois for the help with the bugfixing as well.
If you all can update to the latest code, do let us know if there's anything missing on this end.
Thanks all.
-
@pjft Yes most of the alignment issues seem to be resolved with this latest update, that I can tell. I do still see one, which is a bit older, dating back to the addition of "full screen paging" option:
For most of the length of the gamelist, the cursor is "pinned" to the middle and the list contents "scroll" by underneath it. Except when near the top and bottom of the list, where the list is pinned and the cursor moves to cover those first/last few selections.
Normally, after PgUp/PgDn or Random (L/R or X) are used, the cursor always ends up in the middle (unless it's at one of these list-end positions) as if you had navigated to it with Up/Down.
When full-screen paging is enabled, however, then if the cursor is in one of these off-center positions, then when use PgUp/PgDn or Random, the list "jumps" to the new selection but the cursor remains still in the same position it was before*:
*(unless the random-selected game was already visible on the same page as the previous one, in which case only the cursor moves while the list remains pinned.)
Expected: when not at list-top or list-bottom, cursor would be centered regardless of how navigated to:
For random, this would be fairly simple: just have the list moves to the appropriate position and the cursor jumps to center (or as close to it as possible) as if the title were navigated to with up/down.
For PgDn from list-top (and reverse, PgUp from list-bottom) is a tricky one I think -- if both the list and cursor each scroll exactly 1 page, clearly the cursor's relative position on-screen wouldn't change. So one or the other of them needs to scroll a different amount from these positions.
At first guess I would want to scroll the list one full page and move the cursor ~1.5 pages to the screen-middle. But then from this position, cursor in the middle, you'd expect it to still be middle after a PgUp again also, and so requiring an additional PgUp to reach list-top again where it had started. This down-up-up asymmetry may be not be desirable.
Another option would be to scroll the cursor a full page, and then scroll the list roughly half a page to center it. The benefit here is, that a single PgUp would then scroll the cursor back up to where you started, instead of needing asymmetrical down-up-up like the first way.
I think either of this would feel most natural to me vs. still having the cursor off-middle when the list isn't at one end.
A third option, that I don't like as much: if the cursor is above center, then PgDn just moves it to center, and the next PgDn moves the list underneath it.
-
@sleve_mcdichael Thanks for testing and confirming. I'll consider the update from this thread closed then.
Regarding the nuances you're raising, I appreciate the detail. They are, however, not related to this thread so I'll both leave it to @Lolonois to evaluate how to proceed (or not), and if someone decides to look into it, I'd ask that we create a new forum post altogether - or reply in a previous post where the LB/RB scrolling was announced/introduced (if it exists), so as to keep things in the right context.
Thanks and have a great week.
-
@pjft said in Update: EmulationStation random video screensaver - use only media from a particular system, back and favorites controls:
if you want to test it and see how it feels. I'm used to having SORT and JUMP be next to one another, so maybe I'll push it down one more row, but let me know your thoughts. I don't know if SORT gets used a lot, to be honest.
I had to wait for the PR to be committed, because I'm not so savvy with PR merges. :) But now that I've had a chance to hammer on your changes (still using the es-epicnoir theme) I'm happy to report that I found no significant problems.
@pjft again, your work is appreciated. It's really nice to go back 1 video + land on the exact game without launching.
Cheers!
-dg -
@roslof Thanks for the reply - great to hear that all is sorted on that front. I still have one more thing to do here - which is to allow the user to define the default collection to use for "Favorites" during the screensaver (I personally have a "Games To Try Out Later" collection), but afterwards this should be closed.
I have something moderately more fun in the pipeline, and I believe/hope that it might be something that you personally may enjoy. I wish I'd had a better timeline for it (I kind of wanted to be working on it already but, alas, real life and work have picked up after the Christmas break), but keep an eye out for things. I sohuld make some progress on it in the coming weeks, I hope.
Cheers!
-
Ok, to close off this entire chapter, the latest
emulationstation-dev
code now has an option to specify the default collection to store the "favorites" selected during the screensaver. Useful in case you have a collection of "games to try out" that you want to add those games to, instead of sending to Favorites games you potentially never played but would like to check out at a later stage.I'd appreciate testing the usual scenarios - images vs video screensaver, etc. I gave it a thorough testing session but at some point in time it just gets hard to keep track of all the different edge cases, so I'd rather send this to all of you to test (and hopefully have fun) during the weekend.
If this is all solid (famous last words) then I'll be ready to move on to something else now!
Cheers.
-
@pjft Thanks for setting this whole feature up. I did not find anything crucial, only minor issues during testing. Please see PR #853.
I guess these new features should also be added to the documentation.
-
@Lolonois Thanks. Give me a bit to merge them as I have started the newer development and would rather fix any conflicts on the PR front if possible rather than on the newer (complex) development.
-
Hi, just wanted to say this looks awesome and something I've been looking for... I have the desktop edition of ES on my windows PC, would this code run on windows and how would I get the code? Sorry for the basic questions! Matt
-
@embee said in Update: EmulationStation random video screensaver - use only media from a particular system, back and favorites controls:
I have the desktop edition of ES on my windows PC, would this code run on windows and how would I get the code? Sorry for the basic questions! Matt
You'll have to compile the source using Visual Studio since we don't have a Windows build to download. Do note this is a older fork than ES-DE, which you're using right now, and it's not compatible with it - you'll have to start from scratch with the configuration since ES-DE has a totally different configuration.
-
@mitu thanks for such a swift reply. I thought that might be the case...oh well!
Contributions to the project are always appreciated, so if you would like to support us with a donation you can do so here.
Hosting provided by Mythic-Beasts. See the Hosting Information page for more information.