Jump to content
LaunchBox Community Forums
Jason Carr

9.0-beta-1 Released

Recommended Posts

 

52 minutes ago, Dan said:

You’d be wrong! 

before this new feature was released I would definitely say its a fringe case just because a few users maybe on the fringe doesn't change that. It's probably still fringe at this point.

Share this post


Link to post
Share on other sites

@Jason Carr I've noticed if I disable Auto Populate in each playlist there is a significant startup speed increase. I tried bulk disabling it for each playlist with Notepad++ but I noticed the games aren't saved then, and Auto Populate must be disabled from within LB in order to save the currently populated games. Would it be possible to add an Auto Populate check mark, and if left unchecked then LB would created the playlists, populate them, but not enable Auto Populate for those playlists? It seems populating the playlists at every launch is causing huge startup delays.

Share this post


Link to post
Share on other sites
Just now, DOS76 said:

 

before this new feature was released I would definitely say its a fringe case just because a few users maybe on the fringe doesn't change that. It's probably still fringe at this point.

Before this feature was released I only had about 75 playlists. With this feature I don't think 1000+ playlists will be fringe at all.

Share this post


Link to post
Share on other sites

I can't say for sure how users will use it in the future but with the feature currently in early beta I doubt many users have yet to go quite that far.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Yeah arguing whether something is fringe case or not is pointless.

I would just say leave the option in with a giant popup banner warning people that too many playlists will cause performance issues and long startup times.

giphy.gif

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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!

Share this post


Link to post
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.

Share this post


Link to post
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.

 

Share this post


Link to post
Share on other sites

@Jason Carr

Question: Are the Community Star Ratings supposed to work with Arrange By = Star Rating? When I try to arrange them by, they won't be Arranged by at all. They are all mixed in my playlist. They all appear in "Not rated". Just wondering if this was intended?

BTW, yes, I did tick the option "Use the Community Star Rating when Filtering or Arranging by Star Rating".

EDIT: OK, I get it now. When you set the minimum number of Community Ratings, all ratings below that limit will be moved to "Not rated".

Issue solved :)

Edited by faydesmee
  • Like 1

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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
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...