diff --git a/src/device/input/input.go b/src/device/input/input.go index c3ca210..c0d449f 100644 --- a/src/device/input/input.go +++ b/src/device/input/input.go @@ -13,8 +13,8 @@ type Input interface { } func New(ctx context.Context) Input { - src := raw.New(ctx) return wrap.New(ctx, func() button.Parser { + src := raw.New(ctx) return button.New(ctx, src) }) } diff --git a/src/device/input/wrap/refresh.go b/src/device/input/wrap/refresh.go index a2a5e9a..c4b3978 100644 --- a/src/device/input/wrap/refresh.go +++ b/src/device/input/wrap/refresh.go @@ -33,7 +33,10 @@ func NewRefresh(newWrap func() Wrap, ch <-chan os.Signal) *Refresh { return case sig := <-ch: log.Println("refreshing for", sig) - result.input = newWrap() + newInput := newWrap() + oldInput := result.input + result.input = newInput + oldInput.Close() } } }()