Update timestamps for the special process scans at startup also

Resolves https://github.com/htop-dev/htop/issues/592
This commit is contained in:
Nathan Scott 2021-04-08 09:26:48 +10:00
parent f3a37f9ef3
commit 367561175a
2 changed files with 7 additions and 5 deletions

View File

@ -241,14 +241,14 @@ static CommandLineSettings parseArguments(const char* program, int argc, char**
return flags; return flags;
} }
static void millisleep(unsigned long millisec) { static void CommandLine_delay(ProcessList* pl, unsigned long millisec) {
struct timespec req = { struct timespec req = {
.tv_sec = 0, .tv_sec = 0,
.tv_nsec = millisec * 1000000L .tv_nsec = millisec * 1000000L
}; };
while(nanosleep(&req,&req)==-1) { while (nanosleep(&req, &req) == -1)
continue; continue;
} Platform_gettime_realtime(&pl->realtime, &pl->realtimeMs);
} }
static void setCommFilter(State* state, char** commFilter) { static void setCommFilter(State* state, char** commFilter) {
@ -333,7 +333,7 @@ int CommandLine_run(const char* name, int argc, char** argv) {
ScreenManager_add(scr, (Panel*) panel, -1); ScreenManager_add(scr, (Panel*) panel, -1);
ProcessList_scan(pl, false); ProcessList_scan(pl, false);
millisleep(75); CommandLine_delay(pl, 75);
ProcessList_scan(pl, false); ProcessList_scan(pl, false);
if (settings->allBranchesCollapsed) if (settings->allBranchesCollapsed)

View File

@ -35,9 +35,11 @@ ProcessList* ProcessList_init(ProcessList* this, const ObjectClass* klass, Users
// set later by platform-specific code // set later by platform-specific code
this->cpuCount = 0; this->cpuCount = 0;
this->monotonicMs = 0; this->monotonicMs = 0;
// always maintain valid realtime timestamps
Platform_gettime_realtime(&this->realtime, &this->realtimeMs);
#ifdef HAVE_LIBHWLOC #ifdef HAVE_LIBHWLOC
this->topologyOk = false; this->topologyOk = false;
if (hwloc_topology_init(&this->topology) == 0) { if (hwloc_topology_init(&this->topology) == 0) {