File tree Expand file tree Collapse file tree 2 files changed +37
-2
lines changed
Expand file tree Collapse file tree 2 files changed +37
-2
lines changed Original file line number Diff line number Diff 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 ... ,
Original file line number Diff line number Diff line change 11package player
22
33import (
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+ }
You can’t perform that action at this time.
0 commit comments