From 49927ddf82711728adf244cae9a0c79eae6a4787 Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 9 Jul 2024 11:24:09 +0200 Subject: [PATCH] (submit/cleanup-damageext) damage: 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 --- damageext/damageext.c | 72 ++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 35 deletions(-) diff --git a/damageext/damageext.c b/damageext/damageext.c index 72b8a1487..894c4a9bb 100644 --- a/damageext/damageext.c +++ b/damageext/damageext.c @@ -467,25 +467,26 @@ ProcDamageAdd(ClientPtr client) return Success; } -static int (*ProcDamageVector[XDamageNumberRequests]) (ClientPtr) = { - /*************** Version 1 ******************/ - ProcDamageQueryVersion, - ProcDamageCreate, - ProcDamageDestroy, - ProcDamageSubtract, - /*************** Version 1.1 ****************/ - ProcDamageAdd, -}; - static int ProcDamageDispatch(ClientPtr client) { REQUEST(xReq); - - if (stuff->data >= ARRAY_SIZE(ProcDamageVector)) - return BadRequest; - - return (*ProcDamageVector[stuff->data]) (client); + switch (stuff->data) { + /* version 1 */ + case X_DamageQueryVersion: + return ProcDamageQueryVersion(client); + case X_DamageCreate: + return ProcDamageCreate(client); + case X_DamageDestroy: + return ProcDamageDestroy(client); + case X_DamageSubtract: + return ProcDamageSubtract(client); + /* version 1.1 */ + case X_DamageAdd: + return ProcDamageAdd(client); + default: + return BadRequest; + } } static int _X_COLD @@ -495,7 +496,7 @@ SProcDamageQueryVersion(ClientPtr client) REQUEST_SIZE_MATCH(xDamageQueryVersionReq); swapl(&stuff->majorVersion); swapl(&stuff->minorVersion); - return (*ProcDamageVector[stuff->damageReqType]) (client); + return ProcDamageQueryVersion(client); } static int _X_COLD @@ -505,7 +506,7 @@ SProcDamageCreate(ClientPtr client) REQUEST_SIZE_MATCH(xDamageCreateReq); swapl(&stuff->damage); swapl(&stuff->drawable); - return (*ProcDamageVector[stuff->damageReqType]) (client); + return ProcDamageCreate(client); } static int _X_COLD @@ -514,7 +515,7 @@ SProcDamageDestroy(ClientPtr client) REQUEST(xDamageDestroyReq); REQUEST_SIZE_MATCH(xDamageDestroyReq); swapl(&stuff->damage); - return (*ProcDamageVector[stuff->damageReqType]) (client); + return ProcDamageDestroy(client); } static int _X_COLD @@ -525,7 +526,7 @@ SProcDamageSubtract(ClientPtr client) swapl(&stuff->damage); swapl(&stuff->repair); swapl(&stuff->parts); - return (*ProcDamageVector[stuff->damageReqType]) (client); + return ProcDamageSubtract(client); } static int _X_COLD @@ -535,28 +536,29 @@ SProcDamageAdd(ClientPtr client) REQUEST_SIZE_MATCH(xDamageSubtractReq); swapl(&stuff->drawable); swapl(&stuff->region); - return (*ProcDamageVector[stuff->damageReqType]) (client); + return ProcDamageAdd(client); } -static int (*SProcDamageVector[XDamageNumberRequests]) (ClientPtr) = { - /*************** Version 1 ******************/ - SProcDamageQueryVersion, - SProcDamageCreate, - SProcDamageDestroy, - SProcDamageSubtract, - /*************** Version 1.1 ****************/ - SProcDamageAdd, -}; - static int _X_COLD SProcDamageDispatch(ClientPtr client) { REQUEST(xReq); - - if (stuff->data >= ARRAY_SIZE(ProcDamageVector)) - return BadRequest; - - return (*SProcDamageVector[stuff->data]) (client); + switch (stuff->data) { + /* version 1 */ + case X_DamageQueryVersion: + return SProcDamageQueryVersion(client); + case X_DamageCreate: + return SProcDamageCreate(client); + case X_DamageDestroy: + return SProcDamageDestroy(client); + case X_DamageSubtract: + return SProcDamageSubtract(client); + /* version 1.1 */ + case X_DamageAdd: + return SProcDamageAdd(client); + default: + return BadRequest; + } } static int