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
					
				
							
								
								
									
										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); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user