diff options
author | Daniel Lange <DLange@git.local> | 2021-01-21 20:57:34 +0100 |
---|---|---|
committer | Daniel Lange <DLange@git.local> | 2021-01-22 09:57:44 +0100 |
commit | 074703bd5c160a5ced6127d7897ece600919db1b (patch) | |
tree | 4b4f1b8167cdcb81af72e29f2a3357e174209079 /Process.c | |
parent | 4531b31d92d23072fa978a3dedcbcab50c936188 (diff) |
Implement stable tie-breaker and add more defaultSortDesc fields as per cgzones' suggestions, simplify Process_compare flow from BenBE
Diffstat (limited to 'Process.c')
-rw-r--r-- | Process.c | 17 |
1 files changed, 7 insertions, 10 deletions
@@ -489,24 +489,21 @@ int Process_pidCompare(const void* v1, const void* v2) { } int Process_compare(const void* v1, const void* v2) { - const Process *p1, *p2; - const Settings *settings = ((const Process*)v1)->settings; + const Process *p1 = (const Process*)v1; + const Process *p2 = (const Process*)v2; - if (Settings_getActiveDirection(settings) == 1) { - p1 = (const Process*)v1; - p2 = (const Process*)v2; - } else { - p2 = (const Process*)v1; - p1 = (const Process*)v2; - } + const Settings *settings = p1->settings; ProcessField key = Settings_getActiveSortKey(settings); int result = Process_compareByKey(p1, p2, key); + if (Settings_getActiveDirection(settings) != 1) + result = -result; + // Implement tie-breaker (needed to make tree mode more stable) if (!result) - result = SPACESHIP_NUMBER(p1->pid, p2->pid); + return SPACESHIP_NUMBER(p1->pid, p2->pid); return result; } |