poller-pa.c: abandon the idea of quitting the loop

There are no users of this API in practice,
and it prevents making the libpulse dependency optional.
This commit is contained in:
Přemysl Eric Janouch 2021-11-07 14:45:56 +01:00
parent 931ae4f82f
commit 67bd22c154
Signed by: p
GPG Key ID: A0420B94F92B9493
3 changed files with 14 additions and 23 deletions

View File

@ -143,6 +143,7 @@ struct app_context
struct poller_timer tty_timer; ///< Terminal input timeout struct poller_timer tty_timer; ///< Terminal input timeout
struct str tty_input_buffer; ///< Buffered terminal input struct str tty_input_buffer; ///< Buffered terminal input
bool quitting; ///< Quitting requested
pa_mainloop_api *api; ///< PulseAudio event loop proxy pa_mainloop_api *api; ///< PulseAudio event loop proxy
pa_context *context; ///< PulseAudio connection context pa_context *context; ///< PulseAudio connection context
@ -683,7 +684,7 @@ on_action (struct app_context *ctx, enum action action)
break; break;
case ACTION_QUIT: case ACTION_QUIT:
poller_pa_quit (ctx->api, 0); ctx->quitting = true;
case ACTION_NONE: case ACTION_NONE:
break; break;
} }
@ -910,7 +911,7 @@ on_signal_pipe_readable (const struct pollfd *pfd, struct app_context *ctx)
(void) read (pfd->fd, &id, 1); (void) read (pfd->fd, &id, 1);
if (id == SIGINT || id == SIGTERM || id == SIGHUP) if (id == SIGINT || id == SIGTERM || id == SIGHUP)
poller_pa_quit (ctx->api, 0); ctx->quitting = true;
else if (id == SIGWINCH) else if (id == SIGWINCH)
poller_idle_set (&ctx->redraw_event); poller_idle_set (&ctx->redraw_event);
else else
@ -1068,7 +1069,9 @@ main (int argc, char *argv[])
poller_timer_init_and_set (&ctx.make_context, &ctx.poller, poller_timer_init_and_set (&ctx.make_context, &ctx.poller,
on_make_context, &ctx); on_make_context, &ctx);
int status = poller_pa_run (ctx.api); while (!ctx.quitting)
poller_run (&ctx.poller);
app_context_free (&ctx); app_context_free (&ctx);
return status; return 0;
} }

View File

@ -59,9 +59,6 @@ struct pa_defer_event
struct poller_pa struct poller_pa
{ {
struct poller *poller; ///< The underlying event loop struct poller *poller; ///< The underlying event loop
int result; ///< Result on quit
bool running; ///< Not quitting
pa_io_event *io_list; ///< I/O events pa_io_event *io_list; ///< I/O events
pa_time_event *time_list; ///< Timer events pa_time_event *time_list; ///< Timer events
pa_defer_event *defer_list; ///< Deferred events pa_defer_event *defer_list; ///< Deferred events
@ -293,9 +290,11 @@ poller_pa_defer_set_destroy (pa_defer_event *self,
static void static void
poller_pa_quit (pa_mainloop_api *api, int retval) poller_pa_quit (pa_mainloop_api *api, int retval)
{ {
struct poller_pa *data = api->userdata; (void) api;
data->result = retval; (void) retval;
data->running = false;
// This is not called from within libpulse
hard_assert (!"quitting the libpulse event loop is unimplemented");
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -347,15 +346,3 @@ poller_pa_destroy (struct pa_mainloop_api *api)
free (data); free (data);
free (api); free (api);
} }
/// Since our poller API doesn't care much about continuous operation,
/// we need to provide that in the PulseAudio abstraction itself
static int
poller_pa_run (struct pa_mainloop_api *api)
{
struct poller_pa *data = api->userdata;
data->running = true;
while (data->running)
poller_run (data->poller);
return data->result;
}

View File

@ -2745,7 +2745,8 @@ main (int argc, char *argv[])
if (ctx.backend->start) if (ctx.backend->start)
ctx.backend->start (ctx.backend); ctx.backend->start (ctx.backend);
poller_pa_run (ctx.api); while (true)
poller_run (&ctx.poller);
if (ctx.backend->stop) if (ctx.backend->stop)
ctx.backend->stop (ctx.backend); ctx.backend->stop (ctx.backend);