UltraStar-Deluxe / Play

Free and open source singing game with song editor for desktop, mobile, and smart TV
https://ultrastar-play.com
MIT License
393 stars 73 forks source link

CultureNotFoundException when trying to browse for song folder #472

Open AnsisMalins opened 2 weeks ago

AnsisMalins commented 2 weeks ago

Issue type: Bug report

Actual behaviour

When I click on the folder button in Song Folders, no file browser dialog is opened. When I look at the console, I see

CultureNotFoundException: Culture ID 8192 (0x2000) is not a supported culture.
Parameter name: culture
System.Globalization.CultureInfo..ctor (System.Int32 culture, System.Boolean useUserOverride, System.Boolean read_only) (at <8d5ef054c27c4b94bf100f8d26466ac6>:0)
System.Globalization.CultureInfo.GetCultureInfo (System.Int32 culture) (at <8d5ef054c27c4b94bf100f8d26466ac6>:0)
System.Windows.Forms.InputLanguage.get_InstalledInputLanguages () (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.InputLanguage.FromCulture (System.Globalization.CultureInfo culture) (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.InputLanguage.get_CurrentInputLanguage () (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.Application..cctor () (at <4aab8eccdded4736adb682c54e921d0b>:0)
Rethrow as TypeInitializationException: The type initializer for 'System.Windows.Forms.Application' threw an exception.
System.Windows.Forms.Form.Dispose (System.Boolean disposing) (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.ComponentModel.Component.Finalize () (at <f31eb757adc148968c878f72f18b04ee>:0)
Rethrow as TypeInitializationException: The type initializer for 'System.Windows.Forms.ThemeEngine' threw an exception.
System.Windows.Forms.SystemInformation.get_MenuAccessKeysUnderlined () (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.Control..ctor () (at <4aab8eccdded4736adb682c54e921d0b>:0)
(wrapper remoting-invoke-with-check) System.Windows.Forms.Control..ctor()
System.Windows.Forms.WindowsFormsSynchronizationContext..cctor () (at <4aab8eccdded4736adb682c54e921d0b>:0)
Rethrow as TypeInitializationException: The type initializer for 'System.Windows.Forms.WindowsFormsSynchronizationContext' threw an exception.
System.Windows.Forms.WindowsFormsSynchronizationContext.get_AutoInstall () (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.Control..ctor () (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.ScrollableControl..ctor () (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.ContainerControl..ctor () (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.Form..ctor () (at <4aab8eccdded4736adb682c54e921d0b>:0)
System.Windows.Forms.CommonDialog+DialogForm..ctor (System.Windows.Forms.CommonDialog owner) (at <4aab8eccdded4736adb682c54e921d0b>:0)
(wrapper remoting-invoke-with-check) System.Windows.Forms.CommonDialog+DialogForm..ctor(System.Windows.Forms.CommonDialog)
System.Windows.Forms.FolderBrowserDialog..ctor () (at <4aab8eccdded4736adb682c54e921d0b>:0)
(wrapper remoting-invoke-with-check) System.Windows.Forms.FolderBrowserDialog..ctor()
SFB.StandaloneFileBrowserWindows.OpenFolderPanel (System.String title, System.String directory, System.Boolean multiselect) (at Assets/Plugins/UnityStandaloneFileBrowser/StandaloneFileBrowser/StandaloneFileBrowserWindows.cs:57)
SFB.StandaloneFileBrowser.OpenFolderPanel (System.String title, System.String directory, System.Boolean multiselect) (at Assets/Plugins/UnityStandaloneFileBrowser/StandaloneFileBrowser/StandaloneFileBrowser.cs:88)
FileSystemDialogUtils.OpenFolderDialog (System.String title, System.String directory) (at Assets/Common/FileSystemDialogUtils.cs:70)
SongFolderListEntryControl.OpenSelectFolderDialog () (at Assets/Scenes/Options/SongLibraryOptions/SongFolderListEntryControl.cs:153)
SongFolderListEntryControl.<OnInjectionFinished>b__32_1 (UnityEngine.UIElements.EventBase _) (at Assets/Scenes/Options/SongLibraryOptions/SongFolderListEntryControl.cs:108)
UnityEngine.UIElements.EventCallbackFunctor`1[TEventType].Invoke (UnityEngine.UIElements.EventBase evt) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventCallbackRegistry+DynamicCallbackList.Invoke (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel, UnityEngine.UIElements.VisualElement target) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatchUtilities.HandleEvent_BubbleUpCallbacks (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel, UnityEngine.UIElements.VisualElement element) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatchUtilities.HandleEventAcrossPropagationPath (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel, UnityEngine.UIElements.VisualElement target, System.Boolean isCapturingTarget) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatchUtilities.PropagateEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel, UnityEngine.UIElements.VisualElement target, System.Boolean isCapturingTarget) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatchUtilities.DispatchToCachedElementUnderPointerOrPanelRoot (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel, System.Int32 pointerId, UnityEngine.Vector2 position) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatchUtilities.DispatchToCapturingElementOrElementUnderPointer (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel, System.Int32 pointerId, UnityEngine.Vector2 position) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.PointerEventBase`1[T].Dispatch (UnityEngine.UIElements.BaseVisualElementPanel panel) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEventQueue () (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatcher.OpenGate () (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatcherGate.Dispose () (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatcher.ProcessEvent (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.EventDispatcher.Dispatch (UnityEngine.UIElements.EventBase evt, UnityEngine.UIElements.BaseVisualElementPanel panel, UnityEngine.UIElements.DispatchMode dispatchMode) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.BaseVisualElementPanel.SendEvent (UnityEngine.UIElements.EventBase e, UnityEngine.UIElements.DispatchMode dispatchMode) (at <ae359e179ec04ddbbf723b49755560ed>:0)
UnityEngine.UIElements.PanelEventHandler.SendEvent (UnityEngine.UIElements.EventBase e, UnityEngine.EventSystems.BaseEventData sourceEventData) (at ./Library/PackageCache/com.unity.ugui@2.0.0/Runtime/UGUI/EventSystem/UIElements/PanelEventHandler.cs:268)
UnityEngine.UIElements.PanelEventHandler.OnPointerUp (UnityEngine.EventSystems.PointerEventData eventData) (at ./Library/PackageCache/com.unity.ugui@2.0.0/Runtime/UGUI/EventSystem/UIElements/PanelEventHandler.cs:135)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerUpHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at ./Library/PackageCache/com.unity.ugui@2.0.0/Runtime/UGUI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at ./Library/PackageCache/com.unity.ugui@2.0.0/Runtime/UGUI/EventSystem/ExecuteEvents.cs:272)
UnityEngine.DebugLogHandler:LogException(Exception, Object)
CustomUnityLogHandler:LogException(Exception, Object) (at ./Packages/playshared/Runtime/Logging/Log.cs:429)
UnityEngine.EventSystems.EventSystem:Update() (at ./Library/PackageCache/com.unity.ugui@2.0.0/Runtime/UGUI/EventSystem/EventSystem.cs:530)

Expected behaviour

File browser dialog should open.

Steps to reproduce

Details

Implementation hints

I question the wisdom of copy-pasting System.Windows.Forms.dll into Assets. It's not hard to call the Win32 API directly.

AnsisMalins commented 2 weeks ago

Something, something, locales without LCIDs, whatever that means, allegedly a bug in .NET or dunno: https://github.com/CBLoader/CBLoader/issues/52