Merge pull request #66 from LukeSmithxyz/revert-62-fast-scrolling-fix

Revert "Mitigates disappearing blocks on fast mouse interaction"
This commit is contained in:
Luke Smith 2021-03-02 09:22:49 -05:00 committed by GitHub
commit 7892511501
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -13,7 +13,6 @@ typedef struct {
unsigned int interval; unsigned int interval;
unsigned int signal; unsigned int signal;
} Block; } Block;
char** last_updates;
void sighandler(int num); void sighandler(int num);
void buttonhandler(int sig, siginfo_t *si, void *ucontext); void buttonhandler(int sig, siginfo_t *si, void *ucontext);
void replace(char *str, char old, char new); void replace(char *str, char old, char new);
@ -62,7 +61,7 @@ void remove_all(char *str, char to_remove) {
} }
//opens process *cmd and stores output in *output //opens process *cmd and stores output in *output
void getcmd(const Block *block, char* last_update , char *output) void getcmd(const Block *block, char *output)
{ {
if (block->signal) if (block->signal)
{ {
@ -78,15 +77,10 @@ void getcmd(const Block *block, char* last_update , char *output)
int i = strlen(block->icon); int i = strlen(block->icon);
fgets(output+i, CMDLENGTH-(strlen(delim)+1), cmdf); fgets(output+i, CMDLENGTH-(strlen(delim)+1), cmdf);
remove_all(output, '\n'); remove_all(output, '\n');
if(i == strlen(output))
strcpy(output+i, last_update);
else
strcpy(last_update, output+i);
i = strlen(output); i = strlen(output);
if ((i > 0 && block != &blocks[LENGTH(blocks) - 1])) if ((i > 0 && block != &blocks[LENGTH(blocks) - 1]))
strcat(output, delim); strcat(output, delim);
i+=strlen(delim); i+=strlen(delim);
output[i++] = '\0'; output[i++] = '\0';
pclose(cmdf); pclose(cmdf);
} }
@ -98,7 +92,7 @@ void getcmds(int time)
{ {
current = blocks + i; current = blocks + i;
if ((current->interval != 0 && time % current->interval == 0) || time == -1) if ((current->interval != 0 && time % current->interval == 0) || time == -1)
getcmd(current,last_updates[i],statusbar[i]); getcmd(current,statusbar[i]);
} }
} }
@ -110,7 +104,7 @@ void getsigcmds(int signal)
{ {
current = blocks + i; current = blocks + i;
if (current->signal == signal) if (current->signal == signal)
getcmd(current,last_updates[i],statusbar[i]); getcmd(current,statusbar[i]);
} }
} }
@ -182,11 +176,6 @@ void statusloop()
#ifndef __OpenBSD__ #ifndef __OpenBSD__
setupsignals(); setupsignals();
#endif #endif
last_updates = malloc(sizeof(char*) * LENGTH(blocks));
for(int i = 0; i < LENGTH(blocks); i++) {
last_updates[i] = malloc(sizeof(char) * CMDLENGTH);
strcpy(last_updates[i],"");
}
int i = 0; int i = 0;
getcmds(-1); getcmds(-1);
while(statusContinue) while(statusContinue)
@ -233,10 +222,6 @@ void buttonhandler(int sig, siginfo_t *si, void *ucontext)
void termhandler(int signum) void termhandler(int signum)
{ {
for(int i = 0; i < LENGTH(blocks); i++) {
free(last_updates[i]);
}
free(last_updates);
statusContinue = 0; statusContinue = 0;
exit(0); exit(0);
} }