...
1 package xorg
2
3 import (
4 "time"
5
6 "github.com/go-logr/logr"
7 "sigs.k8s.io/controller-runtime/pkg/client"
8
9 "edge-infra.dev/pkg/sds/display/constants"
10 "edge-infra.dev/pkg/sds/display/displaymanager/applier"
11 xorgapplier "edge-infra.dev/pkg/sds/display/displaymanager/applier/xorg"
12 "edge-infra.dev/pkg/sds/display/displaymanager/applier/xorg/command/runner"
13 "edge-infra.dev/pkg/sds/display/displaymanager/manager"
14 "edge-infra.dev/pkg/sds/display/displaymanager/reader"
15 xorgreader "edge-infra.dev/pkg/sds/display/displaymanager/reader/xorg"
16 "edge-infra.dev/pkg/sds/display/displaymanager/waiter"
17 xorgwaiter "edge-infra.dev/pkg/sds/display/displaymanager/waiter/xorg"
18 v2 "edge-infra.dev/pkg/sds/display/k8s/apis/v2"
19 "edge-infra.dev/pkg/sds/lib/xorg"
20 "edge-infra.dev/pkg/sds/lib/xorg/dpms"
21 "edge-infra.dev/pkg/sds/lib/xorg/xinput"
22 "edge-infra.dev/pkg/sds/lib/xorg/xrandr"
23 )
24
25 var (
26 minWaitTime = time.Second * time.Duration(3)
27 timeout = time.Second * time.Duration(30)
28 )
29
30 type displayManager struct {
31 hostname string
32 socket string
33
34 waiter.DisplayWaiter
35 reader.DisplayReader
36 applier.DisplayApplier
37 }
38
39
40 func NewXorgDisplayManager(hostname string, c client.Client, log logr.Logger) manager.DisplayManager {
41 outputIDs := map[v2.DisplayPort]xorg.OutputID{}
42 inputIDs := map[v2.InputDeviceName][]xorg.InputDeviceID{}
43
44 displayWaiter := xorgwaiter.NewXorgDisplayWaiter(xrandr.NewXrandr(), minWaitTime, timeout)
45 displayReader := xorgreader.NewXorgDisplayReader(outputIDs, inputIDs, xrandr.NewXrandr(), xinput.NewXinput(), dpms.NewDPMS(), c, log)
46 displayApplier := xorgapplier.NewXorgDisplayApplier(outputIDs, inputIDs, runner.NewCommandRunner())
47
48 return &displayManager{
49 hostname: hostname,
50 socket: constants.X11Socket,
51 DisplayWaiter: displayWaiter,
52 DisplayReader: displayReader,
53 DisplayApplier: displayApplier,
54 }
55 }
56
57 func (x *displayManager) Hostname() string {
58 return x.hostname
59 }
60
61 func (x *displayManager) Socket() string {
62 return x.socket
63 }
64
View as plain text