Changeset 5071:a550bcffdb13 in roaraudio


Ignore:
Timestamp:
06/19/11 13:44:49 (13 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added a function to handle async stuff, still need to integerate it with roar_vs_iterate()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vs.c

    r5069 r5071  
    5757#define _seterrse() do { roar_err_from_errno(); _seterr(roar_error); } while(0) 
    5858#define _ckvss(ret) do { if ( vss == NULL ) { _seterr(ROAR_ERROR_INVAL); return (ret); } } while(0) 
     59#define _ckasync(ret) do { if ( _handle_async(vss, error) == -1 ) { return (ret); } } while(0); 
    5960 
    6061struct roar_vs { 
     
    8586  struct roar_time last_time; 
    8687 } latmes; 
     88 struct { 
     89  size_t qlen; 
     90 } async; 
    8791}; 
    8892 
    8993static int _roar_vs_find_first_prim(roar_vs_t * vss); 
     94 
     95static int _handle_async_req(roar_vs_t * vss, int * error) { 
     96 _seterr(ROAR_ERROR_NOSYS); 
     97 return -1; 
     98} 
     99 
     100static inline int _handle_async(roar_vs_t * vss, int * error) { 
     101 while (vss->async.qlen) { 
     102  if ( _handle_async_req(vss, error) == -1 ) { 
     103   return -1; 
     104  } 
     105 } 
     106 
     107 return 0; 
     108} 
    90109 
    91110const char * roar_vs_strerr(int error) { 
     
    383402 
    384403 _ckvss(-1); 
     404 _ckasync(-1); 
    385405 
    386406 if ( vss->readbuffer != NULL ) 
     
    510530 
    511531 if ( wait == ROAR_VS_WAIT ) { 
     532  _ckasync(-1); 
     533 
    512534  memset(&waits, 0, sizeof(waits)); 
    513535  waits.event       = ROAR_OE_STREAM_XRUN; 
     
    579601 int num; 
    580602 int i; 
     603 int * error = NULL; // needed for _ckasync() macro 
     604 
     605 _ckasync(-1); 
    581606 
    582607 if ( vss->first_primid != -1 ) 
     
    616641 
    617642 _ckvss(-1); 
     643 _ckasync(-1); 
    618644 
    619645 if ( !(vss->flags & FLAG_STREAM) ) { 
     
    716742 
    717743 _ckvss(0); 
     744 _ckasync(-1); 
    718745 
    719746 if (pos == -1) { 
     
    849876 
    850877 _ckvss(-1); 
     878 _ckasync(-1); 
    851879 
    852880 if ( !(vss->flags & FLAG_STREAM) ) { 
     
    902930 
    903931 _ckvss(-1); 
     932 _ckasync(-1); 
    904933 
    905934 if ( !(vss->flags & FLAG_STREAM) ) { 
     
    10101039 } 
    10111040 
     1041 _ckasync(-1); 
     1042 
    10121043 _initerr(); 
    10131044 
     
    10331064 
    10341065 _ckvss(-1); 
     1066 _ckasync(-1); 
    10351067 
    10361068 if ( !(vss->flags & FLAG_STREAM) ) { 
     
    10741106int     roar_vs_role          (roar_vs_t * vss, int role, int * error) { 
    10751107 _ckvss(-1); 
     1108 _ckasync(-1); 
    10761109 
    10771110 if ( !(vss->flags & FLAG_STREAM) ) { 
Note: See TracChangeset for help on using the changeset viewer.