RC 1.0.7 responsiveness and scraping success#28
Open
SneakyStarling wants to merge 2 commits intomilouk:mainfrom
Open
RC 1.0.7 responsiveness and scraping success#28SneakyStarling wants to merge 2 commits intomilouk:mainfrom
SneakyStarling wants to merge 2 commits intomilouk:mainfrom
Conversation
…s, clean manual build option for github, tweaks (#1) This update includes the following: - Additional logic to identify where roms are stored. 1. Falls back to SD1 if SD2 is not found 2. A routine that attempts to identify game systems for folders if the user used a different naming convention than the default. - An option to include additional meta data in the game description (developer, game rating, number of players, age rating. - The ability to scrape meta data for m3u files using just the game name. - An option to disable searching in sub-directories (Very convenient for DOS games). - A new manual build option for github that keeps the repo clean (the artifact can be downloaded from the Actions page and is structured in a way that the archive can be installed with the muOS Archive Manager).
This update focuses on the efficiency and responsiveness of Artie. The main changes include: (1) Overhauling the (screen)update loop. Removing as much unneeded overhead as possible led to better frame times, and thus app smoothness is improved. - Drive io is removed from the default render loop. System, Rom and missing media data is stored in memory and updated whenever changes are expected. - Key (button) events are no longer referenced with string values, avoiding unnecessary string comparisons in the render loop - A frame pacing routine is added to the update loop to keep a target refresh rate of 20 fps and avoid unnecessary CPU hogging. - Removed loading dialog "Checking existing media...", it was displayed on screen for too short to be readable, which made it distracting. - Removed drawing boxes for unfocused menu items to speed up rendering - Switched font to DejaVuSansCondensed, another clean-looking free-to-use font for anyone (license file included) that has a lower rendering overhead. (2) Scraping functionality - If find game URL using the rom fails Artie will now try to find the URL using a name & system search, if that fails to it will log an error. - Added single retry for failed scrape with 0.5 second delay, as some scrapes fail first but succeed in a second attempt. - Scraping saves boxart paths to a set guarded by a threading lock to prevent concurrent access issues. - After a scrape completes a preview box with the artwork and the completion or in case of "scrape all" the scrape counter is drawn on screen. (3) Overhauling input.py. Continuous input monitoring and storing events until they are handled led to a more responsive UI. The approach allows for different behavior on tap, hold, and release. - Input now runs in its own thread and continuously listens to button events. - Button events (activation and deactivation) are saved in an input dictionary, and concurrent access errors are prevented with a threading lock. - The key_pressed method is updated and now times button events to allow for natural interactions, such as button tapping and scrolling when holding. (4) UI improvements - For easier hand-picked scraping Artie now stays in the roms screen after a single rom is scraped unless no more unscraped roms are left to be scraped. The cursor will jump to the rom listed above the one that was just scraped, unless it is already in the first position, in which case it will stay there. - Added the possibility to move up from the first entry in a menu to go to the last entry and visa versa. - Moved Rom count and missing media texts a bit to keep systems with longer names and folders with 100+ roms within the bounds of the screen (they were cut-off before). - Added the possibility to show image files on screen with the display_picture method in graphic.py. The method swaps color channels before it draws the image on screen because artwork from screenscraper.fr appears to be BGRa encoded instead of RGBa. (5) Tweaks - Tweaked the default box-art settings to something that looks good in the default muOS pixie theme. - Bumped op world "wor" in the priority list for artwork scrapes (from last to third after us, eu). - Moved the position of log messages down to match better with the text location of boxart preview boxes. - Updated the version number to 1.0.7
Owner
|
Hi @SneakyStarling , sorry for the late reply, past months were quite busy. I reviewed your changes and i like them. Can you please rebase on main branch? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This Artie update focuses on improving the user experience and attempts to maximise scraping success.
What's Changed
(1) Overhauling the (screen)update loop. Removing as much unneeded overhead as possible led to better frame times, and thus app smoothness is improved.
(2) Scraping functionality
(3) Overhauling input.py. Continuous input monitoring and storing events until they are handled led to a more responsive UI. The approach allows for different behavior on tap, hold, and release.
(4) UI improvements
(5) User options and convenience
(6) Tweaks