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:
parent
931ae4f82f
commit
67bd22c154
11
paswitch.c
11
paswitch.c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
23
poller-pa.c
23
poller-pa.c
|
@ -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;
|
|
||||||
}
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue