mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-07 13:30:03 -05:00
more work
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@17 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
parent
98f41f1e70
commit
78f386ad45
19 changed files with 269 additions and 201 deletions
|
|
@ -1,15 +1,22 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <sys/time.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "memblock.h"
|
||||
|
||||
unsigned n_blocks = 0;
|
||||
|
||||
struct memblock *memblock_new(size_t length) {
|
||||
struct memblock *b = malloc(sizeof(struct memblock)+length);
|
||||
b->type = MEMBLOCK_APPENDED;
|
||||
b->ref = 1;
|
||||
b->length = length;
|
||||
b->data = b+1;
|
||||
n_blocks++;
|
||||
timerclear(&b->stamp);
|
||||
return b;
|
||||
}
|
||||
|
||||
|
|
@ -19,6 +26,8 @@ struct memblock *memblock_new_fixed(void *d, size_t length) {
|
|||
b->ref = 1;
|
||||
b->length = length;
|
||||
b->data = d;
|
||||
n_blocks++;
|
||||
timerclear(&b->stamp);
|
||||
return b;
|
||||
}
|
||||
|
||||
|
|
@ -28,6 +37,8 @@ struct memblock *memblock_new_dynamic(void *d, size_t length) {
|
|||
b->ref = 1;
|
||||
b->length = length;
|
||||
b->data = d;
|
||||
n_blocks++;
|
||||
timerclear(&b->stamp);
|
||||
return b;
|
||||
}
|
||||
|
||||
|
|
@ -45,6 +56,7 @@ void memblock_unref(struct memblock*b) {
|
|||
if (b->type == MEMBLOCK_DYNAMIC)
|
||||
free(b->data);
|
||||
free(b);
|
||||
n_blocks--;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -65,3 +77,29 @@ void memblock_unref_fixed(struct memblock *b) {
|
|||
b->type = MEMBLOCK_DYNAMIC;
|
||||
}
|
||||
|
||||
void memblock_stamp(struct memblock*b) {
|
||||
assert(b);
|
||||
gettimeofday(&b->stamp, NULL);
|
||||
}
|
||||
|
||||
uint32_t memblock_age(struct memblock*b) {
|
||||
assert(b);
|
||||
struct timeval tv;
|
||||
uint32_t r;
|
||||
|
||||
if (b->stamp.tv_sec == 0)
|
||||
return (suseconds_t) -1;
|
||||
|
||||
gettimeofday(&tv, NULL);
|
||||
|
||||
/*fprintf(stderr, "memblock: (%lu,%lu) -- (%lu,%lu)\r", b->stamp.tv_sec, b->stamp.tv_usec, tv.tv_sec, tv.tv_usec);*/
|
||||
|
||||
r = (tv.tv_sec-b->stamp.tv_sec) * 1000000;
|
||||
|
||||
if (tv.tv_usec >= b->stamp.tv_usec)
|
||||
r += tv.tv_usec - b->stamp.tv_usec;
|
||||
else
|
||||
r -= b->stamp.tv_usec - tv.tv_usec;
|
||||
|
||||
return r;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue