Changeset 5348:83fcc9598253 in roaraudio
- Timestamp:
- 12/11/11 12:38:30 (12 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
ChangeLog
r5296 r5348 1 1 v. 1.0beta0 - ? 2 * Updated API (SONAME change) (Closes: #184, #185, #128, #135, #134, #133, #129, #188) 2 * Updated API (SONAME change) 3 (Closes: #184, #185, #128, #135, #134, #133, #129, #188, #126) 3 4 * Do not set errno to zero in ogg_vorbis codec filter (Closes: #191) 4 5 * Updated data types for struct roar_audio_info (Closes: #189) -
include/libroar/buffer.h
r5302 r5348 65 65 #define roar_buffer_free(x) roar_buffer_unref(x) 66 66 67 #define roar_buffer_foreach(cur) for (; (cur) != NULL; (cur) = (roar_buffer_ get_next((cur),&(cur)) == -1) ? NULL : (cur))67 #define roar_buffer_foreach(cur) for (; (cur) != NULL; (cur) = (roar_buffer_next(&(cur)) == -1) ? NULL : (cur)) 68 68 69 69 int roar_buffer_new_no_ma(struct roar_buffer ** buf, size_t len, void * data) _LIBROAR_BUFFER_STDATTRS; // no internal malloc -
libroar/buffer.c
r5300 r5348 181 181 ROAR_DBG("roar_buffer_unref(buf=%p) = ?", buf); 182 182 183 flags = buf->flags & (ROAR_BUFFER_FLAG_USEABLE|ROAR_BUFFER_FLAG_FREED); 184 if ( flags == ROAR_BUFFER_FLAG_FREED ) { 185 roar_panic(ROAR_FATAL_ERROR_MEMORY_DOUBLE_FREE, NULL); 186 } 187 188 _ckmem_corruption(buf, 0); 189 190 ROAR_DBG("roar_buffer_unref(buf=%p) = ?", buf); 191 192 if ( buf->refc == 0 ) { 193 ROAR_WARN("roar_buffer_unref(buf=%p): Ref counter is wrong. assuming one."); 194 buf->refc = 1; 195 roar_panic(ROAR_FATAL_ERROR_MEMORY_CORRUPTION, NULL); 196 } 197 198 buf->refc--; 199 200 if ( buf->refc ) { 201 ROAR_DBG("roar_buffer_unref(buf=%p) = 0", buf); 202 return 0; 203 } 204 205 ROAR_DBG("roar_buffer_unref(buf=%p) = ?", buf); 206 207 cur = buf->next; 183 cur = buf; 208 184 while (cur != NULL) { 209 185 flags = cur->flags & (ROAR_BUFFER_FLAG_USEABLE|ROAR_BUFFER_FLAG_FREED); … … 212 188 } 213 189 190 _ckmem_corruption(cur, 0); 191 192 if ( cur->refc == 0 ) { 193 ROAR_WARN("roar_buffer_unref(buf=%p): Ref counter for buffer at %p is wrong. assuming one.", cur); 194 cur->refc = 1; 195 roar_panic(ROAR_FATAL_ERROR_MEMORY_CORRUPTION, NULL); 196 } else if ( cur->refc > 1 ) { 197 cur->refc--; 198 return 0; 199 } 200 214 201 ROAR_DBG("roar_buffer_unref(buf=%p) = ?", buf); 215 216 _ckmem_corruption(cur, 0);217 202 218 203 if ( roar_buffer_get_flag(cur, ROAR_BUFFER_FLAG_NOFREE) != 1 ) … … 224 209 cur = next; 225 210 } 226 227 ROAR_DBG("roar_buffer_unref(buf=%p) = ?", buf);228 229 if ( !(buf->flags & ROAR_BUFFER_FLAG_NOFREE) )230 roar_mm_free(buf->data);231 232 ROAR_DBG("roar_buffer_unref(buf=%p): setting flags = ROAR_BUFFER_FLAG_FREED", buf);233 buf->flags = ROAR_BUFFER_FLAG_FREED;234 235 roar_mm_free(buf);236 211 237 212 ROAR_DBG("roar_buffer_unref(buf=%p) = 0", buf); … … 247 222 } 248 223 249 ROAR_DBG("buffer_delete(buf=%p, next=%p) = ?", buf, next); 250 251 if ( next != NULL ) 252 *next = buf->next; 253 254 if ( roar_buffer_get_flag(buf, ROAR_BUFFER_FLAG_NOFREE) != 1 ) 255 roar_mm_free(buf->data); 256 257 roar_mm_free(buf); 258 259 ROAR_DBG("buffer_delete(buf=%p, next=%p) = 0", buf, next); 260 return 0; 224 ROAR_DBG("roar_buffer_delete(buf=%p, next=%p) = ?", buf, next); 225 226 if ( next != NULL ) { 227 *next = buf; 228 return roar_buffer_next(next); 229 } else { 230 return roar_buffer_unref(buf); 231 } 261 232 } 262 233 263 234 int roar_buffer_next (struct roar_buffer ** buf) { 264 return roar_buffer_delete(*buf, buf); 235 struct roar_buffer * ret; 236 237 if ( buf == NULL || *buf == NULL ) { 238 roar_err_set(ROAR_ERROR_FAULT); 239 } 240 241 ret = (*buf)->next; 242 243 if ( ret != NULL ) 244 roar_buffer_ref(ret); 245 246 roar_buffer_unref(*buf); 247 248 *buf = ret; 249 250 return 0; 265 251 } 266 252 267 253 int roar_buffer_add (struct roar_buffer * buf, struct roar_buffer * next) { 254 if ( roar_buffer_ref(next) == -1 ) 255 return -1; 268 256 return roar_buffer_moveinto(buf, &next); 269 257 } … … 314 302 *next = buf->next; 315 303 316 return 0;304 return roar_buffer_ref(*next); 317 305 } 318 306 -
libroarpulse/stream.c
r5300 r5348 235 235 break; 236 236 case PA_STREAM_RECORD: 237 if ( roar_buffer_new (&buf, s->fragments.size) == -1 )237 if ( roar_buffer_new_data(&buf, s->fragments.size, &data) == -1 ) 238 238 return; 239 240 if ( roar_buffer_get_data(buf, &data) == -1 ) {241 roar_buffer_free(buf);242 return;243 }244 239 245 240 if ( (ret = roar_vio_read(&(s->vio), data, s->fragments.size)) < 1 ) { … … 442 437 // seems we have a valid write from here. 443 438 444 if ( roar_buffer_new(&buf, length) == -1 ) { 445 if ( free_cb != NULL ) 446 free_cb((void*)data); 447 448 return -1; 449 } 450 451 if ( roar_buffer_get_data(buf, &bufdata) == -1 ) { 439 if ( roar_buffer_new_data(&buf, length, &bufdata) == -1 ) { 452 440 if ( free_cb != NULL ) 453 441 free_cb((void*)data); … … 463 451 p->iobuffer = buf; 464 452 } else { 465 if ( roar_buffer_moveinto(p->iobuffer, &buf) == -1 ) 453 if ( roar_buffer_moveinto(p->iobuffer, &buf) == -1 ) { 454 roar_buffer_free(buf); 466 455 return -1; 456 } 467 457 } 468 458 -
roard/midi.c
r5305 r5348 583 583 send_clock = streams_get_flag(id, ROAR_FLAG_SYNC); 584 584 585 if ( roar_buffer_ref(buf) == -1 ) 586 return -1; 587 585 588 roar_buffer_foreach(buf) { 586 589 if ( roar_buffer_get_data(buf, &bufdata) == -1 ) { … … 650 653 void * bufdata; 651 654 655 if ( roar_buffer_ref(g_midi_mess.buf) == -1 ) 656 return -1; 657 652 658 roar_buffer_foreach(buf) { 653 659 if ( roar_buffer_get_data(buf, &bufdata) == -1 ) {
Note: See TracChangeset
for help on using the changeset viewer.