commit
						c0647e946f
					
				
							
								
								
									
										24
									
								
								slstatus.c
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								slstatus.c
									
									
									
									
									
								
							| @ -37,6 +37,8 @@ struct arg { | |||||||
| 	const char *args; | 	const char *args; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | static unsigned short int delay; | ||||||
|  | 
 | ||||||
| static char *smprintf(const char *, ...); | static char *smprintf(const char *, ...); | ||||||
| static char *battery_perc(const char *); | static char *battery_perc(const char *); | ||||||
| static char *cpu_perc(void); | static char *cpu_perc(void); | ||||||
| @ -126,7 +128,7 @@ battery_perc(const char *battery) | |||||||
| 
 | 
 | ||||||
| static char * | static char * | ||||||
| cpu_perc(void) | cpu_perc(void) | ||||||
| { /* FIXME: ugly function, would be better without sleep(), see below */ | { | ||||||
| 	int perc; | 	int perc; | ||||||
| 	long double a[4], b[4]; | 	long double a[4], b[4]; | ||||||
| 	FILE *fp = fopen("/proc/stat","r"); | 	FILE *fp = fopen("/proc/stat","r"); | ||||||
| @ -139,7 +141,8 @@ cpu_perc(void) | |||||||
| 	fscanf(fp, "%*s %Lf %Lf %Lf %Lf", &a[0], &a[1], &a[2], &a[3]); | 	fscanf(fp, "%*s %Lf %Lf %Lf %Lf", &a[0], &a[1], &a[2], &a[3]); | ||||||
| 	fclose(fp); | 	fclose(fp); | ||||||
| 
 | 
 | ||||||
| 	sleep(1); | 	delay = (UPDATE_INTERVAL - (UPDATE_INTERVAL - 1)); | ||||||
|  | 	sleep(delay); | ||||||
| 
 | 
 | ||||||
| 	fp = fopen("/proc/stat","r"); | 	fp = fopen("/proc/stat","r"); | ||||||
| 	if (fp == NULL) { | 	if (fp == NULL) { | ||||||
| @ -470,24 +473,24 @@ uid(void) | |||||||
| 
 | 
 | ||||||
| static char *  | static char *  | ||||||
| vol_perc(const char *snd_card) | vol_perc(const char *snd_card) | ||||||
| { /* thanks to botika for this function */ | { /* FIX THIS SHIT! */ | ||||||
| 	long int vol, max, min; | 	long int vol, max, min; | ||||||
| 	snd_mixer_t *handle; | 	snd_mixer_t *handle; | ||||||
| 	snd_mixer_elem_t *elem; | 	snd_mixer_elem_t *elem; | ||||||
| 	snd_mixer_selem_id_t *s_elem; | 	snd_mixer_selem_id_t *s_elem; | ||||||
| 
 | 
 | ||||||
| 	snd_mixer_open(&handle, 0); | 	snd_mixer_open(&handle, 0); | ||||||
| 	snd_mixer_attach(handle, "default"); | 	snd_mixer_attach(handle, snd_card); | ||||||
| 	snd_mixer_selem_register(handle, NULL, NULL); | 	snd_mixer_selem_register(handle, NULL, NULL); | ||||||
| 	snd_mixer_load(handle); | 	snd_mixer_load(handle); | ||||||
| 	snd_mixer_selem_id_malloc(&s_elem); | 	snd_mixer_selem_id_malloc(&s_elem); | ||||||
| 	snd_mixer_selem_id_set_name(s_elem, snd_card); | 	snd_mixer_selem_id_set_name(s_elem, ALSA_CHANNEL); | ||||||
| 	elem = snd_mixer_find_selem(handle, s_elem); | 	elem = snd_mixer_find_selem(handle, s_elem); | ||||||
| 
 | 
 | ||||||
| 	if (elem == NULL) { | 	if (elem == NULL) { | ||||||
| 		snd_mixer_selem_id_free(s_elem); | 		snd_mixer_selem_id_free(s_elem); | ||||||
| 		snd_mixer_close(handle); | 		snd_mixer_close(handle); | ||||||
| 		perror("alsa error"); | 		warn("error: ALSA"); | ||||||
| 		return smprintf(UNKNOWN_STR); | 		return smprintf(UNKNOWN_STR); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -498,7 +501,7 @@ vol_perc(const char *snd_card) | |||||||
| 	snd_mixer_selem_id_free(s_elem); | 	snd_mixer_selem_id_free(s_elem); | ||||||
| 	snd_mixer_close(handle); | 	snd_mixer_close(handle); | ||||||
| 
 | 
 | ||||||
| 	return smprintf("%d", (vol * 100) / max); | 	return smprintf("%d", ((uint_fast16_t)(vol * 100) / max)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static char * | static char * | ||||||
| @ -601,7 +604,12 @@ main(void) | |||||||
| 		} | 		} | ||||||
| 		XStoreName(dpy, DefaultRootWindow(dpy), status_string); | 		XStoreName(dpy, DefaultRootWindow(dpy), status_string); | ||||||
| 		XSync(dpy, False); | 		XSync(dpy, False); | ||||||
| 		sleep(UPDATE_INTERVAL - 1); /* FIXME: ugly cpu function which uses 1 second */ | 		/*
 | ||||||
|  | 		 * subtract delay time spend in function | ||||||
|  | 		 * calls from the actual global delay time | ||||||
|  | 		 */ | ||||||
|  | 		sleep(UPDATE_INTERVAL - delay); | ||||||
|  | 		delay = 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	XCloseDisplay(dpy); | 	XCloseDisplay(dpy); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user