Changeset 3246:1d9346abf116 in roaraudio for libroaross
- Timestamp:
- 01/29/10 22:26:35 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroaross/libroaross.c
r3245 r3246 101 101 #define HT_WAVEFORM 3 102 102 #define HT_MIDI 4 103 #define HT_DMX 5 103 104 104 105 struct session { … … 119 120 size_t stream_buffersize; 120 121 size_t readc, writec; 122 size_t pos; 121 123 }; 122 124 … … 129 131 int (*ioctl)(int d, int request, ...); 130 132 #endif 133 off_t (*lseek)(int fildes, off_t offset, int whence); 131 134 } _os; 132 135 … … 172 175 _os.ioctl = dlsym(REAL_LIBC, "ioctl"); 173 176 #endif 177 _os.lseek = dlsym(REAL_LIBC, "lseek"); 174 178 } 175 179 … … 371 375 {"/dev/sound/midi", HT_MIDI}, 372 376 {"/dev/sound/rmidi", HT_MIDI}, 377 {"/dev/dmx", HT_DMX}, 373 378 #ifdef ROAR_DEFAULT_OSS_DEV 374 379 {ROAR_DEFAULT_OSS_DEV, HT_WAVEFORM}, … … 408 413 handle->stream_dir = ROAR_DIR_MIDI_OUT; 409 414 break; 415 case HT_DMX: 416 handle->stream_dir = ROAR_DIR_LIGHT_OUT; 417 break; 410 418 } 411 419 break; … … 417 425 case HT_MIDI: 418 426 handle->stream_dir = ROAR_DIR_MIDI_IN; 427 break; 428 case HT_DMX: 429 handle->stream_dir = ROAR_DIR_LIGHT_IN; 419 430 break; 420 431 } … … 858 869 859 870 return _os.read(fd, buf, count); 871 } 872 873 off_t lseek(int fildes, off_t offset, int whence) { 874 struct pointer * pointer; 875 876 _init(); 877 878 if ( (pointer = _get_pointer_by_fh(fildes)) != NULL ) { 879 if ( pointer->handle->type == HT_DMX ) { 880 switch (whence) { 881 case SEEK_SET: 882 pointer->handle->pos = offset; 883 break; 884 case SEEK_CUR: 885 pointer->handle->pos += offset; 886 break; 887 case SEEK_END: 888 default: 889 errno = EINVAL; 890 return -1; 891 break; 892 } 893 return pointer->handle->pos; 894 } else { 895 errno = EINVAL; 896 return -1; 897 } 898 } 899 900 return _os.lseek(fildes, offset, whence); 860 901 } 861 902
Note: See TracChangeset
for help on using the changeset viewer.