diff options
Diffstat (limited to 'polyp')
-rw-r--r-- | polyp/polyplib-introspect.c | 4 | ||||
-rw-r--r-- | polyp/polyplib-introspect.h | 2 | ||||
-rw-r--r-- | polyp/protocol-native.c | 2 | ||||
-rw-r--r-- | polyp/scache.c | 15 | ||||
-rw-r--r-- | polyp/scache.h | 2 |
5 files changed, 24 insertions, 1 deletions
diff --git a/polyp/polyplib-introspect.c b/polyp/polyplib-introspect.c index e650fb9f..a4ecf5ee 100644 --- a/polyp/polyplib-introspect.c +++ b/polyp/polyplib-introspect.c @@ -46,6 +46,7 @@ static void context_stat_callback(struct pa_pdispatch *pd, uint32_t command, uin pa_tagstruct_getu32(t, &i.memblock_total_size) < 0 || pa_tagstruct_getu32(t, &i.memblock_allocated) < 0 || pa_tagstruct_getu32(t, &i.memblock_allocated_size) < 0 || + pa_tagstruct_getu32(t, &i.scache_size) < 0 || !pa_tagstruct_eof(t)) { pa_context_fail(o->context, PA_ERROR_PROTOCOL); goto finish; @@ -603,7 +604,8 @@ static void context_get_sample_info_callback(struct pa_pdispatch *pd, uint32_t c pa_tagstruct_gets(t, &i.name) < 0 || pa_tagstruct_getu32(t, &i.volume) < 0 || pa_tagstruct_getu32(t, &i.duration) < 0 || - pa_tagstruct_get_sample_spec(t, &i.sample_spec) < 0) { + pa_tagstruct_get_sample_spec(t, &i.sample_spec) < 0 || + pa_tagstruct_getu32(t, &i.bytes) < 0) { pa_context_fail(o->context, PA_ERROR_PROTOCOL); goto finish; } diff --git a/polyp/polyplib-introspect.h b/polyp/polyplib-introspect.h index 25a2db5e..1cc79d0f 100644 --- a/polyp/polyplib-introspect.h +++ b/polyp/polyplib-introspect.h @@ -180,6 +180,7 @@ struct pa_stat_info { uint32_t memblock_total_size; /**< Currentl total size of allocated memory blocks */ uint32_t memblock_allocated; /**< Allocated memory blocks during the whole lifetime of the daemon */ uint32_t memblock_allocated_size; /**< Total size of all memory blocks allocated during the whole lifetime of the daemon */ + uint32_t scache_size; /**< Total size of all sample cache entries. \since 0.4 */ }; /** Get daemon memory block statistics */ @@ -192,6 +193,7 @@ struct pa_sample_info { pa_volume_t volume; /**< Default volume of this entry */ struct pa_sample_spec sample_spec; /**< Sample specification of the sampel */ pa_usec_t duration; /**< Duration of this entry */ + uint32_t bytes; /**< Length of this sample in bytes. \since 0.4 */ }; /** Get information about a sample by its name */ diff --git a/polyp/protocol-native.c b/polyp/protocol-native.c index 9dddf9a1..cce6cc6c 100644 --- a/polyp/protocol-native.c +++ b/polyp/protocol-native.c @@ -797,6 +797,7 @@ static void command_stat(struct pa_pdispatch *pd, uint32_t command, uint32_t tag pa_tagstruct_putu32(reply, c->protocol->core->memblock_stat->total_size); pa_tagstruct_putu32(reply, c->protocol->core->memblock_stat->allocated); pa_tagstruct_putu32(reply, c->protocol->core->memblock_stat->allocated_size); + pa_tagstruct_putu32(reply, pa_scache_total_size(c->protocol->core)); pa_pstream_send_tagstruct(c->pstream, reply); } @@ -1044,6 +1045,7 @@ static void scache_fill_tagstruct(struct pa_tagstruct *t, struct pa_scache_entry pa_tagstruct_putu32(t, e->volume); pa_tagstruct_putu32(t, pa_bytes_to_usec(e->memchunk.length, &e->sample_spec)); pa_tagstruct_put_sample_spec(t, &e->sample_spec); + pa_tagstruct_putu32(t, e->memchunk.length); } static void command_get_info(struct pa_pdispatch *pd, uint32_t command, uint32_t tag, struct pa_tagstruct *t, void *userdata) { diff --git a/polyp/scache.c b/polyp/scache.c index 311d68a4..b7a8ff02 100644 --- a/polyp/scache.c +++ b/polyp/scache.c @@ -168,3 +168,18 @@ uint32_t pa_scache_get_id_by_name(struct pa_core *c, const char *name) { return e->index; } + +uint32_t pa_scache_total_size(struct pa_core *c) { + struct pa_scache_entry *e; + uint32_t index; + uint32_t sum; + + if (!c->scache) + return 0; + + for (e = pa_idxset_first(c->scache, &index); e; e = pa_idxset_next(c->scache, &index)) + sum += e->memchunk.length; + + + return sum; +} diff --git a/polyp/scache.h b/polyp/scache.h index 959067f3..cfd479b5 100644 --- a/polyp/scache.h +++ b/polyp/scache.h @@ -44,4 +44,6 @@ void pa_scache_free(struct pa_core *c); const char *pa_scache_get_name_by_id(struct pa_core *c, uint32_t id); uint32_t pa_scache_get_id_by_name(struct pa_core *c, const char *name); +uint32_t pa_scache_total_size(struct pa_core *c); + #endif |