1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-11 20:07:29 +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) public void AddItem(Channel channel)
{ {
ChannelTabControl.AddItem(channel); if (!ChannelTabControl.Items.Contains(channel))
ChannelTabControl.AddItem(channel);
if (Current.Value == null) if (Current.Value == null)
Current.Value = channel; Current.Value = channel;
} }

View File

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

View File

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