diff options
author | james <> | 2008-02-13 16:57:29 +0000 |
---|---|---|
committer | james <> | 2008-02-13 16:57:29 +0000 |
commit | e32ce0cfdccf5240ae29ef06a13078ae37ee521a (patch) | |
tree | f036688b6831dd6fd288df03023950597987c031 /src/slide.c | |
parent | 23dc931ca671e938da071d24d8e9b6052e49923a (diff) | |
download | sympathy-e32ce0cfdccf5240ae29ef06a13078ae37ee521a.tar.gz sympathy-e32ce0cfdccf5240ae29ef06a13078ae37ee521a.tar.bz2 sympathy-e32ce0cfdccf5240ae29ef06a13078ae37ee521a.zip |
*** empty log message ***
Diffstat (limited to 'src/slide.c')
-rw-r--r-- | src/slide.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/src/slide.c b/src/slide.c new file mode 100644 index 0000000..e20d0be --- /dev/null +++ b/src/slide.c @@ -0,0 +1,84 @@ +/* + * slide.c: + * + * Copyright (c) 2008 James McKenzie <james@fishsoup.dhs.org>, + * All rights reserved. + * + */ + +static char rcsid[] = "$Id$"; + +/* + * $Log$ + * Revision 1.1 2008/02/13 16:57:29 james + * *** empty log message *** + * + * Revision 1.3 2008/02/13 09:12:21 james + * *** empty log message *** + * + * Revision 1.2 2008/02/12 22:36:46 james + * *** empty log message *** + * + * Revision 1.1 2008/02/08 15:06:42 james + * *** empty log message *** + * + */ + +#include "project.h" + +void +slide_free (Slide * s) +{ + free (s->slide); + free (s); +} + +void +slide_consume (Slide * s, int n) +{ + s->nbytes -= n; + memmove (s->slide, s->slide + n, s->nbytes); + + if ((s->size > s->target_size) && (s->nbytes <= s->size)) + { + s->size = s->target_size; + s->slide = realloc (s->slide, s->size); + } + +} + +void +slide_added (Slide * s, int n) +{ + s->nbytes += n; +} + +Slide * +slide_new (int n) +{ + Slide *ret = (Slide *) malloc (sizeof (Slide)); + + ret->slide = (uint8_t *) malloc (n); + ret->size = n; + ret->target_size = n; + ret->nbytes = 0; + + return ret; +} + + +void +slide_expand (Slide * s, int n) +{ + n += s->nbytes; + + if (n <= s->size) + return; + + while (n > s->size) + s->size <<= 1; + +//FIXME -- might fail + s->slide = realloc (s->slide, s->size); + +} |