diff --git a/go.mod b/go.mod index 1f8b606..62c5726 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ toolchain go1.22.3 // The original go-yaml is very slow, using the improved version instead replace github.com/goccy/go-yaml v1.11.3 => github.com/yoelsusanto/go-yaml v0.0.0-20240324162521-2018c1ab915b -replace github.com/andreykaipov/goobs v1.4.1 => github.com/xaionaro-go/goobs v0.0.0-20241009130652-ffb0e76ad260 +replace github.com/andreykaipov/goobs v1.4.1 => github.com/xaionaro-go/goobs v0.0.0-20241018191659-49be16b2ceb5 replace github.com/adrg/libvlc-go/v3 v3.1.5 => github.com/xaionaro-go/libvlc-go/v3 v3.0.0-20241011194409-0fe4e2a9d901 @@ -97,7 +97,6 @@ require ( github.com/gookit/color v1.5.4 // indirect github.com/gopherjs/gopherjs v1.17.2 // indirect github.com/gorilla/websocket v1.5.3 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/logutils v1.0.0 // indirect github.com/huandu/go-tls v0.0.0-20200109070953-6f75fb441850 // indirect @@ -196,6 +195,7 @@ require ( github.com/go-ng/xmath v0.0.0-20230704233441-028f5ea62335 github.com/go-yaml/yaml v2.1.0+incompatible github.com/google/uuid v1.6.0 + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/iancoleman/strcase v0.3.0 github.com/immune-gmbh/attestation-sdk v0.0.0-20230711173209-f44e4502aeca github.com/kbinani/screenshot v0.0.0-20230812210009-b87d31814237 diff --git a/go.sum b/go.sum index 496ecc9..251bd87 100644 --- a/go.sum +++ b/go.sum @@ -296,6 +296,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -636,8 +638,8 @@ github.com/xaionaro-go/fyne/v2 v2.0.0-20241012203222-61bfd3b898c0 h1:lo0cD3peJmJ github.com/xaionaro-go/fyne/v2 v2.0.0-20241012203222-61bfd3b898c0/go.mod h1:NdxEG8L7EVWo06/cYbXW11uA0X7UG8Q8j5CLebvTZi8= github.com/xaionaro-go/go-rtmp v0.0.0-20241009130244-1e3160f27f42 h1:izCjREd+62HDF9FRYqUI7dgJNdUxAIysEuqed8lBcDY= github.com/xaionaro-go/go-rtmp v0.0.0-20241009130244-1e3160f27f42/go.mod h1:IuQWd+hy/tLuvuqFX0N9SMZrzOprM8Jvvdu+42RJwk4= -github.com/xaionaro-go/goobs v0.0.0-20241009130652-ffb0e76ad260 h1:STXxNNT8jACezKWU28xJExwkrvmRb6+kwYz9rwl08Tk= -github.com/xaionaro-go/goobs v0.0.0-20241009130652-ffb0e76ad260/go.mod h1:yuYqusq3i5Jp69QYaSYU5mY3xE1cKZGixm2B49k7uks= +github.com/xaionaro-go/goobs v0.0.0-20241018191659-49be16b2ceb5 h1:mGbap4wNdYQjnY5LAHcU0kEcQHFuzvcB2hReE1IDLDU= +github.com/xaionaro-go/goobs v0.0.0-20241018191659-49be16b2ceb5/go.mod h1:yuYqusq3i5Jp69QYaSYU5mY3xE1cKZGixm2B49k7uks= github.com/xaionaro-go/gorex v0.0.0-20241010205749-bcd59d639c4d h1:9DyH0lboWWzKUwiqGmp9sTZ3bSPhgJHiiWgV+hqY9Uo= github.com/xaionaro-go/gorex v0.0.0-20241010205749-bcd59d639c4d/go.mod h1:yI0EvHC6Ir5WIZp3tEk7o42/QqeTb9pkII+T8p4FlPo= github.com/xaionaro-go/libvlc-go/v3 v3.0.0-20241011194409-0fe4e2a9d901 h1:HX0CO6h5oDQfp9NquzQT0xWH4Gn9Z5BZ0IFJrYFl88k= diff --git a/pkg/streamd/events.go b/pkg/streamd/events.go index 1006e05..b61ff6b 100644 --- a/pkg/streamd/events.go +++ b/pkg/streamd/events.go @@ -38,8 +38,8 @@ func (d *StreamD) submitEvent( ctx context.Context, ev event.Event, ) error { - logger.Debugf(ctx, "submitEvent(ctx, %s)", spew.Sdump(ev)) - defer logger.Debugf(ctx, "/submitEvent(ctx, %#v)", spew.Sdump(ev)) + logger.Tracef(ctx, "submitEvent(ctx, %s)", spew.Sdump(ev)) + defer logger.Tracef(ctx, "/submitEvent(ctx, %#v)", spew.Sdump(ev)) exprCtx := objToMap(ev) for _, rule := range d.Config.TriggerRules { if rule.EventQuery.Match(ev) { @@ -58,7 +58,9 @@ func (d *StreamD) doAction( ctx context.Context, a action.Action, exprCtx any, -) error { +) (_err error) { + logger.Debugf(ctx, "doAction: %s %#+v", a, exprCtx) + defer func() { logger.Debugf(ctx, "/doAction: %s %#+v: %v", a, exprCtx, _err) }() switch a := a.(type) { case *action.Noop: return nil diff --git a/pkg/streampanel/events.go b/pkg/streampanel/events.go index 2dfa54e..df724d6 100644 --- a/pkg/streampanel/events.go +++ b/pkg/streampanel/events.go @@ -82,8 +82,8 @@ func (es *eventSensor) submitEventWindowFocusChange( ev windowmanagerhandler.WindowFocusChange, submitEventer submitEventer, ) error { - logger.Debugf(ctx, "submitEventWindowFocusChange(ctx, %s)", spew.Sdump(ev)) - defer logger.Debugf(ctx, "/submitEventWindowFocusChange(ctx, %#v)", spew.Sdump(ev)) + logger.Tracef(ctx, "submitEventWindowFocusChange(ctx, %s)", spew.Sdump(ev)) + defer logger.Tracef(ctx, "/submitEventWindowFocusChange(ctx, %#v)", spew.Sdump(ev)) var err *multierror.Error diff --git a/pkg/streampanel/panel.go b/pkg/streampanel/panel.go index 6034ac6..c01c863 100644 --- a/pkg/streampanel/panel.go +++ b/pkg/streampanel/panel.go @@ -1918,7 +1918,13 @@ func (p *Panel) initMainWindow( streamInfoContainer, ) + var prevScene string p.obsSelectScene = widget.NewSelect(nil, func(s string) { + if s == prevScene { + logger.Debugf(ctx, "OBS scene remained to be '%s'", s) + return + } + prevScene = s logger.Debugf(ctx, "OBS scene is changed to '%s'", s) obsServer, obsServerClose, err := p.StreamD.OBS(ctx) if obsServerClose != nil { diff --git a/pkg/windowmanagerhandler/window_manager_handler_linux_xserver.go b/pkg/windowmanagerhandler/window_manager_handler_linux_xserver.go index 7d1ec50..6be12ca 100644 --- a/pkg/windowmanagerhandler/window_manager_handler_linux_xserver.go +++ b/pkg/windowmanagerhandler/window_manager_handler_linux_xserver.go @@ -59,6 +59,10 @@ func (wmh *XWindowManagerHandler) WindowFocusChangeChan(ctx context.Context) <-c continue } + if clientID == 0 { + continue + } + if clientID == prevClientID { continue } @@ -66,19 +70,19 @@ func (wmh *XWindowManagerHandler) WindowFocusChangeChan(ctx context.Context) <-c name, err := ewmh.WmNameGet(wmh.XUtil, clientID) if err != nil { - logger.Errorf(ctx, "unable to get the name of the active window (%d): %w", clientID, err) + logger.Errorf(ctx, "unable to get the name of the active window (%d): %v", clientID, err) continue } pid, err := ewmh.WmPidGet(wmh.XUtil, clientID) if err != nil { - logger.Errorf(ctx, "unable to get the PID of the active window (%d): %w", clientID, err) + logger.Errorf(ctx, "unable to get the PID of the active window (%d): %v", clientID, err) continue } proc, err := process.NewProcess(int32(pid)) if err != nil { - logger.Errorf(ctx, "unable to get process info of the active window (%d) using PID %d: %w", clientID, pid, err) + logger.Errorf(ctx, "unable to get process info of the active window (%d) using PID %d: %v", clientID, pid, err) continue }