Changeset 4815:df2ef6edb97f in roaraudio for roard/driver_oss.c
- Timestamp:
- 03/27/11 20:04:27 (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/driver_oss.c
r4708 r4815 37 37 38 38 vio->write = driver_oss_write; 39 vio->read = driver_oss_read; 39 40 vio->nonblock = driver_oss_nonblock; 40 41 vio->sync = driver_oss_sync; … … 48 49 49 50 int driver_oss_open_device(struct driver_oss * self) { 51 int flags = 0; 52 int rw = 0; 50 53 int fh = self->fh; 51 54 char * device = self->device; … … 64 67 } 65 68 66 if ( (fh = open(device, O_WRONLY, 0644)) == -1 ) { 69 if ( self->ssid != -1 ) { 70 rw = streams_get_flag(self->ssid, ROAR_FLAG_RECSOURCE); 71 } 72 73 if ( rw ) { 74 flags |= O_RDWR; 75 } else { 76 flags |= O_WRONLY; 77 } 78 79 if ( (fh = open(device, flags, 0644)) == -1 ) { 67 80 ROAR_ERR("driver_oss_open_device(*): Can not open OSS device: %s: %s", device, strerror(errno)); 68 81 return -1; … … 324 337 } 325 338 339 ROAR_DBG("driver_oss_config_device(*): self->ssid=%i, fh=%i", self->ssid, fh); 340 streams_set_fh(self->ssid, -2); 326 341 self->need_config = 0; 327 342 343 ROAR_DBG("driver_oss_config_device(*) = 0"); 328 344 return 0; 329 345 } … … 343 359 self->ssid = -1; 344 360 self->fh = fh; 361 362 if ( sstream != NULL ) 363 self->ssid = ROAR_STREAM(sstream)->id; 345 364 346 365 if ( fh != -1 ) { … … 528 547 } 529 548 549 ssize_t driver_oss_read (struct roar_vio_calls * vio, void *buf, size_t count) { 550 if ( _get(vio,fh) == -1 ) 551 return -1; 552 553 if ( _get(vio,need_config) ) { 554 if ( driver_oss_config_device(vio->inst) == -1 ) { 555 return -1; 556 } 557 } 558 559 return read(_get(vio,fh), buf, count); 560 } 561 530 562 #endif 531 563 //ll
Note: See TracChangeset
for help on using the changeset viewer.