1
0
mirror of https://github.com/ppy/osu.git synced 2024-09-22 11:27:24 +08:00

Finding peace with the UI thread.

There is the issue that in some cases that the ui thread blocked.
This commit is contained in:
miterosan 2018-07-24 04:56:34 +02:00
parent 16db81e9b5
commit 55f0cbf63e
3 changed files with 21 additions and 20 deletions

View File

@ -48,8 +48,10 @@ namespace osu.Game.Overlays.Chat
}
public void AddItem(Channel channel)
{
ChannelTabControl.AddItem(channel);
{
if (!ChannelTabControl.Items.Contains(channel))
ChannelTabControl.AddItem(channel);
if (Current.Value == null)
Current.Value = channel;
}

View File

@ -55,15 +55,11 @@ namespace osu.Game.Overlays.Chat
Channel.PendingMessageResolved += pendingMessageResolved;
}
[BackgroundDependencyLoader]
private void load()
{
newMessagesArrived(Channel.Messages);
}
protected override void LoadComplete()
{
base.LoadComplete();
newMessagesArrived(Channel.Messages);
scrollToEnd();
}

View File

@ -125,23 +125,26 @@ namespace osu.Game.Overlays.Chat.Selection
public void UpdateAvailableChannels(IEnumerable<Channel> channels)
{
sectionsFlow.ChildrenEnumerable = new[]
Scheduler.Add(() =>
{
new ChannelSection
sectionsFlow.ChildrenEnumerable = new[]
{
Header = "All Channels",
Channels = channels,
},
};
new ChannelSection
{
Header = "All Channels",
Channels = channels,
},
};
foreach (ChannelSection s in sectionsFlow.Children)
{
foreach (ChannelListItem c in s.ChannelFlow.Children)
foreach (ChannelSection s in sectionsFlow.Children)
{
c.OnRequestJoin = channel => { OnRequestJoin?.Invoke(channel); };
c.OnRequestLeave = channel => { OnRequestLeave?.Invoke(channel); };
foreach (ChannelListItem c in s.ChannelFlow.Children)
{
c.OnRequestJoin = channel => { OnRequestJoin?.Invoke(channel); };
c.OnRequestLeave = channel => { OnRequestLeave?.Invoke(channel); };
}
}
}
});
}
[BackgroundDependencyLoader]