Xext: saver: use explicit switch/case for dispatching

It's more robust / easier understandable programming style to use explicit
switch statements, case'ing on the constants defined in the protocol header,
instead of implicitly via a some opaque call table. It's also done this
way in the other extensions, so making the code a bit more consistent.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591>
This commit is contained in:
Enrico Weigelt, metux IT consult 2024-07-08 12:42:07 +02:00 committed by Marge Bot
parent 40469a9d51
commit 8236ef3b56

View File

@ -1247,22 +1247,27 @@ ProcScreenSaverSuspend(ClientPtr client)
return Success; return Success;
} }
static int (*NormalVector[]) (ClientPtr /* client */ ) = {
ProcScreenSaverQueryVersion,
ProcScreenSaverQueryInfo,
ProcScreenSaverSelectInput,
ProcScreenSaverSetAttributes,
ProcScreenSaverUnsetAttributes, ProcScreenSaverSuspend,};
static int static int
ProcScreenSaverDispatch(ClientPtr client) ProcScreenSaverDispatch(ClientPtr client)
{ {
REQUEST(xReq); REQUEST(xReq);
switch (stuff->data) {
if (stuff->data < ARRAY_SIZE(NormalVector)) case X_ScreenSaverQueryVersion:
return (*NormalVector[stuff->data]) (client); return ProcScreenSaverQueryVersion(client);
case X_ScreenSaverQueryInfo:
return ProcScreenSaverQueryInfo(client);
case X_ScreenSaverSelectInput:
return ProcScreenSaverSelectInput(client);
case X_ScreenSaverSetAttributes:
return ProcScreenSaverSetAttributes(client);
case X_ScreenSaverUnsetAttributes:
return ProcScreenSaverUnsetAttributes(client);
case X_ScreenSaverSuspend:
return ProcScreenSaverSuspend(client);
default:
return BadRequest; return BadRequest;
} }
}
static int _X_COLD static int _X_COLD
SProcScreenSaverQueryInfo(ClientPtr client) SProcScreenSaverQueryInfo(ClientPtr client)
@ -1318,22 +1323,27 @@ SProcScreenSaverSuspend(ClientPtr client)
return ProcScreenSaverSuspend(client); return ProcScreenSaverSuspend(client);
} }
static int (*SwappedVector[]) (ClientPtr /* client */ ) = {
ProcScreenSaverQueryVersion,
SProcScreenSaverQueryInfo,
SProcScreenSaverSelectInput,
SProcScreenSaverSetAttributes,
SProcScreenSaverUnsetAttributes, SProcScreenSaverSuspend,};
static int _X_COLD static int _X_COLD
SProcScreenSaverDispatch(ClientPtr client) SProcScreenSaverDispatch(ClientPtr client)
{ {
REQUEST(xReq); REQUEST(xReq);
switch (stuff->data) {
if (stuff->data < ARRAY_SIZE(NormalVector)) case X_ScreenSaverQueryVersion:
return (*SwappedVector[stuff->data]) (client); return ProcScreenSaverQueryVersion(client);
case X_ScreenSaverQueryInfo:
return SProcScreenSaverQueryInfo(client);
case X_ScreenSaverSelectInput:
return SProcScreenSaverSelectInput(client);
case X_ScreenSaverSetAttributes:
return SProcScreenSaverSetAttributes(client);
case X_ScreenSaverUnsetAttributes:
return SProcScreenSaverUnsetAttributes(client);
case X_ScreenSaverSuspend:
return SProcScreenSaverSuspend(client);
default:
return BadRequest; return BadRequest;
} }
}
void void
ScreenSaverExtensionInit(void) ScreenSaverExtensionInit(void)