From bd00472bcb9aa083cc5492d3a1aa073015165c8a Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Thu, 4 Jul 2024 13:06:27 +0200 Subject: [PATCH] (submit/cleanup-vidmode-dispatch) Xext: vidmode: simplify dispatcher These dispatcher functions are much more complex than they're usually are (just switch/case statement). Bring them in line with the standard scheme used in the Xserver, so further steps become easier. Signed-off-by: Enrico Weigelt, metux IT consult --- Xext/vidmode.c | 126 +++++++++++++++++++++++++++++-------------------- 1 file changed, 74 insertions(+), 52 deletions(-) diff --git a/Xext/vidmode.c b/Xext/vidmode.c index 0bee0549c..f32086a74 100644 --- a/Xext/vidmode.c +++ b/Xext/vidmode.c @@ -451,6 +451,10 @@ ProcVidModeAddModeLine(ClientPtr client) int dotClock; int ver; + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + DEBUG_P("XF86VidModeAddModeline"); ver = ClientMajorVersion(client); @@ -621,6 +625,10 @@ ProcVidModeDeleteModeLine(ClientPtr client) int len, dotClock; int ver; + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + DEBUG_P("XF86VidModeDeleteModeline"); ver = ClientMajorVersion(client); @@ -745,6 +753,10 @@ ProcVidModeModModeLine(ClientPtr client) int len, dotClock; int ver; + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + DEBUG_P("XF86VidModeModModeline"); ver = ClientMajorVersion(client); @@ -1006,6 +1018,10 @@ ProcVidModeSwitchMode(ClientPtr client) REQUEST_SIZE_MATCH(xXF86VidModeSwitchModeReq); + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1034,6 +1050,10 @@ ProcVidModeSwitchToMode(ClientPtr client) DEBUG_P("XF86VidModeSwitchToMode"); + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + ver = ClientMajorVersion(client); if (ver < 2) { @@ -1138,6 +1158,10 @@ ProcVidModeLockModeSwitch(ClientPtr client) DEBUG_P("XF86VidModeLockModeSwitch"); + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1301,6 +1325,10 @@ ProcVidModeSetViewPort(ClientPtr client) REQUEST_SIZE_MATCH(xXF86VidModeSetViewPortReq); + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1399,6 +1427,10 @@ ProcVidModeSetGamma(ClientPtr client) REQUEST_SIZE_MATCH(xXF86VidModeSetGammaReq); + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + if (stuff->screen >= screenInfo.numScreens) return BadValue; pScreen = screenInfo.screens[stuff->screen]; @@ -1466,6 +1498,10 @@ ProcVidModeSetGammaRamp(ClientPtr client) ScreenPtr pScreen; VidModePtr pVidMode; + /* limited to local-only connections */ + if (!VidModeAllowNonLocal && !client->local) + return VidModeErrorBase + XF86VidModeClientNotLocal; + REQUEST(xXF86VidModeSetGammaRampReq); REQUEST_AT_LEAST_SIZE(xXF86VidModeSetGammaRampReq); @@ -1673,33 +1709,26 @@ ProcVidModeDispatch(ClientPtr client) return ProcVidModeGetGammaRampSize(client); case X_XF86VidModeGetPermissions: return ProcVidModeGetPermissions(client); + case X_XF86VidModeAddModeLine: + return ProcVidModeAddModeLine(client); + case X_XF86VidModeDeleteModeLine: + return ProcVidModeDeleteModeLine(client); + case X_XF86VidModeModModeLine: + return ProcVidModeModModeLine(client); + case X_XF86VidModeSwitchMode: + return ProcVidModeSwitchMode(client); + case X_XF86VidModeSwitchToMode: + return ProcVidModeSwitchToMode(client); + case X_XF86VidModeLockModeSwitch: + return ProcVidModeLockModeSwitch(client); + case X_XF86VidModeSetViewPort: + return ProcVidModeSetViewPort(client); + case X_XF86VidModeSetGamma: + return ProcVidModeSetGamma(client); + case X_XF86VidModeSetGammaRamp: + return ProcVidModeSetGammaRamp(client); default: - if (VidModeAllowNonLocal || client->local) { - switch (stuff->data) { - case X_XF86VidModeAddModeLine: - return ProcVidModeAddModeLine(client); - case X_XF86VidModeDeleteModeLine: - return ProcVidModeDeleteModeLine(client); - case X_XF86VidModeModModeLine: - return ProcVidModeModModeLine(client); - case X_XF86VidModeSwitchMode: - return ProcVidModeSwitchMode(client); - case X_XF86VidModeSwitchToMode: - return ProcVidModeSwitchToMode(client); - case X_XF86VidModeLockModeSwitch: - return ProcVidModeLockModeSwitch(client); - case X_XF86VidModeSetViewPort: - return ProcVidModeSetViewPort(client); - case X_XF86VidModeSetGamma: - return ProcVidModeSetGamma(client); - case X_XF86VidModeSetGammaRamp: - return ProcVidModeSetGammaRamp(client); - default: - return BadRequest; - } - } - else - return VidModeErrorBase + XF86VidModeClientNotLocal; + return BadRequest; } } @@ -2063,33 +2092,26 @@ SProcVidModeDispatch(ClientPtr client) return SProcVidModeGetGammaRampSize(client); case X_XF86VidModeGetPermissions: return SProcVidModeGetPermissions(client); + case X_XF86VidModeAddModeLine: + return SProcVidModeAddModeLine(client); + case X_XF86VidModeDeleteModeLine: + return SProcVidModeDeleteModeLine(client); + case X_XF86VidModeModModeLine: + return SProcVidModeModModeLine(client); + case X_XF86VidModeSwitchMode: + return SProcVidModeSwitchMode(client); + case X_XF86VidModeSwitchToMode: + return SProcVidModeSwitchToMode(client); + case X_XF86VidModeLockModeSwitch: + return SProcVidModeLockModeSwitch(client); + case X_XF86VidModeSetViewPort: + return SProcVidModeSetViewPort(client); + case X_XF86VidModeSetGamma: + return SProcVidModeSetGamma(client); + case X_XF86VidModeSetGammaRamp: + return SProcVidModeSetGammaRamp(client); default: - if (VidModeAllowNonLocal || client->local) { - switch (stuff->data) { - case X_XF86VidModeAddModeLine: - return SProcVidModeAddModeLine(client); - case X_XF86VidModeDeleteModeLine: - return SProcVidModeDeleteModeLine(client); - case X_XF86VidModeModModeLine: - return SProcVidModeModModeLine(client); - case X_XF86VidModeSwitchMode: - return SProcVidModeSwitchMode(client); - case X_XF86VidModeSwitchToMode: - return SProcVidModeSwitchToMode(client); - case X_XF86VidModeLockModeSwitch: - return SProcVidModeLockModeSwitch(client); - case X_XF86VidModeSetViewPort: - return SProcVidModeSetViewPort(client); - case X_XF86VidModeSetGamma: - return SProcVidModeSetGamma(client); - case X_XF86VidModeSetGammaRamp: - return SProcVidModeSetGammaRamp(client); - default: - return BadRequest; - } - } - else - return VidModeErrorBase + XF86VidModeClientNotLocal; + return BadRequest; } }