#endif
#include <stdlib.h>
-#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include <errno.h>
#include <limits.h>
+#include <time.h>
#ifdef HAVE_GLOB_H
#include <glob.h>
#include <pulse/rtclock.h>
#include <pulsecore/sink-input.h>
-#include <pulsecore/sample-util.h>
#include <pulsecore/play-memchunk.h>
#include <pulsecore/core-subscribe.h>
#include <pulsecore/namereg.h>
} else {
e = pa_xnew(pa_scache_entry, 1);
- if (!pa_namereg_register(c, name, PA_NAMEREG_SAMPLE, e, TRUE)) {
+ if (!pa_namereg_register(c, name, PA_NAMEREG_SAMPLE, e, true)) {
pa_xfree(e);
return NULL;
}
e->last_used_time = 0;
pa_memchunk_reset(&e->memchunk);
e->filename = NULL;
- e->lazy = FALSE;
+ e->lazy = false;
e->last_used_time = 0;
pa_sample_spec_init(&e->sample_spec);
pa_channel_map_init(&e->channel_map);
pa_cvolume_init(&e->volume);
- e->volume_is_set = FALSE;
+ e->volume_is_set = false;
pa_proplist_sets(e->proplist, PA_PROP_MEDIA_ROLE, "event");
pa_sample_spec_init(&e->sample_spec);
pa_channel_map_init(&e->channel_map);
pa_cvolume_init(&e->volume);
- e->volume_is_set = FALSE;
+ e->volume_is_set = false;
if (ss) {
e->sample_spec = *ss;
if (!(e = scache_add_item(c, name)))
return -1;
- e->lazy = TRUE;
+ e->lazy = true;
e->filename = pa_xstrdup(filename);
pa_proplist_sets(e->proplist, PA_PROP_MEDIA_FILENAME, filename);
}
void pa_scache_free_all(pa_core *c) {
- pa_scache_entry *e;
-
pa_assert(c);
- while ((e = pa_idxset_steal_first(c->scache, NULL)))
- free_entry(e);
+ pa_idxset_remove_all(c->scache, (pa_free_cb_t) free_entry);
if (c->scache_auto_unload_event) {
c->mainloop->time_free(c->scache_auto_unload_event);
pa_scache_entry *e;
pa_cvolume r;
pa_proplist *merged;
- pa_bool_t pass_volume;
+ bool pass_volume;
pa_assert(c);
pa_assert(name);
return -1;
merged = pa_proplist_new();
- pa_proplist_setf(merged, PA_PROP_MEDIA_NAME, "Sample %s", name);
+ pa_proplist_sets(merged, PA_PROP_MEDIA_NAME, name);
+ pa_proplist_sets(merged, PA_PROP_EVENT_ID, name);
if (e->lazy && !e->memchunk.memblock) {
pa_channel_map old_channel_map = e->channel_map;
pa_log_debug("Playing sample \"%s\" on \"%s\"", name, sink->name);
- pass_volume = TRUE;
+ pass_volume = true;
- if (e->volume_is_set && volume != PA_VOLUME_INVALID) {
+ if (e->volume_is_set && PA_VOLUME_IS_VALID(volume)) {
pa_cvolume_set(&r, e->sample_spec.channels, volume);
pa_sw_cvolume_multiply(&r, &r, &e->volume);
} else if (e->volume_is_set)
r = e->volume;
- else if (volume != PA_VOLUME_INVALID)
+ else if (PA_VOLUME_IS_VALID(volume))
pa_cvolume_set(&r, e->sample_spec.channels, volume);
else
- pass_volume = FALSE;
+ pass_volume = false;
pa_proplist_update(merged, PA_UPDATE_REPLACE, e->proplist);
if (p)
pa_proplist_update(merged, PA_UPDATE_REPLACE, p);
- if (pa_play_memchunk(sink, &e->sample_spec, &e->channel_map, &e->memchunk, pass_volume ? &r : NULL, merged, sink_input_idx) < 0)
+ if (pa_play_memchunk(sink,
+ &e->sample_spec, &e->channel_map,
+ &e->memchunk,
+ pass_volume ? &r : NULL,
+ merged,
+ PA_SINK_INPUT_NO_CREATE_ON_SUSPEND|PA_SINK_INPUT_KILL_ON_SUSPEND, sink_input_idx) < 0)
goto fail;
pa_proplist_free(merged);
if (!c->scache || !pa_idxset_size(c->scache))
return 0;
- for (e = pa_idxset_first(c->scache, &idx); e; e = pa_idxset_next(c->scache, &idx))
+ PA_IDXSET_FOREACH(e, c->scache, idx)
if (e->memchunk.memblock)
sum += e->memchunk.length;
time(&now);
- for (e = pa_idxset_first(c->scache, &idx); e; e = pa_idxset_next(c->scache, &idx)) {
+ PA_IDXSET_FOREACH(e, c->scache, idx) {
if (!e->lazy || !e->memchunk.memblock)
continue;