summaryrefslogtreecommitdiffstats
path: root/Process.c
diff options
context:
space:
mode:
authorDaniel Lange <DLange@git.local>2021-01-21 20:57:34 +0100
committerDaniel Lange <DLange@git.local>2021-01-22 09:57:44 +0100
commit074703bd5c160a5ced6127d7897ece600919db1b (patch)
tree4b4f1b8167cdcb81af72e29f2a3357e174209079 /Process.c
parent4531b31d92d23072fa978a3dedcbcab50c936188 (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.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/Process.c b/Process.c
index 9a6ed3aa..c76f47a2 100644
--- a/Process.c
+++ b/Process.c
@@ -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;
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy