mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 01:43:39 +00:00
mux: simplfy muxes_realize_done
mux_chr_event() already send events to all backends, rename it, export it, and use it from muxes_realize_done. This should help abstract away mux implementation. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
6361813527
commit
bed3bb9b7e
|
@ -114,7 +114,7 @@ static void mux_print_help(Chardev *chr)
|
|||
}
|
||||
}
|
||||
|
||||
void mux_chr_send_event(MuxChardev *d, int mux_nr, int event)
|
||||
static void mux_chr_send_event(MuxChardev *d, int mux_nr, int event)
|
||||
{
|
||||
CharBackend *be = d->backends[mux_nr];
|
||||
|
||||
|
@ -222,9 +222,9 @@ static void mux_chr_read(void *opaque, const uint8_t *buf, int size)
|
|||
|
||||
bool muxes_realized;
|
||||
|
||||
static void mux_chr_event(void *opaque, int event)
|
||||
void mux_chr_send_all_event(Chardev *chr, int event)
|
||||
{
|
||||
MuxChardev *d = MUX_CHARDEV(opaque);
|
||||
MuxChardev *d = MUX_CHARDEV(chr);
|
||||
int i;
|
||||
|
||||
if (!muxes_realized) {
|
||||
|
@ -237,6 +237,11 @@ static void mux_chr_event(void *opaque, int event)
|
|||
}
|
||||
}
|
||||
|
||||
static void mux_chr_event(void *opaque, int event)
|
||||
{
|
||||
mux_chr_send_all_event(CHARDEV(opaque), event);
|
||||
}
|
||||
|
||||
static GSource *mux_chr_add_watch(Chardev *s, GIOCondition cond)
|
||||
{
|
||||
MuxChardev *d = MUX_CHARDEV(s);
|
||||
|
|
|
@ -58,6 +58,6 @@ typedef struct MuxChardev {
|
|||
|
||||
void mux_chr_set_handlers(Chardev *chr, GMainContext *context);
|
||||
void mux_set_focus(Chardev *chr, int focus);
|
||||
void mux_chr_send_event(MuxChardev *d, int mux_nr, int event);
|
||||
void mux_chr_send_all_event(Chardev *chr, int event);
|
||||
|
||||
#endif /* CHAR_MUX_H */
|
||||
|
|
|
@ -451,22 +451,17 @@ static void muxes_realize_done(Notifier *notifier, void *unused)
|
|||
{
|
||||
Chardev *chr;
|
||||
|
||||
muxes_realized = true;
|
||||
QTAILQ_FOREACH(chr, &chardevs, next) {
|
||||
if (CHARDEV_IS_MUX(chr)) {
|
||||
MuxChardev *d = MUX_CHARDEV(chr);
|
||||
int i;
|
||||
|
||||
/* send OPENED to all already-attached FEs */
|
||||
for (i = 0; i < d->mux_cnt; i++) {
|
||||
mux_chr_send_event(d, i, CHR_EVENT_OPENED);
|
||||
}
|
||||
mux_chr_send_all_event(CHARDEV(chr), CHR_EVENT_OPENED);
|
||||
/* mark mux as OPENED so any new FEs will immediately receive
|
||||
* OPENED event
|
||||
*/
|
||||
qemu_chr_be_event(chr, CHR_EVENT_OPENED);
|
||||
}
|
||||
}
|
||||
muxes_realized = true;
|
||||
}
|
||||
|
||||
static Notifier muxes_realize_notify = {
|
||||
|
|
Loading…
Reference in a new issue