mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	merge 'lennart' branch back into trunk.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1971 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
		
							parent
							
								
									6687dd0131
								
							
						
					
					
						commit
						a67c21f093
					
				
					 294 changed files with 79057 additions and 11614 deletions
				
			
		| 
						 | 
				
			
			@ -26,7 +26,6 @@
 | 
			
		|||
#endif
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <assert.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
| 
						 | 
				
			
			@ -80,11 +79,12 @@ struct userdata {
 | 
			
		|||
 | 
			
		||||
static void io_callback(pa_mainloop_api *io, PA_GCC_UNUSED pa_io_event *e, PA_GCC_UNUSED int fd, pa_io_event_flags_t events, void*userdata) {
 | 
			
		||||
    struct userdata *u = userdata;
 | 
			
		||||
    assert(io);
 | 
			
		||||
    assert(u);
 | 
			
		||||
 | 
			
		||||
    pa_assert(io);
 | 
			
		||||
    pa_assert(u);
 | 
			
		||||
 | 
			
		||||
    if (events & (PA_IO_EVENT_HANGUP|PA_IO_EVENT_ERROR)) {
 | 
			
		||||
        pa_log("lost connection to evdev device.");
 | 
			
		||||
        pa_log("Lost connection to evdev device.");
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -92,14 +92,14 @@ static void io_callback(pa_mainloop_api *io, PA_GCC_UNUSED pa_io_event *e, PA_GC
 | 
			
		|||
        struct input_event ev;
 | 
			
		||||
 | 
			
		||||
        if (pa_loop_read(u->fd, &ev, sizeof(ev), &u->fd_type) <= 0) {
 | 
			
		||||
            pa_log("failed to read from event device: %s", pa_cstrerror(errno));
 | 
			
		||||
            pa_log("Failed to read from event device: %s", pa_cstrerror(errno));
 | 
			
		||||
            goto fail;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (ev.type == EV_KEY && (ev.value == 1 || ev.value == 2)) {
 | 
			
		||||
            enum { INVALID, UP, DOWN, MUTE_TOGGLE } volchange = INVALID;
 | 
			
		||||
 | 
			
		||||
            pa_log_debug("key code=%u, value=%u", ev.code, ev.value);
 | 
			
		||||
            pa_log_debug("Key code=%u, value=%u", ev.code, ev.value);
 | 
			
		||||
 | 
			
		||||
            switch (ev.code) {
 | 
			
		||||
                case KEY_VOLUMEDOWN:  volchange = DOWN; break;
 | 
			
		||||
| 
						 | 
				
			
			@ -111,10 +111,10 @@ static void io_callback(pa_mainloop_api *io, PA_GCC_UNUSED pa_io_event *e, PA_GC
 | 
			
		|||
                pa_sink *s;
 | 
			
		||||
 | 
			
		||||
                if (!(s = pa_namereg_get(u->module->core, u->sink_name, PA_NAMEREG_SINK, 1)))
 | 
			
		||||
                    pa_log("failed to get sink '%s'", u->sink_name);
 | 
			
		||||
                    pa_log("Failed to get sink '%s'", u->sink_name);
 | 
			
		||||
                else {
 | 
			
		||||
                    int i;
 | 
			
		||||
                    pa_cvolume cv = *pa_sink_get_volume(s, PA_MIXER_HARDWARE);
 | 
			
		||||
                    pa_cvolume cv = *pa_sink_get_volume(s);
 | 
			
		||||
 | 
			
		||||
#define DELTA (PA_VOLUME_NORM/20)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -127,7 +127,7 @@ static void io_callback(pa_mainloop_api *io, PA_GCC_UNUSED pa_io_event *e, PA_GC
 | 
			
		|||
                                    cv.values[i] = PA_VOLUME_NORM;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            pa_sink_set_volume(s, PA_MIXER_HARDWARE, &cv);
 | 
			
		||||
                            pa_sink_set_volume(s, &cv);
 | 
			
		||||
                            break;
 | 
			
		||||
 | 
			
		||||
                        case DOWN:
 | 
			
		||||
| 
						 | 
				
			
			@ -138,12 +138,12 @@ static void io_callback(pa_mainloop_api *io, PA_GCC_UNUSED pa_io_event *e, PA_GC
 | 
			
		|||
                                    cv.values[i] = PA_VOLUME_MUTED;
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            pa_sink_set_volume(s, PA_MIXER_HARDWARE, &cv);
 | 
			
		||||
                            pa_sink_set_volume(s, &cv);
 | 
			
		||||
                            break;
 | 
			
		||||
 | 
			
		||||
                        case MUTE_TOGGLE:
 | 
			
		||||
 | 
			
		||||
                            pa_sink_set_mute(s, PA_MIXER_HARDWARE, !pa_sink_get_mute(s, PA_MIXER_HARDWARE));
 | 
			
		||||
                            pa_sink_set_mute(s, !pa_sink_get_mute(s));
 | 
			
		||||
                            break;
 | 
			
		||||
 | 
			
		||||
                        case INVALID:
 | 
			
		||||
| 
						 | 
				
			
			@ -165,21 +165,23 @@ fail:
 | 
			
		|||
 | 
			
		||||
#define test_bit(bit, array) (array[bit/8] & (1<<(bit%8)))
 | 
			
		||||
 | 
			
		||||
int pa__init(pa_core *c, pa_module*m) {
 | 
			
		||||
int pa__init(pa_module*m) {
 | 
			
		||||
 | 
			
		||||
    pa_modargs *ma = NULL;
 | 
			
		||||
    struct userdata *u;
 | 
			
		||||
    int version;
 | 
			
		||||
    struct _input_id input_id;
 | 
			
		||||
    char name[256];
 | 
			
		||||
    uint8_t evtype_bitmask[EV_MAX/8 + 1];
 | 
			
		||||
    assert(c && m);
 | 
			
		||||
 | 
			
		||||
    pa_assert(m);
 | 
			
		||||
 | 
			
		||||
    if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
 | 
			
		||||
        pa_log("Failed to parse module arguments");
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    m->userdata = u = pa_xmalloc(sizeof(struct userdata));
 | 
			
		||||
    m->userdata = u = pa_xnew(struct userdata,1);
 | 
			
		||||
    u->module = m;
 | 
			
		||||
    u->io = NULL;
 | 
			
		||||
    u->sink_name = pa_xstrdup(pa_modargs_get_value(ma, "sink", NULL));
 | 
			
		||||
| 
						 | 
				
			
			@ -221,11 +223,11 @@ int pa__init(pa_core *c, pa_module*m) {
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (!test_bit(EV_KEY, evtype_bitmask)) {
 | 
			
		||||
        pa_log("device has no keys.");
 | 
			
		||||
        pa_log("Device has no keys.");
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    u->io = c->mainloop->io_new(c->mainloop, u->fd, PA_IO_EVENT_INPUT|PA_IO_EVENT_HANGUP, io_callback, u);
 | 
			
		||||
    u->io = m->core->mainloop->io_new(m->core->mainloop, u->fd, PA_IO_EVENT_INPUT|PA_IO_EVENT_HANGUP, io_callback, u);
 | 
			
		||||
 | 
			
		||||
    pa_modargs_free(ma);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -236,14 +238,14 @@ fail:
 | 
			
		|||
    if (ma)
 | 
			
		||||
        pa_modargs_free(ma);
 | 
			
		||||
 | 
			
		||||
    pa__done(c, m);
 | 
			
		||||
    pa__done(m);
 | 
			
		||||
    return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void pa__done(pa_core *c, pa_module*m) {
 | 
			
		||||
void pa__done(pa_module*m) {
 | 
			
		||||
    struct userdata *u;
 | 
			
		||||
    assert(c);
 | 
			
		||||
    assert(m);
 | 
			
		||||
 | 
			
		||||
    pa_assert(m);
 | 
			
		||||
 | 
			
		||||
    if (!(u = m->userdata))
 | 
			
		||||
        return;
 | 
			
		||||
| 
						 | 
				
			
			@ -252,7 +254,7 @@ void pa__done(pa_core *c, pa_module*m) {
 | 
			
		|||
        m->core->mainloop->io_free(u->io);
 | 
			
		||||
 | 
			
		||||
    if (u->fd >= 0)
 | 
			
		||||
        close(u->fd);
 | 
			
		||||
        pa_assert_se(pa_close(u->fd) == 0);
 | 
			
		||||
 | 
			
		||||
    pa_xfree(u->sink_name);
 | 
			
		||||
    pa_xfree(u);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue