Changeset 5262:770d0aaae8de in roaraudio


Ignore:
Timestamp:
11/14/11 01:13:34 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

use RE-VIO if possible

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vs.c

    r5239 r5262  
    5050#define FLAG_FREE_VOL  0x0010 
    5151#define FLAG_DEF_PAUSE 0x0020 
     52#define FLAG_VIO_RE    0x0040 
    5253#define FLAG_DIR_IN    0x1000 
    5354#define FLAG_DIR_OUT   0x2000 
     
    6667 struct roar_stream       stream; 
    6768 struct roar_vio_calls    vio; 
     69 struct roar_vio_calls    vio_re; 
     70 struct roar_vio_calls  * vio_ptr; 
    6871 struct roar_audio_info   info; 
    6972 size_t                   readc, writec; 
     
    262265 memset(vss, 0, sizeof(roar_vs_t)); 
    263266 
     267 vss->vio_ptr = &(vss->vio); 
     268 
    264269 vss->mixerid      = -1; 
    265270 vss->first_primid = -1; 
     
    336341                                     ); 
    337342 
     343 if ( roar_vio_open_re(&(vss->vio_re), &(vss->vio)) != -1 ) { 
     344  vss->flags |= FLAG_VIO_RE; 
     345  vss->vio_ptr = &(vss->vio_re); 
     346 } 
     347 
    338348 if ( ret == -1 ) { 
    339349  _seterrre(); 
     
    347357  if ( vss->mixerid != -1 && vss->mixerid != sinfo.mixer ) { 
    348358   _seterr(ROAR_ERROR_INVAL); // TODO: should we maybe use a diffrent value? 
    349    roar_vio_close(&(vss->vio)); 
     359   roar_vio_close(vss->vio_ptr); 
    350360   return -1; 
    351361  } 
     
    559569  } 
    560570 
    561   roar_vio_close(&(vss->vio)); 
     571  roar_vio_close(vss->vio_ptr); 
    562572 } 
    563573 
     
    571581 
    572582static ssize_t roar_vs_write_direct(roar_vs_t * vss, const void * buf, size_t len, int * error) { 
    573  ssize_t ret = roar_vio_write(&(vss->vio), (void*)buf, len); 
     583 ssize_t ret = roar_vio_write(vss->vio_ptr, (void*)buf, len); 
    574584 
    575585 if ( ret == -1 ) { 
     
    633643 _initerr(); 
    634644 
    635  ret = roar_vio_read(&(vss->vio), buf, len); 
     645 ret = roar_vio_read(vss->vio_ptr, buf, len); 
    636646 
    637647 if ( ret == -1 ) { 
     
    661671 _initerr(); 
    662672 
    663  if ( roar_vio_sync(&(vss->vio)) == -1 ) { 
     673 if ( roar_vio_sync(vss->vio_ptr) == -1 ) { 
    664674  _seterrre(); 
    665675  return -1; 
     
    700710 switch (val) { 
    701711  case ROAR_VS_TRUE: 
    702     if ( roar_vio_nonblock(&(vss->vio), ROAR_SOCKET_BLOCK) == -1 ) { 
     712    if ( roar_vio_nonblock(vss->vio_ptr, ROAR_SOCKET_BLOCK) == -1 ) { 
    703713     _seterrre(); 
    704714     return -1; 
     
    709719   break; 
    710720  case ROAR_VS_FALSE: 
    711     if ( roar_vio_nonblock(&(vss->vio), ROAR_SOCKET_NONBLOCK) == -1 ) { 
     721    if ( roar_vio_nonblock(vss->vio_ptr, ROAR_SOCKET_NONBLOCK) == -1 ) { 
    712722     _seterrre(); 
    713723     return -1; 
     
    854864 sockopt.optlen  = sizeof(val); 
    855865 
    856  if ( roar_vio_ctl(&(vss->vio), ROAR_VIO_CTL_GET_SYSIO_SOCKOPT, &sockopt) == -1 ) 
     866 if ( roar_vio_ctl(vss->vio_ptr, ROAR_VIO_CTL_GET_SYSIO_SOCKOPT, &sockopt) == -1 ) 
    857867  return; 
    858868 
     
    865875 sockopt.optlen  = sizeof(val); 
    866876 
    867  if ( roar_vio_ctl(&(vss->vio), ROAR_VIO_CTL_SET_SYSIO_SOCKOPT, &sockopt) == -1 ) 
     877 if ( roar_vio_ctl(vss->vio_ptr, ROAR_VIO_CTL_SET_SYSIO_SOCKOPT, &sockopt) == -1 ) 
    868878  return; 
    869879} 
     
    13021312 } 
    13031313 
    1304  ROAR_VIO_SELECT_SETVIO(&(vios[len]), &(vss->vio), ((vss->flags & FLAG_DIR_IN  ? ROAR_VIO_SELECT_READ  : 0) | 
     1314 ROAR_VIO_SELECT_SETVIO(&(vios[len]), vss->vio_ptr, ((vss->flags & FLAG_DIR_IN  ? ROAR_VIO_SELECT_READ  : 0) | 
    13051315                                                    (vss->flags & FLAG_DIR_OUT ? ROAR_VIO_SELECT_WRITE : 0))); 
    1306  vios[len].ud.vp = &(vss->vio); 
     1316 vios[len].ud.vp = vss->vio_ptr; 
    13071317 len++; 
    13081318 
     
    13411351   continue; 
    13421352 
    1343   if ( vios[i].ud.vp == &(vss->vio) ) { 
     1353  if ( vios[i].ud.vp == vss->vio_ptr ) { 
    13441354   if ( vios[i].eventsa & ROAR_VIO_SELECT_READ ) 
    13451355    can_read++; 
     
    17801790 } 
    17811791 
    1782  return &(vss->vio); 
     1792 return vss->vio_ptr; 
    17831793} 
    17841794 
Note: See TracChangeset for help on using the changeset viewer.