Jump to content
LaunchBox Community Forums

11.18 Beta Testing


faeran

Recommended Posts

Hi everyone. The 11.18 Beta 1 is now out with the following changes:

  • New Feature: Filtering games in LaunchBox is now much more flexible; you can filter to pretty much anything on the fly with the new filter button in the left-hand sidebar, next to the search box
  • New Feature: Anything you filter on the fly with the above new feature can be easily saved to a dynamic playlist
  • Improvement: Performance while selecting games in LaunchBox is now faster due to improvements in populating the game details sidebar
  • Fixed: Login screen would immediately close when checking "Force New Login" in the XBOX import wizard if you had previously logged in
  • Fixed: The ROM import wizard wasn't always importing all games when using MAME metadata (the full-set importer was unaffected)
  • Fixed: The keyboard focus border wasn't being drawn correctly in LaunchBox's Grid View with the default theme (recently introduced)
  • Fixed: Big Box CoverFlow views can once again use "Box" as image type in addition to "Boxes" (recently introduced theme compatibility issue that was affecting some older themes)

 

Thanks for the help with beta testing LaunchBox.

  • Like 8
Link to comment
Share on other sites

11 hours ago, faeran said:

Hi everyone. The 11.18 Beta 1 is now out with the following changes:

  • New Feature: Filtering games in LaunchBox is now much more flexible; you can filter to pretty much anything on the fly with the new filter button in the left-hand sidebar, next to the search box
  • New Feature: Anything you filter on the fly with the above new feature can be easily saved to a dynamic playlist
  • Improvement: Performance while selecting games in LaunchBox is now faster due to improvements in populating the game details sidebar
  • Fixed: Login screen would immediately close when checking "Force New Login" in the XBOX import wizard if you had previously logged in
  • Fixed: The ROM import wizard wasn't always importing all games when using MAME metadata (the full-set importer was unaffected)
  • Fixed: The keyboard focus border wasn't being drawn correctly in LaunchBox's Grid View with the default theme (recently introduced)
  • Fixed: Big Box CoverFlow views can once again use "Box" as image type in addition to "Boxes" (recently introduced theme compatibility issue that was affecting some older themes)

 

Thanks for the help with beta testing LaunchBox.

Wow! But it's a shame that the new filtering feature doesn't work with other LB themes. I tried this latest beta with the default theme and it works great, but it's not available in the LBPlex theme, which is the one I almost always use

Link to comment
Share on other sites

4 hours ago, bundangdon said:

Wow! But it's a shame that the new filtering feature doesn't work with other LB themes. I tried this latest beta with the default theme and it works great, but it's not available in the LBPlex theme, which is the one I almost always use

Yeah, unfortunately the theme developers who made Launchbox themes will need to update the theme to include the new button.

Drop this in the LBPlex theme's \Views folder. It has the button added.

 

SideBarView.xaml

  • Thanks 2
Link to comment
Share on other sites

17 hours ago, faeran said:

the new filter button

This is a SWEET feature!!  Love it!

And since we're only in Beta...

Getting an error that forces LaunchBox to close (after clicking Close on the error message box).  After selecting a Platform (say Atari 2600) and clicking the Filter icon (without selecting anything) then click on a different Platform (NES [arbitrary selection]), Filter icon (again, no selection), select Arcade, filter icon... so far so good...  Select All Platforms, Filter icon (still not selecting a specific filter) then select Arcade (again) and click the Filter icon, an error message pops up.

Spoiler


Index was outside the bounds of the array.

App:     LaunchBox
Version: 11.18-beta-1
Type:    System.IndexOutOfRangeException
Site:    System.Windows.LocalValueEnumerator GetLocalValueEnumerator()
Source:  WindowsBase

   at System.Windows.DependencyObject.GetLocalValueEnumerator()
   at System.Windows.TreeWalkHelper.InvalidateResourceReferences(DependencyObject d, ResourcesChangeInfo info)
   at System.Windows.TreeWalkHelper.OnResourcesChanged(DependencyObject d, ResourcesChangeInfo info, Boolean raiseResourceChangedEvent)
   at System.Windows.FrameworkElement.OnAncestorChangedInternal(TreeChangeInfo parentTreeState)
   at System.Windows.TreeWalkHelper.OnAncestorChanged(DependencyObject d, TreeChangeInfo info, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at MS.Internal.PrePostDescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at MS.Internal.PrePostDescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1.StartWalk(DependencyObject startNode, Boolean skipStartNode)
   at MS.Internal.PrePostDescendentsWalker`1.StartWalk(DependencyObject startNode, Boolean skipStartNode)
   at System.Windows.TreeWalkHelper.InvalidateOnTreeChange(FrameworkElement fe, FrameworkContentElement fce, DependencyObject parent, Boolean isAddOperation)
   at System.Windows.FrameworkElement.ChangeLogicalParent(DependencyObject newParent)
   at System.Windows.FrameworkElement.AddLogicalChild(Object child)
   at System.Windows.Controls.Primitives.Popup.OnChildChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Controls.Primitives.Popup.CreateRootPopupInternal(Popup popup, UIElement child, Boolean bindTreatMousePlacementAsBottomProperty)
   at System.Windows.Controls.ContextMenu.HookupParentPopup()
   at System.Windows.Controls.ContextMenu.OnIsOpenChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Controls.ContextMenu.set_IsOpen(Boolean value)
   at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass86_1.PushSimpleStruct(Object , Boolean )
   at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass86_1.PublishInvalidTemplate()
   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.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 Unbroken.LaunchBox.Windows.Threading.PatchMetaGlobal(Object , Object , DispatcherPriority )
   at Unbroken.LaunchBox.Windows.Threading.Invoke(Action callback, DispatcherPriority priority)
   at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass86_0.CountInvalidTemplate()
   at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.ListTraversalReg(Object )
   at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.InitIdentifiableDispatcher()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()

Recent Log:

   6:12:31 AM Exception

There may have been a few more Platform/Filter clicks in there, but the error would appear with the Arcade Platform (and then clicking the Filter icon).  Again, it did not do it every time when selecting Arcade, then clicking Filter.  But always the 'last time'. ;)  It also seemed to happen after going from All to Arcade. (possibly coincidence)

Tested using the Default theme and on 2 different PC's (2 separate LB installs).

Debug 2021-09-02 06-10-32 AM.log

 

 

Link to comment
Share on other sites

5 minutes ago, C-Beats said:

Thanks for the heads up @JoeViking245, sounds like @faeran was able to replicate so I'll take a look at it and get that fixed for next version.

Course as I say that now neither of us can get it to do it again... Probably related to multi-threading. Are you seeing it often @JoeViking245 or it a hit/miss sorta thing?

Link to comment
Share on other sites

56 minutes ago, C-Beats said:

Are you seeing it often or it a hit/miss sorta thing?

I'm seeing it happen more hit than miss but have narrowed it down to only 2 Platforms that it happens on.  Arcade and Sega Model 3.  It seemed (for a minute) that if I clicked on Sega Model 3 and then selected a game, let it populate the right sidebar, then click the Filter icon, it would work (not error). But that's probably all phycological as that 'technique' didn't consistently continue to work.  But it did a couple times.  

So it is hit or miss, but only on the 2 Platforms.  But seems I can 'easily' [often] make it hit again.

Link to comment
Share on other sites

Beta 2 is out now with the following changes:

  • Improvement: Added Complete, Favorite, and Installed fields to the new filter button
  • Fixed: The filter button's "Save to Playlist" feature should now work with all sidebar drop-down filters
  • Fixed: Added the new filter button to the "Old Default" theme
  • Like 5
Link to comment
Share on other sites

22 hours ago, Retro808 said:

Yeah, unfortunately the theme developers who made Launchbox themes will need to update the theme to include the new button.

Drop this in the LBPlex theme's \Views folder. It has the button added.

 

SideBarView.xaml 43.47 kB · 11 downloads

Is this universally applicable? I tried doing so with Rincewind but it messes up the theme.

Link to comment
Share on other sites

If you click the filter button before searching for anything you get an error.

Straight from loading LB i mean, if you've previously searched for something it doesn't happen.

Spoiler

Index was outside the bounds of the array.

App:     LaunchBox
Version: 11.18-beta-2
Type:    System.IndexOutOfRangeException
Site:    System.Windows.LocalValueEnumerator GetLocalValueEnumerator()
Source:  WindowsBase

   at System.Windows.DependencyObject.GetLocalValueEnumerator()
   at System.Windows.TreeWalkHelper.InvalidateResourceReferences(DependencyObject d, ResourcesChangeInfo info)
   at System.Windows.TreeWalkHelper.OnResourcesChanged(DependencyObject d, ResourcesChangeInfo info, Boolean raiseResourceChangedEvent)
   at System.Windows.FrameworkElement.OnAncestorChangedInternal(TreeChangeInfo parentTreeState)
   at System.Windows.TreeWalkHelper.OnAncestorChanged(DependencyObject d, TreeChangeInfo info, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at MS.Internal.PrePostDescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.VisitNode(FrameworkElement fe, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at MS.Internal.PrePostDescendentsWalker`1._VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.VisitNode(FrameworkElement fe, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.VisitNode(DependencyObject d, Boolean visitedViaVisualTree)
   at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1.StartWalk(DependencyObject startNode, Boolean skipStartNode)
   at MS.Internal.PrePostDescendentsWalker`1.StartWalk(DependencyObject startNode, Boolean skipStartNode)
   at System.Windows.TreeWalkHelper.InvalidateOnTreeChange(FrameworkElement fe, FrameworkContentElement fce, DependencyObject parent, Boolean isAddOperation)
   at System.Windows.FrameworkElement.ChangeLogicalParent(DependencyObject newParent)
   at System.Windows.FrameworkElement.AddLogicalChild(Object child)
   at System.Windows.Controls.Primitives.Popup.OnChildChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Controls.Primitives.Popup.CreateRootPopupInternal(Popup popup, UIElement child, Boolean bindTreatMousePlacementAsBottomProperty)
   at System.Windows.Controls.ContextMenu.HookupParentPopup()
   at System.Windows.Controls.ContextMenu.OnIsOpenChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at System.Windows.Controls.ContextMenu.set_IsOpen(Boolean value)
   at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass87_1.IncludeRemoteSystem(Object , Boolean )
   at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass87_1.WriteIterableObject()
   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.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 Unbroken.LaunchBox.Windows.Threading.DefineStatelessProcess(Object , Object , DispatcherPriority )
   at Unbroken.LaunchBox.Windows.Threading.Invoke(Action callback, DispatcherPriority priority)
   at Unbroken.LaunchBox.Windows.Desktop.ViewModels.SideBarViewModel.<>c__DisplayClass87_0.AssetIterableObject()
   at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.CloneConcreteReg(Object )
   at Unbroken.LaunchBox.Windows.Threading.<>c__DisplayClass0_0.AssetCompositeCandidate()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.ThreadHelper.ThreadStart()

Recent Log:

   13:48:14 Exception

 

Edited by Rlad
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...