From a964a6dad60034acbf12e645f83d09c253887f67 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 20 Jan 2009 22:15:55 +0000 Subject: [PATCH] Support ac97 soundcard model --- ChangeLog | 9 +++ src/domain_conf.c | 3 +- src/domain_conf.h | 1 + src/xend_internal.c | 64 +++++-------------- .../sexpr2xmldata/sexpr2xml-fv-sound-all.xml | 1 - 5 files changed, 28 insertions(+), 50 deletions(-) diff --git a/ChangeLog b/ChangeLog index a4fe397cbc..a912ebbb8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +Tue Jan 20 22:12:53 GMT 2009 Daniel P. Berrange + + * src/domain_conf.c, src/domain_conf.h: Support ac97 soundcard + model + * src/xend_internal.c: Remove unused APis and restrict the + 'all' device conversion to just sb16 + es1370 + * tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml: Revert earlier + mistaken change which added pcspk device + Tue Jan 20 22:06:53 GMT 2009 Daniel P. Berrange * python/libvir.c, python/libvir.py: Use global thread diff --git a/src/domain_conf.c b/src/domain_conf.c index 8d1cf94917..6e3b317ee1 100644 --- a/src/domain_conf.c +++ b/src/domain_conf.c @@ -121,7 +121,8 @@ VIR_ENUM_IMPL(virDomainChr, VIR_DOMAIN_CHR_TYPE_LAST, VIR_ENUM_IMPL(virDomainSoundModel, VIR_DOMAIN_SOUND_MODEL_LAST, "sb16", "es1370", - "pcspk") + "pcspk", + "ac97") VIR_ENUM_IMPL(virDomainInput, VIR_DOMAIN_INPUT_TYPE_LAST, "mouse", diff --git a/src/domain_conf.h b/src/domain_conf.h index 44b5169bac..4b9dcb3344 100644 --- a/src/domain_conf.h +++ b/src/domain_conf.h @@ -236,6 +236,7 @@ enum virDomainSoundModel { VIR_DOMAIN_SOUND_MODEL_SB16, VIR_DOMAIN_SOUND_MODEL_ES1370, VIR_DOMAIN_SOUND_MODEL_PCSPK, + VIR_DOMAIN_SOUND_MODEL_ES97, VIR_DOMAIN_SOUND_MODEL_LAST }; diff --git a/src/xend_internal.c b/src/xend_internal.c index a141adc0d8..7bf7658dbf 100644 --- a/src/xend_internal.c +++ b/src/xend_internal.c @@ -746,52 +746,6 @@ urlencode(const char *string) } #endif /* ! PROXY */ -/* Applicable sound models */ -static const char *const sound_models[] = { "sb16", "es1370" }; - -/** - * is_sound_model_valid: - * @model : model string to check against whitelist - * - * checks passed model string against whitelist of acceptable models - * - * Returns 0 if invalid, 1 otherwise - */ -int is_sound_model_valid(const char *model) { - int i; - - for (i = 0; i < sizeof(sound_models)/sizeof(*sound_models); ++i) { - if (STREQ(model, sound_models[i])) { - return 1; - } - } - return 0; -} - -/** - * is_sound_model_conflict: - * @model : model string to look for duplicates of - * @soundstr : soundhw string for the form m1,m2,m3 ... - * - * Returns 0 if no conflict, 1 otherwise - */ -int is_sound_model_conflict(const char *model, const char *soundstr) { - - char *dupe; - char *cur = (char *) soundstr; - while ((dupe = strstr(cur, model))) { - if (( (dupe == cur) || // (Start of line | - (*(dupe - 1) == ',') ) && // Preceded by comma) & - ( (dupe[strlen(model)] == ',') || // (Ends with comma | - (dupe[strlen(model)] == '\0') )) // Ends whole string) - return 1; - else - cur = dupe + strlen(model); - } - return 0; -} - - /* PUBLIC FUNCTIONS */ /** @@ -1866,11 +1820,25 @@ xenDaemonParseSxprSound(virConnectPtr conn, if (STREQ(str, "all")) { int i; + /* + * Special compatability code for Xen with a bogus + * sound=all in config. + * + * NB delibrately, don't include all possible + * sound models anymore, just the 2 that were + * historically present in Xen's QEMU. + * + * ie just es1370 + sb16. + * + * Hence use of MODEL_ES1370 + 1, instead of MODEL_LAST + */ + if (VIR_ALLOC_N(def->sounds, - VIR_DOMAIN_SOUND_MODEL_LAST) < 0) + VIR_DOMAIN_SOUND_MODEL_ES1370 + 1) < 0) goto no_memory; - for (i = 0 ; i < VIR_DOMAIN_SOUND_MODEL_LAST ; i++) { + + for (i = 0 ; i < (VIR_DOMAIN_SOUND_MODEL_ES1370 + 1) ; i++) { virDomainSoundDefPtr sound; if (VIR_ALLOC(sound) < 0) goto no_memory; diff --git a/tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml b/tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml index 487e32562f..6a4e9beb58 100644 --- a/tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml +++ b/tests/sexpr2xmldata/sexpr2xml-fv-sound-all.xml @@ -38,6 +38,5 @@ -