Changeset 1157:5a1850d8ec0f in roaraudio


Ignore:
Timestamp:
01/23/09 20:43:07 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

allow overruns in sync streams, make new driver API more stable (network drivers/SIGSOP/SIGCONT)

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r1149 r1157  
    55        * added basic support to report latency 
    66        * added vio support for ctl()s 
     7        * allow overruns in sync output streams 
    78 
    89v. 0.1beta5 - Wed Jan 21 2009 
  • roard/streams.c

    r1155 r1157  
    795795 struct roar_stream        *   s; 
    796796 struct roar_stream_server *  ss; 
    797  void * obuf; 
    798  int    olen; 
    799  int    need_to_free = 0; 
     797 void  * obuf; 
     798 int     olen; 
     799 int     need_to_free = 0; 
     800 ssize_t ret; 
    800801 
    801802 if ( g_streams[id] == NULL ) 
     
    846847   return 0; 
    847848 
    848   if ( stream_vio_s_write(ss, obuf, olen) == olen ) { 
     849  if ( (ret = stream_vio_s_write(ss, obuf, olen)) == olen ) { 
    849850   if ( need_to_free ) free(obuf); 
    850851   s->pos = ROAR_MATH_OVERFLOW_ADD(s->pos, ROAR_OUTPUT_CALC_OUTBUFSAMP(&(s->info), olen)*s->info.channels); 
     852   return 0; 
     853  } 
     854 
     855  if ( ret > 0 && errno == 0 ) { 
     856   ROAR_WARN("streams_send_mon(id=%i): Overrun in stream: write %i of %i bytes, %i bytes missing", id, ret, olen, olen-ret); 
     857   if ( need_to_free ) free(obuf); 
     858   s->pos = ROAR_MATH_OVERFLOW_ADD(s->pos, ROAR_OUTPUT_CALC_OUTBUFSAMP(&(s->info), ret)*s->info.channels); 
    851859   return 0; 
    852860  } 
Note: See TracChangeset for help on using the changeset viewer.