Changeset 1612:ceb40fffd649 in roaraudio
- Timestamp:
- 04/25/09 14:48:30 (15 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/vio_cmd.c
r1400 r1612 81 81 calls->nonblock = roar_vio_cmd_nonblock; 82 82 calls->sync = roar_vio_cmd_sync; 83 calls->ctl = roar_vio_cmd_ctl; 83 84 calls->inst = (void*) state; 84 85 … … 230 231 int nonblock = state->options & ROAR_VIO_CMD_OPTS_NONBLOCK; 231 232 int in, out; 233 int eating = 1; 232 234 233 235 ROAR_DBG("roar_vio_cmd_read(*) = ?"); … … 247 249 out = state->reader.out; 248 250 249 while (done < count ) {251 while (done < count || eating) { 250 252 if ( nonblock ) { 251 253 tv.tv_sec = 0; … … 295 297 if ( out != -1 && FD_ISSET(out, wfhs) ) { 296 298 ROAR_DBG("roar_vio_cmd_read(*): event on writer"); 299 eating = 1; 297 300 298 301 if ( !tlen ) { … … 312 315 state->reader.out = out = -1; 313 316 } 317 } else { 318 eating = 0; 314 319 } 315 320 } … … 470 475 return ret; 471 476 } 477 478 int roar_vio_cmd_ctl (struct roar_vio_calls * vio, int cmd, void * data) { 479 struct roar_vio_cmd_state * state = (struct roar_vio_cmd_state *)vio->inst; 480 char buf[1]; 481 int i; 482 483 ROAR_WARN("roar_vio_cmd_ctl(vio=%p, cmd=0x%.8x, data=%p) = ?", vio, cmd, data); 484 485 switch (cmd) { 486 case ROAR_VIO_CTL_GET_NEXT: 487 *(struct roar_vio_calls **)data = state->next; 488 return -1; 489 break; 490 case ROAR_VIO_CTL_GET_FH: 491 return -1; 492 break; 493 case ROAR_VIO_CTL_GET_READ_FH: 494 // if ( !state->reader.opened ) { 495 //for (i = 0; i < 128; i++) 496 roar_vio_cmd_read(vio, buf, 0); 497 // } 498 if ( state->reader.opened ) { 499 ROAR_WARN("roar_vio_cmd_ctl(vio=%p, cmd=ROAR_VIO_CTL_GET_READ_FH(0x%.8x), data=%p) = 0 // fh=%i", vio, cmd, data, state->reader.in); 500 *(int*)data = state->reader.in; 501 return 0; 502 } 503 return -1; 504 break; 505 case ROAR_VIO_CTL_GET_WRITE_FH: 506 return -1; 507 break; 508 default: 509 return -1; 510 } 511 512 return 0; 513 } 472 514 #endif 473 515
Note: See TracChangeset
for help on using the changeset viewer.