Commit 65ba8696 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

audio: add module loading support



Make audio_driver_lookup() try load the module in case it doesn't find
the driver in the registry.  Also load all modules for -audio-help, so
the help output includes the help text for modular audio drivers.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarMarc-André Lureau <marcandre.lureau@redhat.com>
Message-id: 20180306074053.22856-3-kraxel@redhat.com
parent d3893a39
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -68,9 +68,26 @@ audio_driver *audio_driver_lookup(const char *name)
            return d;
        }
    }

    audio_module_load_one(name);
    QLIST_FOREACH(d, &audio_drivers, next) {
        if (strcmp(name, d->name) == 0) {
            return d;
        }
    }

    return NULL;
}

static void audio_module_load_all(void)
{
    int i;

    for (i = 0; i < ARRAY_SIZE(audio_prio_list); i++) {
        audio_driver_lookup(audio_prio_list[i]);
    }
}

struct fixed_settings {
    int enabled;
    int nb_voices;
@@ -1675,6 +1692,9 @@ void AUD_help (void)
{
    struct audio_driver *d;

    /* make sure we print the help text for modular drivers too */
    audio_module_load_all();

    audio_process_options ("AUDIO", audio_options);
    QLIST_FOREACH(d, &audio_drivers, next) {
        if (d->options) {
+1 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ typedef enum {

#define block_module_load_one(lib) module_load_one("block-", lib)
#define ui_module_load_one(lib) module_load_one("ui-", lib)
#define audio_module_load_one(lib) module_load_one("audio-", lib)

void register_module_init(void (*fn)(void), module_init_type type);
void register_dso_module_init(void (*fn)(void), module_init_type type);