Jump to content
LaunchBox Community Forums

9.0-beta-1 Released


Jason Carr

Recommended Posts

With the recommended usage (not making playlists for developers and publishers), you typically end up with around 30 playlists per platform, which does add up. Most people aren't going to have more than say, 25 platforms, but I know there will be some people that do. 30 x 25 is around 750 playlists, so we at least need to make LaunchBox realistic to use with that number. This isn't an issue performance-wise on my machine, but I'm sure it will be on older machines.

I've done some testing and I can remove the pre-caching that happens on startup for all these playlists, but it does cause delays in the interface if I do. LaunchBox is much less of a concern than Big Box with removing the pre-caching; Big Box is much more of an issue because the cache is important so that the interface runs smoothly.

The primary reason that the cache is needed is for game counts, believe it or not. Loading up the individual game lists for a single playlist is usually instantaneous, but calculating the total counts for each and every playlist (including parents while identifying duplicate games) is a much longer process. I have some ideas to alleviate or reduce this, so I'll be looking into it. Unfortunately it involves simply caching the counts, which can cause more issues regarding playlists not updating, but I have some ideas that should make a difference.

Anyways, no need to argue whether x number of playlists is fringe-case or not.

  • Like 1
Link to comment
Share on other sites

Update: I just found where this was already acknowledged yesterday:

Original post: I just found a regression bug. I was on Launchbox 8.7 prior to upgrading to 9.0b4 just now (not sure which version in between this was introduced).

When in a "smart playlist" aka a Playlist with Auto-Populate conditions, if you changed an aspect of a game that auto-populates, the playlist itself no longer updates to add or remove the games based on that criteria.

Example: I have a Playlist with Auto-Populate on "Date Added < 2 days" and "Source = Is Empty" I use this for initial game imports that have not been updated by me manually. I always put the game URL in the Source field, and once I do, Source is no longer empty, the game should be automatically removed from this playlist. In 8.7, as soon as you saved a game with something in Source, it would be removed from the Playlist, but now when you save the game, it does not automatically remove itself.

I have tried many things, and the only way I have found to remove a game from a playlist is to modify the Auto-Populate settings of the playlist. If I change/add/remove a line, then save the Playlist, it updates the playlist to correctly remove the games that do not match.

Please let me know if you want me to test anything else for you. I really need this feature back, as I use this Playlist for an Automation script I wrote for updating newly imported games. Thank you.

Edited by fawkesyeah
Link to comment
Share on other sites

I had a similar issue to fawksyeah above - I was having to restart LB for the auto-populated playlists to update following edits to game metadata.

@Omen - you can remove the check mark from an auto-populated playlist to turn it into a normal one.

Haven’t tried the new auto-generated playlist feature yet, but it sounds excellent - particularly for regions. Does it include every game that “contains” a region, or does it give region exclusives? Would be nice to have an option to do both. 

Edited by Dan
Link to comment
Share on other sites

On 10/25/2018 at 12:24 AM, Jason Carr said:

Alright, beta 4 is out now with an overhaul for the auto-generated playlists:

image.thumb.png.ac257d11b6b0d8f4725dce9fa8c7c798.pngDetails:

  • Added Favorites playlist
  • Sorted All Games and Favorites playlists first using Sort Title
  • Added notes to Developers and Publishers that they're not recommended for performance reasons
  • Added an option to remove all existing auto-generated categories and playlists

Unfortunately, the new option to remove all existing auto-generated categories and playlists won't work for the playlists generated with the previous beta, since I added a new Auto-Generated field in order to handle it. The easiest way to remove the playlists generated by the previous beta is just to remove the playlist files from the LaunchBox\Data\Playlists folder while LaunchBox is closed. Going forward, you can use this dialog to remove them now as well.

I am not sure if this would help or how complicated this would be, but couldn't we have a sort of developers and publishers threshold that would only generate playlists for developers or publishers with more games than the threshold demands or something like this for the top 25 publishers / developers? All other games could then be summed up in a 'various' playlist.

This way it would be manageable to auto-generate these playlists without sacrificing the performance. On the other hand, this could be of course achieved by creating playlists and auto-populate them.

  • Like 1
Link to comment
Share on other sites

VLC!! @Jason Carr   I see that VLC in LB 9.0-Beta 4 is still at 2.2.6  any word on when 3.x would be used?   with the latest exploit that effects VLC. https://thehackernews.com/2018/10/critical-flaw-found-in-streaming.html

VideoLan as stated that this effects the client-side of VLC.  I see that VLC is still on 3.0.4 and not updated for the issue yet.  Is there a way to manually update VLC in LB.  I have tried a few times but get nothing but errors.

 

Thanks Jason for all of the great updates!

Link to comment
Share on other sites

I have VLC on my list.

@Scriven That's not a bad idea at all, though creating a "various" playlist for the rest would be a challenge because the auto-playlist would have to exclude a bunch of values. I feel like I need to focus on getting through the performance issues first though, as they're still a problem even without any developer and publisher playlists.

Link to comment
Share on other sites

could there be a way to introduce rom ripping from the mame set importer. so it deletes the roms that it doesnt add to my arcade platform (quiz, adult, mahjong, etc.) if not i cant seem to find a bat file to do this yet. i may be searching for it wrong.

 

Link to comment
Share on other sites

I get this error when scraping

 

Value cannot be null.
Parameter name: item

App:     LaunchBox
Version: 9.0-beta-4
Type:    System.ArgumentNullException
Site:    Int32 AddInternal(System.Object)
Source:  System.Windows.Forms

   at System.Windows.Forms.ListBox.ObjectCollection.AddInternal(Object item)
   at System.Windows.Forms.ListBox.ObjectCollection.Add(Object item)
   at Unbroken.LaunchBox.Desktop.Forms.ErrorsKeepForm..ctor(String text, String question, String[] errors)
   at (<>c__DisplayClass2_0 )
   at Unbroken.LaunchBox.Desktop.MenuActions.DownloadMetadataAndMediaMenuAction.<>c__DisplayClass2_0.<Finish>b__0()
   at System.Windows.Threading.DispatcherOperation.InvokeDelegateCore()
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority)
   at (Action , DispatcherPriority )
   at Unbroken.LaunchBox.Wpf.Threading.Invoke(Action callback, DispatcherPriority priority)
   at (DownloadMetadataTask )
   at Unbroken.LaunchBox.Desktop.MenuActions.DownloadMetadataAndMediaMenuAction.Finish(DownloadMetadataTask task)
   at (<>c__DisplayClass0_0 , Object )
   at Unbroken.LaunchBox.Desktop.MenuActions.DownloadMetadataAndMediaMenuAction.<>c__DisplayClass0_0.<OnSelect>b__1(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()

Recent Log:

   3:52:22 PM Music.Prepare Start
   3:52:22 PM Music.Kill Start
   3:52:22 PM Music.Kill Finished
   3:52:22 PM Music.NotifyTrackList Start
   3:52:22 PM Music.NotifyTrackList Invoke WPF
   4:05:12 PM Exception

Link to comment
Share on other sites

On 10/27/2018 at 11:39 AM, Wraithx said:

could there be a way to introduce rom ripping from the mame set importer. so it deletes the roms that it doesnt add to my arcade platform (quiz, adult, mahjong, etc.) if not i cant seem to find a bat file to do this yet. i may be searching for it wrong.

 

This is unfortunately an extremely complicated process due to how MAME uses ROMS, parent ROMs, etc. It's not as easy as just removing stuff that isn't directly referenced, because ROMs often require other ROMs. We may add this at some point, but it's not planned for the immediate future.

Link to comment
Share on other sites

21 hours ago, knightCrawler said:

I get this error when scraping

 

Value cannot be null.
Parameter name: item

App:     LaunchBox
Version: 9.0-beta-4
Type:    System.ArgumentNullException
Site:    Int32 AddInternal(System.Object)
Source:  System.Windows.Forms

   at System.Windows.Forms.ListBox.ObjectCollection.AddInternal(Object item)
   at System.Windows.Forms.ListBox.ObjectCollection.Add(Object item)
   at Unbroken.LaunchBox.Desktop.Forms.ErrorsKeepForm..ctor(String text, String question, String[] errors)
   at (<>c__DisplayClass2_0 )
   at Unbroken.LaunchBox.Desktop.MenuActions.DownloadMetadataAndMediaMenuAction.<>c__DisplayClass2_0.<Finish>b__0()
   at System.Windows.Threading.DispatcherOperation.InvokeDelegateCore()
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Windows.Threading.DispatcherOperation.Wait(TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherOperation operation, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority, CancellationToken cancellationToken, TimeSpan timeout)
   at System.Windows.Threading.Dispatcher.Invoke(Action callback, DispatcherPriority priority)
   at (Action , DispatcherPriority )
   at Unbroken.LaunchBox.Wpf.Threading.Invoke(Action callback, DispatcherPriority priority)
   at (DownloadMetadataTask )
   at Unbroken.LaunchBox.Desktop.MenuActions.DownloadMetadataAndMediaMenuAction.Finish(DownloadMetadataTask task)
   at (<>c__DisplayClass0_0 , Object )
   at Unbroken.LaunchBox.Desktop.MenuActions.DownloadMetadataAndMediaMenuAction.<>c__DisplayClass0_0.<OnSelect>b__1(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()

Recent Log:

   3:52:22 PM Music.Prepare Start
   3:52:22 PM Music.Kill Start
   3:52:22 PM Music.Kill Finished
   3:52:22 PM Music.NotifyTrackList Start
   3:52:22 PM Music.NotifyTrackList Invoke WPF
   4:05:12 PM Exception

 

15 hours ago, MadK9 said:

Got this error today scraping media.

image.thumb.png.351b4d3a65a11097a0fe751aee769061.png

 

9 hours ago, Asparky said:

I am also getting these same errors.....

Thanks guys; I have this error fixed for the next beta. Hopefully it will be out before the end of the day, if development goes well.

Link to comment
Share on other sites

Beta 5 is out now with a fix for the above error as well as the following:

- Improvement: A new ListCache.xml data file has been added that helps keep things running smoothly for collections with thousands of playlists

- Fixed: Incorrect counts could occasionally display in various places in LaunchBox and/or Big Box; this was previously due to hide games options not always being accounted for in game counts

- Fixed: Auto-populating playlists were sometimes not updating when game metadata changed

These changes are fairly significant; a lot of the codebase was touched, so testing is in order. That said, this should allow folks to have collections with multiple thousands of playlists without serious delays. The first time that LaunchBox and/or Big Box is started up after adding a bunch of playlists (or the first time you start up this beta), LaunchBox/Big Box may take a very long time to load, but subsequent startups should be quick.

The cache that I added has to be refreshed when changing the options to hide or show hidden or broken games, or games with missing media, so changing those options will force the cache to invalidate, which is likely to cause delays, but if it wasn't delaying in previous builds, the only reason for it is that things were not always updating properly.

Here is the basic strategy I used to implement this:

  • When the list of games is being displayed for a particular category or playlist, the results are never cached, and are always fully processed. Since the processing only needs to happen for one playlist or category, performance is not typically an issue. This resolves the issue with playlists not always updating properly when game metadata is changed.
     
  • When displaying the number of games for a playlist or a category, the count is cached. This count is automatically updated when the games are fully processed (such as when selecting this item in the sidebar and loading the games for it). However, it is assumed that the previous calculated count is accurate until the full games list is loaded for that category or playlist. This results in some rare cases where the counts in the sidebar may get temporarily out of date, but they should get updated when selecting that platform and loading the games for it.
     
  • LaunchBox and Big Box both maintain separate caches for the lists; this is because LaunchBox and Big Box can have separate settings for hiding and showing games.
  • Like 8
Link to comment
Share on other sites

16 hours ago, Jason Carr said:

Beta 5 is out now with a fix for the above error as well as the following:

- Improvement: A new ListCache.xml data file has been added that helps keep things running smoothly for collections with thousands of playlists

You are the man! My nearly 3 minute startup time is down to 15 seconds! You are a master at what you do. ?

  • Like 2
Link to comment
Share on other sites

14 hours ago, PattersonCZ said:

@Jason Carr a little request , please add dropdown menu with list of playlists to Add Game screen. I think it will not only me but for more people save few clicks. Thank you. I make playlists with my own personal genres because sometimes on steam or gamedb is wrong. 

Not a bad idea, though my list is getting pretty long at the moment, so it's not something I can tackle right away.

Link to comment
Share on other sites

Beta 6 is out now with the following:

  • New Feature: The "Clean Up Images" process that is available under the Tools menu in LaunchBox is now called "Clean Up Media" and has been overhauled to support cleaning up videos, manuals, and music as well
     
  • Improvement: When adding a new playlist underneath a platform, a line will now automatically be created to filter to only games for that platform when checking the box to make it an auto-populate playlist
     
  • Like 5
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...