audio: deprecate -soundhw pcspk
Add deprecation message to the audio init function. Factor out audio initialization and call that from both audio init and realize, so setting the audiodev property is enough to properly initialize pcspk. Add a property alias to the machine type to set the audio device, so pcspk can be initialized using: "-machine pcspk-audiodev=<name>" Using "-global isa-pcspk.audiodev=<name>" works too but is not recommended. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Message-id: 20200702132525.6849-18-kraxel@redhat.com
This commit is contained in:
parent
6b8d141648
commit
2e16ec0541
@ -28,6 +28,7 @@
|
||||
#include "audio/audio.h"
|
||||
#include "qemu/module.h"
|
||||
#include "qemu/timer.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "hw/timer/i8254.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "hw/audio/pcspk.h"
|
||||
@ -112,11 +113,15 @@ static void pcspk_callback(void *opaque, int free)
|
||||
}
|
||||
}
|
||||
|
||||
static int pcspk_audio_init(ISABus *bus)
|
||||
static int pcspk_audio_init(PCSpkState *s)
|
||||
{
|
||||
PCSpkState *s = pcspk_state;
|
||||
struct audsettings as = {PCSPK_SAMPLE_RATE, 1, AUDIO_FORMAT_U8, 0};
|
||||
|
||||
if (s->voice) {
|
||||
/* already initialized */
|
||||
return 0;
|
||||
}
|
||||
|
||||
AUD_register_card(s_spk, &s->card);
|
||||
|
||||
s->voice = AUD_open_out(&s->card, s->voice, s_spk, s, pcspk_callback, &as);
|
||||
@ -185,6 +190,10 @@ static void pcspk_realizefn(DeviceState *dev, Error **errp)
|
||||
|
||||
isa_register_ioport(isadev, &s->ioport, s->iobase);
|
||||
|
||||
if (s->card.state) {
|
||||
pcspk_audio_init(s);
|
||||
}
|
||||
|
||||
pcspk_state = s;
|
||||
}
|
||||
|
||||
@ -236,9 +245,18 @@ static const TypeInfo pcspk_info = {
|
||||
.class_init = pcspk_class_initfn,
|
||||
};
|
||||
|
||||
static int pcspk_audio_init_soundhw(ISABus *bus)
|
||||
{
|
||||
PCSpkState *s = pcspk_state;
|
||||
|
||||
warn_report("'-soundhw pcspk' is deprecated, "
|
||||
"please set a backend using '-machine pcspk-audiodev=<name>' instead");
|
||||
return pcspk_audio_init(s);
|
||||
}
|
||||
|
||||
static void pcspk_register(void)
|
||||
{
|
||||
type_register_static(&pcspk_info);
|
||||
isa_register_soundhw("pcspk", "PC speaker", pcspk_audio_init);
|
||||
isa_register_soundhw("pcspk", "PC speaker", pcspk_audio_init_soundhw);
|
||||
}
|
||||
type_init(pcspk_register)
|
||||
|
@ -1892,6 +1892,8 @@ static void pc_machine_initfn(Object *obj)
|
||||
|
||||
pc_system_flash_create(pcms);
|
||||
pcms->pcspk = isa_new(TYPE_PC_SPEAKER);
|
||||
object_property_add_alias(OBJECT(pcms), "pcspk-audiodev",
|
||||
OBJECT(pcms->pcspk), "audiodev");
|
||||
}
|
||||
|
||||
static void pc_machine_reset(MachineState *machine)
|
||||
|
Loading…
Reference in New Issue
Block a user