From e972ff4857d6b7f6cd8240e199185fca39d5ea47 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 19 Jan 2015 20:03:17 +0100 Subject: client API: minor cleanup Try not to put "everything" into mpv_wait_event: move out the code for generating log message events. --- player/client.c | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/player/client.c b/player/client.c index c4f02b84c8..6a21596eb3 100644 --- a/player/client.c +++ b/player/client.c @@ -126,6 +126,7 @@ struct mpv_handle { struct mp_log_buffer *messages; }; +static bool gen_log_message_event(struct mpv_handle *ctx); static bool gen_property_change_event(struct mpv_handle *ctx); static void notify_property_events(struct mpv_handle *ctx, uint64_t event_mask); @@ -755,23 +756,8 @@ mpv_event *mpv_wait_event(mpv_handle *ctx, double timeout) if (gen_property_change_event(ctx)) break; // Pop item from message queue, and return as event. - if (ctx->messages) { - struct mp_log_buffer_entry *msg = - mp_msg_log_buffer_read(ctx->messages); - if (msg) { - event->event_id = MPV_EVENT_LOG_MESSAGE; - struct mpv_event_log_message *cmsg = talloc_ptrtype(event, cmsg); - *cmsg = (struct mpv_event_log_message){ - .prefix = msg->prefix, - .level = mp_log_levels[msg->level], - .log_level = mp_mpv_log_levels[msg->level], - .text = msg->text, - }; - talloc_steal(event, msg); - event->data = cmsg; - break; - } - } + if (gen_log_message_event(ctx)) + break; int r = wait_wakeup(ctx, deadline); if (r == ETIMEDOUT) break; @@ -1543,6 +1529,31 @@ int mpv_request_log_messages(mpv_handle *ctx, const char *min_level) return 0; } +// Set ctx->cur_event to a generated log message event, if any available. +static bool gen_log_message_event(struct mpv_handle *ctx) +{ + if (ctx->messages) { + struct mp_log_buffer_entry *msg = + mp_msg_log_buffer_read(ctx->messages); + if (msg) { + struct mpv_event_log_message *cmsg = + talloc_ptrtype(ctx->cur_event, cmsg); + *cmsg = (struct mpv_event_log_message){ + .prefix = msg->prefix, + .level = mp_log_levels[msg->level], + .log_level = mp_mpv_log_levels[msg->level], + .text = msg->text, + }; + *ctx->cur_event = (struct mpv_event){ + .event_id = MPV_EVENT_LOG_MESSAGE, + .data = cmsg, + }; + return true; + } + } + return false; +} + int mpv_get_wakeup_pipe(mpv_handle *ctx) { pthread_mutex_lock(&ctx->wakeup_lock); -- cgit v1.2.3