From 8dea30751d5917482527489ca292714a7874f42c Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Fri, 11 Jan 2019 23:25:39 +0100 Subject: Screen.c: move identical line out of both parts of an if clause --- nx-X11/programs/Xserver/hw/nxagent/Screen.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'nx-X11/programs/Xserver/hw/nxagent/Screen.c') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c index d8cf695a0..1af621570 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c @@ -1011,6 +1011,8 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, resetAgentPosition = True; } + nxagentChangeOption(BorderWidth, 0); + if (nxagentOption(Fullscreen)) { nxagentChangeOption(X, 0); @@ -1019,7 +1021,6 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, nxagentChangeOption(Width, WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay))); nxagentChangeOption(Height, HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay))); - nxagentChangeOption(BorderWidth, 0); if (nxagentReconnectTrap == False || nxagentResizeDesktopAtStartup) { @@ -1052,8 +1053,6 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, } else { - nxagentChangeOption(BorderWidth, 0); - if (nxagentReconnectTrap == False) { nxagentChangeOption(RootX, 0); -- cgit v1.2.3 From 43d3b655d4f158203b3e39025a3cafc314ba9ad7 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 13 Jan 2019 23:46:49 +0100 Subject: Screen.c: improve readability of size calculations ... by using some short named variables and the min() macro. No change in behaviour. --- nx-X11/programs/Xserver/hw/nxagent/Screen.c | 122 +++++++++++++--------------- 1 file changed, 57 insertions(+), 65 deletions(-) (limited to 'nx-X11/programs/Xserver/hw/nxagent/Screen.c') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c index 1af621570..cfe0fd9de 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c @@ -885,8 +885,7 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, #endif /* - * Forced geometry parameter - * to user geometry. + * Forced geometry parameter to user geometry. */ if (nxagentResizeDesktopAtStartup) @@ -903,32 +902,26 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, if (nxagentUserGeometry.flag & WidthValue) { - nxagentChangeOption(Width, nxagentUserGeometry.Width); - nxagentChangeOption(RootWidth, nxagentUserGeometry.Width); + int uw = nxagentUserGeometry.Width; - if (nxagentOption(SavedWidth) > nxagentUserGeometry.Width) - { - nxagentChangeOption(SavedWidth, nxagentUserGeometry.Width); - } + nxagentChangeOption(Width, uw); + nxagentChangeOption(RootWidth, uw); + nxagentChangeOption(SavedWidth, min(nxagentOption(SavedWidth), uw)); } if (nxagentUserGeometry.flag & HeightValue) { - nxagentChangeOption(Height, nxagentUserGeometry.Height); - nxagentChangeOption(RootHeight, nxagentUserGeometry.Height); + int uh = nxagentUserGeometry.Height; - if (nxagentOption(SavedHeight) > nxagentUserGeometry.Height) - { - nxagentChangeOption(SavedHeight, nxagentUserGeometry.Height); - } + nxagentChangeOption(Height, uh); + nxagentChangeOption(RootHeight, uh); + nxagentChangeOption(SavedHeight, min(nxagentOption(SavedHeight), uh)); } } /* - * This is first time the - * screen is initialized. - * Filling the geometry parameter - * from user geometry. + * This is first time the screen is initialized. + * Filling the geometry parameter from user geometry. */ if (nxagentReconnectTrap == False) @@ -971,10 +964,8 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, } /* - * Determine the size of the root window. - * It is the maximum size of the screen - * if we are either in rootless or in - * fullscreen mode. + * Determine the size of the root window. It is the maximum size of + * the screen if we are either in rootless or in fullscreen mode. */ if (nxagentOption(Rootless) == False && !nxagentWMIsRunning) @@ -1013,46 +1004,58 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, nxagentChangeOption(BorderWidth, 0); + /* get the screen size of the real X server once */ + int w = WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay)); + int h = HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay)); + if (nxagentOption(Fullscreen)) { nxagentChangeOption(X, 0); nxagentChangeOption(Y, 0); - nxagentChangeOption(Width, WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay))); - nxagentChangeOption(Height, HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay))); - + nxagentChangeOption(Width, w); + nxagentChangeOption(Height, h); + /* first time screen initialization or resize during reconnect */ if (nxagentReconnectTrap == False || nxagentResizeDesktopAtStartup) { - nxagentChangeOption(RootWidth, WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay))); - nxagentChangeOption(RootHeight, HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay))); + nxagentChangeOption(RootWidth, w); + nxagentChangeOption(RootHeight, h); - if (nxagentOption(RootWidth) > WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay))) + if (nxagentOption(RootWidth) > w) { - nxagentChangeOption(SavedWidth, WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay)) * 3 / 4); + nxagentChangeOption(SavedWidth, w * 3 / 4); } else { nxagentChangeOption(SavedWidth, nxagentOption(RootWidth)); } - if (nxagentOption(RootHeight) > HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay))) + if (nxagentOption(RootHeight) > h) { - nxagentChangeOption(SavedHeight, HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay)) * 3 / 4); + nxagentChangeOption(SavedHeight, h * 3 / 4); } else { nxagentChangeOption(SavedHeight, nxagentOption(RootHeight)); } - } - nxagentChangeOption(RootX, ((WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay)) - - nxagentOption(RootWidth)) / 2)); - nxagentChangeOption(RootY, ((HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay)) - - nxagentOption(RootHeight)) / 2)); + nxagentChangeOption(RootX, 0); + nxagentChangeOption(RootY, 0); + } + else + { + /* center */ + nxagentChangeOption(RootX, (w - nxagentOption(RootWidth)) / 2); + nxagentChangeOption(RootY, (h - nxagentOption(RootHeight)) / 2); + } } else { + /* + * screen is initialized for the first time + */ + if (nxagentReconnectTrap == False) { nxagentChangeOption(RootX, 0); @@ -1063,53 +1066,44 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, } /* - * Be sure that the agent window won't be bigger + * Ensure that the agent window won't be bigger * than the root window. */ - if (nxagentOption(Width) > nxagentOption(RootWidth)) - { - nxagentChangeOption(Width, nxagentOption(RootWidth)); - } - - if (nxagentOption(Height) > nxagentOption(RootHeight)) - { - nxagentChangeOption(Height, nxagentOption(RootHeight)); - } + nxagentChangeOption(Width, min(nxagentOption(Width), nxagentOption(RootWidth))); + nxagentChangeOption(Height, min(nxagentOption(Height), nxagentOption(RootHeight))); /* * Be sure that the agent window won't be bigger * than the X server root window. */ - if (nxagentOption(Width) > WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay))) + if (nxagentOption(Width) > w) { - nxagentChangeOption(Width, WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay)) * 3 / 4); + nxagentChangeOption(Width, w * 3 / 4); } - if (nxagentOption(Height) > HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay))) + if (nxagentOption(Height) > h) { - nxagentChangeOption(Height, HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay)) * 3 / 4); + nxagentChangeOption(Height, h * 3 / 4); } /* - * Forcing the agent window geometry to be equal to - * the root window geometry the first time the - * screen is initialized if the geometry hasn't been - * esplicitly set in the option file and if - * the root window isn't bigger than the X server - * root window.. + * Forcing the agent window geometry to be equal to the root + * window geometry the first time the screen is initialized if the + * geometry hasn't been explicitly set in the option file and if + * the root window isn't bigger than the X server root window.. */ if (nxagentReconnectTrap == False) { - if ((nxagentOption(RootWidth) < WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay))) && + if ((nxagentOption(RootWidth) < w) && !(nxagentUserGeometry.flag & WidthValue)) { nxagentChangeOption(Width, nxagentOption(RootWidth)); } - if ((nxagentOption(RootHeight) < HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay))) && + if ((nxagentOption(RootHeight) < h) && !(nxagentUserGeometry.flag & HeightValue)) { nxagentChangeOption(Height, nxagentOption(RootHeight)); @@ -1118,11 +1112,9 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, if (resetAgentPosition) { - nxagentChangeOption(X, ((WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay)) - - nxagentOption(Width)) / 2)); - - nxagentChangeOption(Y, ((HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay)) - - nxagentOption(Height)) / 2)); + /* center */ + nxagentChangeOption(X, (w - nxagentOption(Width)) / 2); + nxagentChangeOption(Y, (h - nxagentOption(Height)) / 2); } nxagentChangeOption(SavedWidth, nxagentOption(RootWidth)); @@ -1131,8 +1123,8 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, if (nxagentOption(Rootless)) { - nxagentChangeOption(RootWidth, WidthOfScreen(DefaultScreenOfDisplay(nxagentDisplay))); - nxagentChangeOption(RootHeight, HeightOfScreen(DefaultScreenOfDisplay(nxagentDisplay))); + nxagentChangeOption(RootWidth, w); + nxagentChangeOption(RootHeight, h); } nxagentChangeOption(SavedRootWidth, nxagentOption(RootWidth)); -- cgit v1.2.3 From 3c92b5db9d3d90967410c4dc1d1f8a45554c724b Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 13 Jan 2019 23:47:53 +0100 Subject: Screen.c: fix size calculation in rootless mode There's no need to reduce the size to 75% in rootless mode. We always want to have the full size then. Fixes ArcticaProject/nx-libs#757 (Part 2/2) --- nx-X11/programs/Xserver/hw/nxagent/Screen.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'nx-X11/programs/Xserver/hw/nxagent/Screen.c') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c index cfe0fd9de..bd0236ad4 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c @@ -1080,12 +1080,26 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, if (nxagentOption(Width) > w) { - nxagentChangeOption(Width, w * 3 / 4); + if (nxagentOption(Rootless)) + { + nxagentChangeOption(Width, w); + } + else + { + nxagentChangeOption(Width, w * 3 / 4); + } } if (nxagentOption(Height) > h) { - nxagentChangeOption(Height, h * 3 / 4); + if (nxagentOption(Rootless)) + { + nxagentChangeOption(Height, h); + } + else + { + nxagentChangeOption(Height, h * 3 / 4); + } } /* -- cgit v1.2.3 From d16a5fbb19c072b667be76633bc3f23f12ca82ef Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 12 Jan 2019 01:01:55 +0100 Subject: Screen.c: fix handling of fullscreen startup If nxagent is started in fullscreen mode take care the saved size (that is applied on exit of the fullscreen mode) will be configured correctly. Also respect a user provided -geometry option (had been ignored here previously). Fixes ArcticaProject/nx-libs#449 --- nx-X11/programs/Xserver/hw/nxagent/Screen.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'nx-X11/programs/Xserver/hw/nxagent/Screen.c') diff --git a/nx-X11/programs/Xserver/hw/nxagent/Screen.c b/nx-X11/programs/Xserver/hw/nxagent/Screen.c index bd0236ad4..19057dfe1 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Screen.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Screen.c @@ -1019,10 +1019,7 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, /* first time screen initialization or resize during reconnect */ if (nxagentReconnectTrap == False || nxagentResizeDesktopAtStartup) { - nxagentChangeOption(RootWidth, w); - nxagentChangeOption(RootHeight, h); - - if (nxagentOption(RootWidth) > w) + if (nxagentOption(RootWidth) >= w) { nxagentChangeOption(SavedWidth, w * 3 / 4); } @@ -1031,7 +1028,7 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, nxagentChangeOption(SavedWidth, nxagentOption(RootWidth)); } - if (nxagentOption(RootHeight) > h) + if (nxagentOption(RootHeight) >= h) { nxagentChangeOption(SavedHeight, h * 3 / 4); } @@ -1040,6 +1037,9 @@ Bool nxagentOpenScreen(ScreenPtr pScreen, nxagentChangeOption(SavedHeight, nxagentOption(RootHeight)); } + nxagentChangeOption(RootWidth, w); + nxagentChangeOption(RootHeight, h); + nxagentChangeOption(RootX, 0); nxagentChangeOption(RootY, 0); } -- cgit v1.2.3