Skip to content

Commit 1a6cf19

Browse files
committed
Merge branch 'refs/heads/goat/master' into otter/master
# Conflicts: # lib/FFXIVClientStructs
2 parents ae404a5 + e2a18de commit 1a6cf19

File tree

16 files changed

+426
-432
lines changed

16 files changed

+426
-432
lines changed

Dalamud/Dalamud.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<PropertyGroup Label="Feature">
88
<Description>XIV Launcher addon framework</Description>
9-
<DalamudVersion>14.0.0.1</DalamudVersion>
9+
<DalamudVersion>14.0.0.2</DalamudVersion>
1010
<AssemblyVersion>$(DalamudVersion)</AssemblyVersion>
1111
<Version>$(DalamudVersion)</Version>
1212
<FileVersion>$(DalamudVersion)</FileVersion>

Dalamud/Game/ClientState/Party/PartyMember.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Dalamud.Game.ClientState.Objects.Types;
77
using Dalamud.Game.ClientState.Statuses;
88
using Dalamud.Game.Text.SeStringHandling;
9+
using Dalamud.Utility;
910

1011
using Lumina.Excel;
1112

@@ -124,6 +125,7 @@ internal unsafe readonly struct PartyMember(CSPartyMember* ptr) : IPartyMember
124125
public Vector3 Position => ptr->Position;
125126

126127
/// <inheritdoc/>
128+
[Api15ToDo("Change type to ulong.")]
127129
public long ContentId => (long)ptr->ContentId;
128130

129131
/// <inheritdoc/>

Dalamud/Game/Gui/ChatGui.cs

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
using Lumina.Text.Payloads;
2727
using Lumina.Text.ReadOnly;
2828

29-
using LSeStringBuilder = Lumina.Text.SeStringBuilder;
3029
using SeString = Dalamud.Game.Text.SeStringHandling.SeString;
3130
using SeStringBuilder = Dalamud.Game.Text.SeStringHandling.SeStringBuilder;
3231

@@ -207,21 +206,21 @@ public void UpdateQueue()
207206
if (this.chatQueue.Count == 0)
208207
return;
209208

210-
var sb = LSeStringBuilder.SharedPool.Get();
209+
using var rssb = new RentedSeStringBuilder();
211210
Span<byte> namebuf = stackalloc byte[256];
212211
using var sender = new Utf8String();
213212
using var message = new Utf8String();
214213
while (this.chatQueue.TryDequeue(out var chat))
215214
{
216-
sb.Clear();
215+
rssb.Builder.Clear();
217216
foreach (var c in UtfEnumerator.From(chat.MessageBytes, UtfEnumeratorFlags.Utf8SeString))
218217
{
219218
if (c.IsSeStringPayload)
220-
sb.Append((ReadOnlySeStringSpan)chat.MessageBytes.AsSpan(c.ByteOffset, c.ByteLength));
219+
rssb.Builder.Append((ReadOnlySeStringSpan)chat.MessageBytes.AsSpan(c.ByteOffset, c.ByteLength));
221220
else if (c.Value.IntValue == 0x202F)
222-
sb.BeginMacro(MacroCode.NonBreakingSpace).EndMacro();
221+
rssb.Builder.BeginMacro(MacroCode.NonBreakingSpace).EndMacro();
223222
else
224-
sb.Append(c);
223+
rssb.Builder.Append(c);
225224
}
226225

227226
if (chat.NameBytes.Length + 1 < namebuf.Length)
@@ -235,7 +234,7 @@ public void UpdateQueue()
235234
sender.SetString(chat.NameBytes.NullTerminate());
236235
}
237236

238-
message.SetString(sb.GetViewAsSpan());
237+
message.SetString(rssb.Builder.GetViewAsSpan());
239238

240239
var targetChannel = chat.Type ?? this.configuration.GeneralChatType;
241240

@@ -247,8 +246,6 @@ public void UpdateQueue()
247246
chat.Timestamp,
248247
(byte)(chat.Silent ? 1 : 0));
249248
}
250-
251-
LSeStringBuilder.SharedPool.Return(sb);
252249
}
253250

254251
/// <summary>
@@ -326,29 +323,28 @@ private void PrintTagged(SeString message, XivChatType channel, string? tag, ush
326323

327324
private void PrintTagged(ReadOnlySpan<byte> message, XivChatType channel, string? tag, ushort? color)
328325
{
329-
var sb = LSeStringBuilder.SharedPool.Get();
326+
using var rssb = new RentedSeStringBuilder();
330327

331328
if (!tag.IsNullOrEmpty())
332329
{
333330
if (color is not null)
334331
{
335-
sb.PushColorType(color.Value);
336-
sb.Append($"[{tag}] ");
337-
sb.PopColorType();
332+
rssb.Builder
333+
.PushColorType(color.Value)
334+
.Append($"[{tag}] ")
335+
.PopColorType();
338336
}
339337
else
340338
{
341-
sb.Append($"[{tag}] ");
339+
rssb.Builder.Append($"[{tag}] ");
342340
}
343341
}
344342

345343
this.Print(new XivChatEntry
346344
{
347-
MessageBytes = sb.Append((ReadOnlySeStringSpan)message).ToArray(),
345+
MessageBytes = rssb.Builder.Append((ReadOnlySeStringSpan)message).ToArray(),
348346
Type = channel,
349347
});
350-
351-
LSeStringBuilder.SharedPool.Return(sb);
352348
}
353349

354350
private void InventoryItemCopyDetour(InventoryItem* thisPtr, InventoryItem* otherPtr)
@@ -457,15 +453,16 @@ private void HandleLinkClickDetour(LogViewer* thisPtr, LinkData* linkData)
457453

458454
Log.Verbose($"InteractableLinkClicked: {Payload.EmbeddedInfoType.DalamudLink}");
459455

460-
var sb = LSeStringBuilder.SharedPool.Get();
456+
using var rssb = new RentedSeStringBuilder();
457+
461458
try
462459
{
463460
var seStringSpan = new ReadOnlySeStringSpan(linkData->Payload);
464461

465462
// read until link terminator
466463
foreach (var payload in seStringSpan)
467464
{
468-
sb.Append(payload);
465+
rssb.Builder.Append(payload);
469466

470467
if (payload.Type == ReadOnlySePayloadType.Macro &&
471468
payload.MacroCode == MacroCode.Link &&
@@ -477,7 +474,7 @@ private void HandleLinkClickDetour(LogViewer* thisPtr, LinkData* linkData)
477474
}
478475
}
479476

480-
var seStr = SeString.Parse(sb.ToArray());
477+
var seStr = SeString.Parse(rssb.Builder.ToArray());
481478
if (seStr.Payloads.Count == 0 || seStr.Payloads[0] is not DalamudLinkPayload link)
482479
return;
483480

@@ -495,10 +492,6 @@ private void HandleLinkClickDetour(LogViewer* thisPtr, LinkData* linkData)
495492
{
496493
Log.Error(ex, "Exception in HandleLinkClickDetour");
497494
}
498-
finally
499-
{
500-
LSeStringBuilder.SharedPool.Return(sb);
501-
}
502495
}
503496
}
504497

Dalamud/Game/Internal/DalamudCompletion.cs

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
using FFXIVClientStructs.FFXIV.Component.Completion;
1313
using FFXIVClientStructs.FFXIV.Component.GUI;
1414

15-
using Lumina.Text;
16-
1715
namespace Dalamud.Game.Internal;
1816

1917
/// <summary>
@@ -271,16 +269,14 @@ private class EntryStrings : IDisposable
271269
{
272270
public EntryStrings(string command)
273271
{
274-
var rssb = SeStringBuilder.SharedPool.Get();
272+
using var rssb = new RentedSeStringBuilder();
275273

276-
this.Display = Utf8String.FromSequence(rssb
274+
this.Display = Utf8String.FromSequence(rssb.Builder
277275
.PushColorType(539)
278276
.Append(command)
279277
.PopColorType()
280278
.GetViewAsSpan());
281279

282-
SeStringBuilder.SharedPool.Return(rssb);
283-
284280
this.Match = Utf8String.FromString(command);
285281
}
286282

0 commit comments

Comments
 (0)