Changeset 4193:024769a1636b in roaraudio


Ignore:
Timestamp:
08/15/10 02:22:09 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

fixed rsd bug with long running streams

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • ChangeLog

    r4190 r4193  
    66        * Updated Debian init script 
    77        * Added VS API 
     8        * Fixed strange bug in RSound emulation killing streams 
     9          after long time. 
    810 
    911v. 0.3beta7 - Fri Jul 23 2010 15:11 CEST 
  • roard/emul_rsound.c

    r4130 r4193  
    145145 
    146146int emul_rsound_vrecv_msg(struct emul_rsound_msg * msg, struct roar_vio_calls * vio) { 
     147 struct roar_vio_select select; 
     148 struct roar_vio_selecttv tv = { 
     149  .sec  = 0, 
     150  .nsec = 0 
     151 }; 
    147152 ssize_t ret; 
    148153 int     num; 
     
    150155 if ( msg == NULL || vio == NULL ) 
    151156  return -1; 
     157 
     158 ROAR_VIO_SELECT_SETVIO(&select, vio, ROAR_VIO_SELECT_READ);  
     159 if ( roar_vio_select(&select, 1, &tv, NULL) == -1 ) 
     160  return -1; 
     161 
     162 if ( !(select.eventsa & ROAR_VIO_SELECT_READ) ) { 
     163  errno = EAGAIN; 
     164  return -1; 
     165 } 
    152166 
    153167 ret = roar_vio_read(vio, msg->header, EMUL_RSOUND_MSG_HEADER_LEN); 
     
    188202 
    189203int emul_rsound_vsend_msg(struct emul_rsound_msg * msg, struct roar_vio_calls * vio) { 
     204 struct roar_vio_select select; 
     205 struct roar_vio_selecttv tv = { 
     206  .sec = 0, 
     207  .nsec = 0 
     208 }; 
    190209 ssize_t ret; 
    191210 
    192211 if ( msg == NULL || vio == NULL ) 
    193212  return -1; 
     213 
     214 ROAR_VIO_SELECT_SETVIO(&select, vio, ROAR_VIO_SELECT_WRITE);  
     215 if ( roar_vio_select(&select, 1, &tv, NULL) == -1 ) 
     216  return -1; 
     217 
     218 if ( !(select.eventsa & ROAR_VIO_SELECT_WRITE) ) { 
     219  errno = EAGAIN; 
     220  return -1; 
     221 } 
    194222 
    195223 snprintf(msg->header, EMUL_RSOUND_MSG_HEADER_LEN+1, "RSD%5d", (int)msg->datalen); 
Note: See TracChangeset for help on using the changeset viewer.