...

Source file src/edge-infra.dev/pkg/sds/display/displaymanager/manager/xorg/xorg_manager.go

Documentation: edge-infra.dev/pkg/sds/display/displaymanager/manager/xorg

     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  // Returns a new DisplayManager, which provides methods for interfacing with Xorg.
    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