summaryrefslogtreecommitdiffstats
path: root/Process.h
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2020-12-17 20:09:55 -0300
committerBenBE <BenBE@geshi.org>2020-12-19 16:02:34 +0100
commit3d1703f16faf5bd3c73976909e1b6e03061a7f72 (patch)
tree45dbb3c0be0817b833b9d4a64376d9033b5ef2fe /Process.h
parent52fa4e7ee4816209ad82ba92ece8a3dc5b25ddd0 (diff)
Invert Process_compare resolution so that superclass matches run first
* This removes duplicated code that adjusts the sort direction from every OS-specific folder. * Most fields in a regular htop screen are OS-independent, so trying Process_compare first and only falling back to the OS-specific compareByKey function if it's an OS-specific field makes sense. * This will allow us to override the sortKey in a global way without having to edit each OS-specific file.
Diffstat (limited to 'Process.h')
-rw-r--r--Process.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/Process.h b/Process.h
index 1f118e70..9e800891 100644
--- a/Process.h
+++ b/Process.h
@@ -129,17 +129,20 @@ extern char Process_pidFormat[20];
typedef Process*(*Process_New)(const struct Settings_*);
typedef void (*Process_WriteField)(const Process*, RichString*, ProcessField);
+typedef long (*Process_CompareByKey)(const Process*, const Process*, ProcessField);
typedef const char* (*Process_GetCommandStr)(const Process*);
typedef struct ProcessClass_ {
const ObjectClass super;
const Process_WriteField writeField;
+ const Process_CompareByKey compareByKey;
const Process_GetCommandStr getCommandStr;
} ProcessClass;
-#define As_Process(this_) ((const ProcessClass*)((this_)->super.klass))
+#define As_Process(this_) ((const ProcessClass*)((this_)->super.klass))
-#define Process_getCommand(this_) (As_Process(this_)->getCommandStr ? As_Process(this_)->getCommandStr((const Process*)(this_)) : ((const Process*)(this_))->comm)
+#define Process_getCommand(this_) (As_Process(this_)->getCommandStr ? As_Process(this_)->getCommandStr((const Process*)(this_)) : ((const Process*)(this_))->comm)
+#define Process_compareByKey(p1_, p2_, key_) (As_Process(p1_)->compareByKey ? (As_Process(p1_)->compareByKey(p1_, p2_, key_)) : SPACESHIP_NUMBER(p1->pid, p2->pid))
static inline pid_t Process_getParentPid(const Process* this) {
return this->tgid == this->pid ? this->ppid : this->tgid;

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