player: fix audio-device-list updates

The way the AO wakes up the playloop has nothing to do with events;
instead we must query the events on the AO once the playloop was woken
up. Querying the events in every playloop iteration is thus the correct
way to do this.
This commit is contained in:
wm4 2015-02-14 15:13:58 +01:00
parent a799a4c57f
commit 04472352ae
3 changed files with 8 additions and 0 deletions

View File

@ -4875,6 +4875,11 @@ static void command_event(struct MPContext *mpctx, int event, void *arg)
// Update chapters - does nothing if something else is visible.
set_osd_bar_chapters(mpctx, OSD_BAR_SEEK);
}
}
void handle_command_updates(struct MPContext *mpctx)
{
struct command_ctx *ctx = mpctx->command_ctx;
// This is a bit messy: ao_hotplug wakes up the player, and then we have
// to recheck the state. Then the client(s) will read the property.

View File

@ -36,6 +36,8 @@ int mp_property_do(const char* name, int action, void* val,
void mp_notify(struct MPContext *mpctx, int event, void *arg);
void mp_notify_property(struct MPContext *mpctx, const char *property);
void handle_command_updates(struct MPContext *mpctx);
int mp_get_property_id(const char *name);
uint64_t mp_get_property_event_mask(const char *name);

View File

@ -986,6 +986,7 @@ void run_playloop(struct MPContext *mpctx)
handle_cursor_autohide(mpctx);
handle_vo_events(mpctx);
handle_heartbeat_cmd(mpctx);
handle_command_updates(mpctx);
fill_audio_out_buffers(mpctx, endpts);
write_video(mpctx, endpts);