mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	mmkbd: replace manual code by pa_cvolume_{inc|dec}()
This commit is contained in:
		
							parent
							
								
									8c31974f56
								
							
						
					
					
						commit
						2f54798b1a
					
				
					 1 changed files with 21 additions and 22 deletions
				
			
		| 
						 | 
				
			
			@ -65,6 +65,8 @@ struct userdata {
 | 
			
		|||
    pa_module *module;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#define DELTA (PA_VOLUME_NORM/20)
 | 
			
		||||
 | 
			
		||||
static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) {
 | 
			
		||||
    struct userdata *u = userdata;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -85,14 +87,27 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
 | 
			
		|||
        }
 | 
			
		||||
 | 
			
		||||
        if (ev.type == EV_KEY && (ev.value == 1 || ev.value == 2)) {
 | 
			
		||||
            enum { INVALID, UP, DOWN, MUTE_TOGGLE } volchange = INVALID;
 | 
			
		||||
            enum {
 | 
			
		||||
                INVALID,
 | 
			
		||||
                UP,
 | 
			
		||||
                DOWN,
 | 
			
		||||
                MUTE_TOGGLE
 | 
			
		||||
            } volchange = INVALID;
 | 
			
		||||
 | 
			
		||||
            pa_log_debug("Key code=%u, value=%u", ev.code, ev.value);
 | 
			
		||||
 | 
			
		||||
            switch (ev.code) {
 | 
			
		||||
                case KEY_VOLUMEDOWN:  volchange = DOWN; break;
 | 
			
		||||
                case KEY_VOLUMEUP:    volchange = UP; break;
 | 
			
		||||
                case KEY_MUTE:        volchange = MUTE_TOGGLE; break;
 | 
			
		||||
                case KEY_VOLUMEDOWN:
 | 
			
		||||
                    volchange = DOWN;
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                case KEY_VOLUMEUP:
 | 
			
		||||
                    volchange = UP;
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                case KEY_MUTE:
 | 
			
		||||
                    volchange = MUTE_TOGGLE;
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (volchange != INVALID) {
 | 
			
		||||
| 
						 | 
				
			
			@ -101,36 +116,20 @@ static void io_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event
 | 
			
		|||
                if (!(s = pa_namereg_get(u->module->core, u->sink_name, PA_NAMEREG_SINK)))
 | 
			
		||||
                    pa_log("Failed to get sink '%s'", u->sink_name);
 | 
			
		||||
                else {
 | 
			
		||||
                    int i;
 | 
			
		||||
                    pa_cvolume cv = *pa_sink_get_volume(s, FALSE);
 | 
			
		||||
 | 
			
		||||
#define DELTA (PA_VOLUME_NORM/20)
 | 
			
		||||
 | 
			
		||||
                    switch (volchange) {
 | 
			
		||||
                        case UP:
 | 
			
		||||
                            for (i = 0; i < cv.channels; i++) {
 | 
			
		||||
                                if (cv.values[i] < PA_VOLUME_MAX - DELTA)
 | 
			
		||||
                                    cv.values[i] += DELTA;
 | 
			
		||||
                                else
 | 
			
		||||
                                    cv.values[i] = PA_VOLUME_MAX;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            pa_cvolume_inc(&cv, DELTA);
 | 
			
		||||
                            pa_sink_set_volume(s, &cv, TRUE, TRUE);
 | 
			
		||||
                            break;
 | 
			
		||||
 | 
			
		||||
                        case DOWN:
 | 
			
		||||
                            for (i = 0; i < cv.channels; i++) {
 | 
			
		||||
                                if (cv.values[i] > DELTA)
 | 
			
		||||
                                    cv.values[i] -= DELTA;
 | 
			
		||||
                                else
 | 
			
		||||
                                    cv.values[i] = PA_VOLUME_MUTED;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            pa_cvolume_dec(&cv, DELTA);
 | 
			
		||||
                            pa_sink_set_volume(s, &cv, TRUE, TRUE);
 | 
			
		||||
                            break;
 | 
			
		||||
 | 
			
		||||
                        case MUTE_TOGGLE:
 | 
			
		||||
 | 
			
		||||
                            pa_sink_set_mute(s, !pa_sink_get_mute(s, FALSE), TRUE);
 | 
			
		||||
                            break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue