From: Keith Packard Date: Wed, 22 Jan 2014 19:01:59 +0000 (-0800) Subject: dix: Praise clients which haven't run for a while, rather than idle clients X-Git-Tag: xorg-server-1.15.99.901~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c1ce807d9f18f215332d7eeb844e8c640f71c53c;p=platform%2Fupstream%2Fxorg-server.git dix: Praise clients which haven't run for a while, rather than idle clients A client which is ready, but hasn't run for a while, should receive the same benefit as one which has simply been idle for a while. Use the smart_stop_tick to see how long it has been since a client has run instead of smart_check_tick, which got reset each time a client was ready, even if it didn't get to run. Reported-by: Chris Wilson Signed-off-by: Keith Packard Tested-by: Chris Wilson --- diff --git a/dix/dispatch.c b/dix/dispatch.c index e28270c..9a5658d 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -260,12 +260,11 @@ SmartScheduleClient(int *clientReady, int nready) for (i = 0; i < nready; i++) { client = clientReady[i]; pClient = clients[client]; - /* Praise clients which are idle */ - if ((now - pClient->smart_check_tick) >= idle) { + /* Praise clients which haven't run in a while */ + if ((now - pClient->smart_stop_tick) >= idle) { if (pClient->smart_priority < 0) pClient->smart_priority++; } - pClient->smart_check_tick = now; /* check priority to select best client */ robin = @@ -3424,7 +3423,6 @@ InitClient(ClientPtr client, int i, void *ospriv) QueryMinMaxKeyCodes(&client->minKC, &client->maxKC); client->smart_start_tick = SmartScheduleTime; client->smart_stop_tick = SmartScheduleTime; - client->smart_check_tick = SmartScheduleTime; client->clientIds = NULL; } diff --git a/include/dixstruct.h b/include/dixstruct.h index a11729b..6c13895 100644 --- a/include/dixstruct.h +++ b/include/dixstruct.h @@ -106,7 +106,6 @@ typedef struct _Client { int smart_start_tick; int smart_stop_tick; - int smart_check_tick; DeviceIntPtr clientPtr; ClientIdPtr clientIds;