Changeset 4389:346c516e9ce1 in roaraudio
- Timestamp:
- 09/15/10 01:47:01 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/hwmixer_oss.c
r4388 r4389 39 39 } g_subdevs[] = { 40 40 {"Volume", {.bit = SOUND_MASK_VOLUME, .cmd_read = SOUND_MIXER_READ_VOLUME, .cmd_write = SOUND_MIXER_WRITE_VOLUME}}, 41 {"PCM", {.bit = SOUND_MASK_PCM, .cmd_read = SOUND_MIXER_READ_PCM, .cmd_write = SOUND_MIXER_WRITE_PCM}}, 41 42 {NULL} 42 43 }; … … 46 47 struct subdev * source_subdev = NULL; 47 48 struct roar_stream_server * ss; 49 const char * reqname = subname->value; 48 50 int i; 51 char name[80]; 49 52 50 53 for (i = 0; g_subdevs[i].name != NULL; i++) { 51 54 if ( !strcasecmp(subname->key, g_subdevs[i].name) ) { 52 55 source_subdev = &(g_subdevs[i].subdev); 56 if ( reqname == NULL ) 57 reqname = g_subdevs[i].name; 53 58 break; 54 59 } … … 71 76 72 77 stream->ud = subdev; 78 79 if ( basename == NULL ) { 80 streams_set_name(stream->stream, reqname); 81 } else { 82 snprintf(name, sizeof(name)-1, "%s/%s", basename, reqname); 83 name[sizeof(name)-1] = 0; 84 streams_set_name(stream->stream, name); 85 } 73 86 74 87 if (streams_get(stream->stream, &ss) != -1) { … … 86 99 struct roar_vio_sysio_ioctl ctl; 87 100 struct roar_keyval kv; 101 struct hwmixer_stream * cstream; 88 102 int devmask, sdevmask; 103 size_t i; 89 104 90 105 if ( vio == NULL ) { … … 138 153 } 139 154 140 kv.key = "Volume"; 141 kv.value = NULL; 142 143 if ( hwmixer_oss_open_stream(stream, devmask, sdevmask, basename, &kv) == -1 ) { 144 roar_vio_close(vio); 145 roar_mm_free(vio); 146 return -1; 155 if ( subnamelen == 0 ) { 156 kv.key = "Volume"; 157 kv.value = NULL; 158 159 if ( hwmixer_oss_open_stream(stream, devmask, sdevmask, basename, &kv) == -1 ) { 160 roar_vio_close(vio); 161 roar_mm_free(vio); 162 return -1; 163 } 164 } else { 165 if ( hwmixer_oss_open_stream(stream, devmask, sdevmask, basename, subnames) == -1 ) { 166 roar_vio_close(vio); 167 roar_mm_free(vio); 168 return -1; 169 } 170 171 for (i = 1; i < subnamelen; i++) { 172 cstream = hwmixer_substream_new(stream); 173 if ( hwmixer_oss_open_stream(cstream, devmask, sdevmask, basename, &(subnames[i])) == -1 ) { 174 roar_vio_close(vio); 175 roar_mm_free(vio); 176 return -1; 177 } 178 } 147 179 } 148 180
Note: See TracChangeset
for help on using the changeset viewer.