Made dwmblocks way more efficient by only setting the name of the root window when something has changed.
This commit is contained in:
parent
72dc44f963
commit
5ff59d4e8b
1 changed files with 9 additions and 11 deletions
20
dwmblocks.c
20
dwmblocks.c
|
@ -17,7 +17,7 @@ void replace(char *str, char old, char new);
|
||||||
void getcmds(int time);
|
void getcmds(int time);
|
||||||
void getsigcmds(int signal);
|
void getsigcmds(int signal);
|
||||||
void setupsignals();
|
void setupsignals();
|
||||||
void getstatus(char *str);
|
int getstatus(char *str, char *last);
|
||||||
void setroot();
|
void setroot();
|
||||||
void statusloop();
|
void statusloop();
|
||||||
void statusinit();
|
void statusinit();
|
||||||
|
@ -31,12 +31,8 @@ static Display *dpy;
|
||||||
static int screen;
|
static int screen;
|
||||||
static Window root;
|
static Window root;
|
||||||
static char statusbar[LENGTH(blocks)][50] = {0};
|
static char statusbar[LENGTH(blocks)][50] = {0};
|
||||||
static char statusstr[256];
|
static char statusstr[2][256];
|
||||||
static char *statuscat;
|
static int statusContinue = 1;
|
||||||
static const char *volupcmd[] = { "volup", NULL };
|
|
||||||
static const char *voldowncmd[] = { "voldown", NULL };
|
|
||||||
static const char *volmutecmd[] = { "volmute", NULL };
|
|
||||||
static int statusContinue = 1,volmuted = 0;
|
|
||||||
|
|
||||||
void replace(char *str, char old, char new)
|
void replace(char *str, char old, char new)
|
||||||
{
|
{
|
||||||
|
@ -97,27 +93,29 @@ void setupsignals()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void getstatus(char *str)
|
int getstatus(char *str, char *last)
|
||||||
{
|
{
|
||||||
|
strcpy(last, str);
|
||||||
int j = 0;
|
int j = 0;
|
||||||
for(int i = 0; i < LENGTH(blocks); j+=strlen(statusbar[i++]))
|
for(int i = 0; i < LENGTH(blocks); j+=strlen(statusbar[i++]))
|
||||||
{
|
{
|
||||||
strcpy(str + j, statusbar[i]);
|
strcpy(str + j, statusbar[i]);
|
||||||
}
|
}
|
||||||
str[--j] = '\0';
|
str[--j] = '\0';
|
||||||
|
return strcmp(str, last);//0 if they are the same
|
||||||
}
|
}
|
||||||
|
|
||||||
void setroot()
|
void setroot()
|
||||||
{
|
{
|
||||||
|
if (!getstatus(statusstr[0], statusstr[1]))//Only set root if text has changed.
|
||||||
|
return;
|
||||||
Display *d = XOpenDisplay(NULL);
|
Display *d = XOpenDisplay(NULL);
|
||||||
if (d) {
|
if (d) {
|
||||||
dpy = d;
|
dpy = d;
|
||||||
}
|
}
|
||||||
screen = DefaultScreen(dpy);
|
screen = DefaultScreen(dpy);
|
||||||
root = RootWindow(dpy, screen);
|
root = RootWindow(dpy, screen);
|
||||||
getstatus(statusstr);
|
XStoreName(dpy, root, statusstr[0]);
|
||||||
XStoreName(dpy, root, statusstr);
|
|
||||||
XCloseDisplay(dpy);
|
XCloseDisplay(dpy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Reference in a new issue