From 3bbe3781c87860ad0f9088ff8cbbb5b6e8fda525 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Fri, 15 Jan 2021 17:30:19 +0100 Subject: [PATCH] set screen size using struct. --- internal/api/room/screen.go | 17 +++++++++++------ internal/config/desktop.go | 4 ++-- internal/desktop/xorg.go | 12 ++++++------ internal/desktop/xorg/xorg.go | 4 ++-- internal/types/desktop.go | 2 +- internal/types/message/messages.go | 2 +- internal/websocket/handler/screen.go | 6 +++++- internal/websocket/handler/system.go | 4 ++-- 8 files changed, 30 insertions(+), 21 deletions(-) diff --git a/internal/api/room/screen.go b/internal/api/room/screen.go index 06a3b729..a14f22c7 100644 --- a/internal/api/room/screen.go +++ b/internal/api/room/screen.go @@ -3,15 +3,16 @@ package room import ( "net/http" + "demodesk/neko/internal/types" "demodesk/neko/internal/types/event" "demodesk/neko/internal/types/message" "demodesk/neko/internal/utils" ) type ScreenConfigurationPayload struct { - Width int `json:"width"` - Height int `json:"height"` - Rate int `json:"rate"` + Width int `json:"width"` + Height int `json:"height"` + Rate int16 `json:"rate"` } func (h *RoomHandler) screenConfiguration(w http.ResponseWriter, r *http.Request) { @@ -25,7 +26,7 @@ func (h *RoomHandler) screenConfiguration(w http.ResponseWriter, r *http.Request utils.HttpSuccess(w, ScreenConfigurationPayload{ Width: size.Width, Height: size.Height, - Rate: int(size.Rate), + Rate: size.Rate, }) } @@ -35,7 +36,11 @@ func (h *RoomHandler) screenConfigurationChange(w http.ResponseWriter, r *http.R return } - if err := h.desktop.ChangeScreenSize(data.Width, data.Height, data.Rate); err != nil { + if err := h.desktop.SetScreenSize(types.ScreenSize{ + Width: data.Width, + Height: data.Height, + Rate: data.Rate, + }); err != nil { utils.HttpUnprocessableEntity(w, err) return } @@ -60,7 +65,7 @@ func (h *RoomHandler) screenConfigurationsList(w http.ResponseWriter, r *http.Re list = append(list, ScreenConfigurationPayload{ Width: size.Width, Height: size.Height, - Rate: int(fps), + Rate: fps, }) } } diff --git a/internal/config/desktop.go b/internal/config/desktop.go index bd484b05..f67daace 100644 --- a/internal/config/desktop.go +++ b/internal/config/desktop.go @@ -11,7 +11,7 @@ import ( type Desktop struct { ScreenWidth int ScreenHeight int - ScreenRate int + ScreenRate int16 } func (Desktop) Init(cmd *cobra.Command) error { @@ -39,7 +39,7 @@ func (s *Desktop) Set() { if err1 == nil && err2 == nil && err3 == nil { s.ScreenWidth = int(width) s.ScreenHeight = int(height) - s.ScreenRate = int(rate) + s.ScreenRate = int16(rate) } } } diff --git a/internal/desktop/xorg.go b/internal/desktop/xorg.go index 6fd2c8f2..f1c1dd4e 100644 --- a/internal/desktop/xorg.go +++ b/internal/desktop/xorg.go @@ -40,11 +40,7 @@ func (manager *DesktopManagerCtx) ScreenConfigurations() map[int]types.ScreenCon return xorg.ScreenConfigurations } -func (manager *DesktopManagerCtx) GetScreenSize() *types.ScreenSize { - return xorg.GetScreenSize() -} - -func (manager *DesktopManagerCtx) ChangeScreenSize(width int, height int, rate int) error { +func (manager *DesktopManagerCtx) SetScreenSize(size types.ScreenSize) error { mu.Lock() manager.emmiter.Emit("before_screen_size_change") @@ -53,7 +49,11 @@ func (manager *DesktopManagerCtx) ChangeScreenSize(width int, height int, rate i mu.Unlock() }() - return xorg.ChangeScreenSize(width, height, rate) + return xorg.ChangeScreenSize(size.Width, size.Height, size.Rate) +} + +func (manager *DesktopManagerCtx) GetScreenSize() *types.ScreenSize { + return xorg.GetScreenSize() } func (manager *DesktopManagerCtx) SetKeyboardMap(kbd types.KeyboardMap) error { diff --git a/internal/desktop/xorg/xorg.go b/internal/desktop/xorg/xorg.go index 6649d93e..22a745f6 100644 --- a/internal/desktop/xorg/xorg.go +++ b/internal/desktop/xorg/xorg.go @@ -167,14 +167,14 @@ func CheckKeys(duration time.Duration) { } } -func ChangeScreenSize(width int, height int, rate int) error { +func ChangeScreenSize(width int, height int, rate int16) error { mu.Lock() defer mu.Unlock() for index, size := range ScreenConfigurations { if size.Width == width && size.Height == height { for _, fps := range size.Rates { - if int16(rate) == fps { + if rate == fps { C.XSetScreenConfiguration(C.int(index), C.short(fps)) return nil } diff --git a/internal/types/desktop.go b/internal/types/desktop.go index 0f1e646c..a0aaad3b 100644 --- a/internal/types/desktop.go +++ b/internal/types/desktop.go @@ -38,7 +38,6 @@ type DesktopManager interface { OnAfterScreenSizeChange(listener func()) // xorg - ChangeScreenSize(width int, height int, rate int) error Move(x, y int) Scroll(x, y int) ButtonDown(code int) error @@ -47,6 +46,7 @@ type DesktopManager interface { KeyUp(code uint64) error ResetKeys() ScreenConfigurations() map[int]ScreenConfiguration + SetScreenSize(ScreenSize) error GetScreenSize() *ScreenSize SetKeyboardMap(KeyboardMap) error GetKeyboardMap() (*KeyboardMap, error) diff --git a/internal/types/message/messages.go b/internal/types/message/messages.go index c1fd0d13..fe31194c 100644 --- a/internal/types/message/messages.go +++ b/internal/types/message/messages.go @@ -116,7 +116,7 @@ type ScreenSize struct { Event string `json:"event,omitempty"` Width int `json:"width"` Height int `json:"height"` - Rate int `json:"rate"` + Rate int16 `json:"rate"` } ///////////////////////////// diff --git a/internal/websocket/handler/screen.go b/internal/websocket/handler/screen.go index 5aa5da14..1062d46b 100644 --- a/internal/websocket/handler/screen.go +++ b/internal/websocket/handler/screen.go @@ -12,7 +12,11 @@ func (h *MessageHandlerCtx) screenSet(session types.Session, payload *message.Sc return nil } - if err := h.desktop.ChangeScreenSize(payload.Width, payload.Height, payload.Rate); err != nil { + if err := h.desktop.SetScreenSize(types.ScreenSize{ + Width: payload.Width, + Height: payload.Height, + Rate: payload.Rate, + }); err != nil { return err } diff --git a/internal/websocket/handler/system.go b/internal/websocket/handler/system.go index 4f08831d..f9bdf978 100644 --- a/internal/websocket/handler/system.go +++ b/internal/websocket/handler/system.go @@ -55,7 +55,7 @@ func (h *MessageHandlerCtx) systemInit(session types.Session) error { ScreenSize: message.ScreenSize{ Width: size.Width, Height: size.Height, - Rate: int(size.Rate), + Rate: size.Rate, }, Members: members, ImplicitHosting: h.sessions.ImplicitHosting(), @@ -70,7 +70,7 @@ func (h *MessageHandlerCtx) systemAdmin(session types.Session) error { screenSizesList = append(screenSizesList, message.ScreenSize{ Width: size.Width, Height: size.Height, - Rate: int(fps), + Rate: fps, }) } }