mirror of
https://github.com/ppy/osu.git
synced 2024-11-06 06:17:23 +08:00
Schedule adding transforms on tablet changes
Fixes `InvalidThreadForMutationException`s that pop up when disconnecting/reconnecting tablets during the game's operation. In those cases the value change callback executes from an OpenTabletDriver thread.
This commit is contained in:
parent
b9b351311a
commit
d28bed6ed2
@ -125,17 +125,20 @@ namespace osu.Game.Overlays.Settings.Sections.Input
|
||||
}, true);
|
||||
|
||||
tablet.BindTo(handler.Tablet);
|
||||
tablet.BindValueChanged(val =>
|
||||
{
|
||||
tabletContainer.Size = val.NewValue?.Size ?? Vector2.Zero;
|
||||
tabletName.Text = val.NewValue?.Name ?? string.Empty;
|
||||
checkBounds();
|
||||
}, true);
|
||||
tablet.BindValueChanged(_ => Scheduler.AddOnce(updateTabletDetails));
|
||||
|
||||
updateTabletDetails();
|
||||
// initial animation should be instant.
|
||||
FinishTransforms(true);
|
||||
}
|
||||
|
||||
private void updateTabletDetails()
|
||||
{
|
||||
tabletContainer.Size = tablet.Value?.Size ?? Vector2.Zero;
|
||||
tabletName.Text = tablet.Value?.Name ?? string.Empty;
|
||||
checkBounds();
|
||||
}
|
||||
|
||||
private static int greatestCommonDivider(int a, int b)
|
||||
{
|
||||
while (b != 0)
|
||||
|
@ -196,19 +196,13 @@ namespace osu.Game.Overlays.Settings.Sections.Input
|
||||
tablet.BindTo(tabletHandler.Tablet);
|
||||
tablet.BindValueChanged(val =>
|
||||
{
|
||||
Scheduler.AddOnce(toggleVisibility);
|
||||
|
||||
var tab = val.NewValue;
|
||||
|
||||
bool tabletFound = tab != null;
|
||||
|
||||
if (!tabletFound)
|
||||
{
|
||||
mainSettings.Hide();
|
||||
noTabletMessage.Show();
|
||||
return;
|
||||
}
|
||||
|
||||
mainSettings.Show();
|
||||
noTabletMessage.Hide();
|
||||
|
||||
offsetX.MaxValue = tab.Size.X;
|
||||
offsetX.Default = tab.Size.X / 2;
|
||||
@ -222,6 +216,21 @@ namespace osu.Game.Overlays.Settings.Sections.Input
|
||||
}, true);
|
||||
}
|
||||
|
||||
private void toggleVisibility()
|
||||
{
|
||||
bool tabletFound = tablet.Value != null;
|
||||
|
||||
if (!tabletFound)
|
||||
{
|
||||
mainSettings.Hide();
|
||||
noTabletMessage.Show();
|
||||
return;
|
||||
}
|
||||
|
||||
mainSettings.Show();
|
||||
noTabletMessage.Hide();
|
||||
}
|
||||
|
||||
private void applyAspectRatio(BindableNumber<float> sizeChanged)
|
||||
{
|
||||
try
|
||||
|
Loading…
Reference in New Issue
Block a user