summaryrefslogtreecommitdiffstats
path: root/polyp
diff options
context:
space:
mode:
Diffstat (limited to 'polyp')
-rw-r--r--polyp/polyplib-introspect.c4
-rw-r--r--polyp/polyplib-introspect.h2
-rw-r--r--polyp/protocol-native.c2
-rw-r--r--polyp/scache.c15
-rw-r--r--polyp/scache.h2
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