Changeset 1505:06a3687a4ce8 in roaraudio for libroar/vio_pipe.c


Ignore:
Timestamp:
04/01/09 17:55:36 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added more support for vio_ctl, added ROAR_VIO_CTL_GET_*FH and ROAR_VIO_CTL_SELECT

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroar/vio_pipe.c

    r1470 r1505  
    211211} 
    212212 
     213int     roar_vio_pipe_ctl     (struct roar_vio_calls * vio, int cmd, void * data) { 
     214 struct roar_vio_pipe * self; 
     215 
     216 if (vio == NULL || cmd == -1) 
     217  return -1; 
     218 
     219 if ( (self = (struct roar_vio_pipe *)vio->inst) == NULL ) 
     220  return -1; 
     221 
     222 switch (cmd) { 
     223  case ROAR_VIO_CTL_GET_FH: 
     224    if ( self->type == ROAR_VIO_PIPE_TYPE_SOCKET ) { 
     225     *(int*)data = self->b.p[ROAR_VIO_PIPE_S(self,vio)]; 
     226     return 0; 
     227    } else { 
     228     return -1; 
     229    } 
     230   break; 
     231  case ROAR_VIO_CTL_GET_READ_FH: 
     232    switch (self->type) { 
     233     case ROAR_VIO_PIPE_TYPE_SOCKET: 
     234       *(int*)data = self->b.p[ROAR_VIO_PIPE_S(self,vio)]; 
     235       return 0; 
     236      break; 
     237     case ROAR_VIO_PIPE_TYPE_PIPE: 
     238       *(int*)data = self->b.p[ROAR_VIO_PIPE_S(self,vio)*2]; 
     239       return 0; 
     240      break; 
     241    } 
     242  case ROAR_VIO_CTL_GET_WRITE_FH: 
     243    switch (self->type) { 
     244     case ROAR_VIO_PIPE_TYPE_SOCKET: 
     245       *(int*)data = self->b.p[ROAR_VIO_PIPE_S(self,vio)]; 
     246       return 0; 
     247      break; 
     248     case ROAR_VIO_PIPE_TYPE_PIPE: 
     249       *(int*)data = self->b.p[(ROAR_VIO_PIPE_SR(self,vio)*2)+1]; 
     250       return 0; 
     251      break; 
     252    } 
     253   break; 
     254 } 
     255 
     256 return -1; 
     257} 
     258 
     259 
    213260ssize_t roar_vio_pipe_read    (struct roar_vio_calls * vio, void *buf, size_t count) { 
    214261 struct roar_vio_pipe * self; 
Note: See TracChangeset for help on using the changeset viewer.