Skip to content

Commit 65d9221

Browse files
committed
fix: quick scrolling through lots of previews
1 parent 602f5ea commit 65d9221

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

pkg/replay/loader/module.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,16 @@ func (l *Loader) Init() tea.Cmd {
5151
}
5252
}
5353

54+
ctx := l.Lifetime.Ctx()
55+
5456
events := make([]sessions.Event, 0)
5557
for {
58+
if ctx.Err() != nil {
59+
return loadedEvent{
60+
err: ctx.Err(),
61+
}
62+
}
63+
5664
event, err := reader.Read()
5765
if err == io.EOF || err == io.ErrUnexpectedEOF {
5866
break
@@ -65,10 +73,16 @@ func (l *Loader) Init() tea.Cmd {
6573
events = append(events, event)
6674
}
6775

68-
ctx := l.Lifetime.Ctx()
76+
p, err := player.FromEventsContext(ctx, events)
77+
if err != nil {
78+
return loadedEvent{
79+
err: err,
80+
}
81+
}
82+
6983
replay := replay.New(
7084
ctx,
71-
player.FromEvents(events),
85+
p,
7286
l.timeBinds,
7387
l.copyBinds,
7488
l.options...,

pkg/replay/player/module.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package player
22

33
import (
4+
"context"
5+
46
"github.com/cfoust/cy/pkg/emu"
57
"github.com/cfoust/cy/pkg/geom"
68
"github.com/cfoust/cy/pkg/geom/tty"
@@ -183,3 +185,22 @@ func FromEvents(events []sessions.Event) *Player {
183185

184186
return player
185187
}
188+
189+
// FromEventsContext creates a Player from the given events, but stops if the
190+
// context is cancelled.
191+
func FromEventsContext(
192+
ctx context.Context,
193+
events []sessions.Event,
194+
) (*Player, error) {
195+
player := New()
196+
197+
for _, event := range events {
198+
if ctx.Err() != nil {
199+
return nil, ctx.Err()
200+
}
201+
202+
player.Process(event)
203+
}
204+
205+
return player, nil
206+
}

0 commit comments

Comments
 (0)