Changeset 4815:df2ef6edb97f in roaraudio for roard/streams.c
- Timestamp:
- 03/27/11 20:04:27 (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roard/streams.c
r4753 r4815 590 590 return -1; 591 591 592 if ( ss->ready ) {592 if ( ss->ready && !(s->fh == -1 && fh == -2) ) { 593 593 ROAR_DBG("streams_set_fh(id=%i, fh=%i) = -1 // try to set fh for stream which is already ready", id, fh); 594 594 return -1; 595 595 } 596 596 597 dir = ROAR_STREAM(ss)->dir;597 dir = s->dir; 598 598 599 599 ROAR_DBG("streams_set_fh(id=%i, fh=%i): g_streams[id]->id=%i", id, fh, s->id); … … 902 902 int streams_set_flag (int id, uint32_t flag) { 903 903 int parent; 904 int tmp; 904 905 905 906 _CHECK_SID(id); … … 978 979 } 979 980 981 if ( g_streams[id]->ready ) { 982 tmp = 1; 983 if ( stream_vio_ctl(id, ROAR_VIO_CTL_SET_RECORD, &tmp) == -1 ) 984 return -1; 985 } 986 980 987 streams_recsource_id = id; 981 988 } … … 1000 1007 1001 1008 int streams_reset_flag (int id, uint32_t flag) { 1009 int tmp; 1010 1002 1011 _CHECK_SID(id); 1003 1012 … … 1011 1020 } 1012 1021 1013 if ( flag & ROAR_FLAG_RECSOURCE ) 1014 if ( streams_recsource_id == id ) 1015 streams_recsource_id = -1; 1022 if ( (flag & ROAR_FLAG_RECSOURCE) && streams_recsource_id == id ) { 1023 if ( g_streams[id]->ready ) { 1024 tmp = 0; 1025 if ( stream_vio_ctl(id, ROAR_VIO_CTL_SET_RECORD, &tmp) == -1 ) 1026 return -1; 1027 } 1028 1029 streams_recsource_id = -1; 1030 } 1031 1016 1032 1017 1033 if ( flag & ROAR_FLAG_MMAP ) { … … 1959 1975 case ROAR_DIR_BIDIR: 1960 1976 break; 1977 case ROAR_DIR_OUTPUT: 1978 if ( !streams_get_flag(id, ROAR_FLAG_RECSOURCE) ) 1979 return 0; 1980 break; 1961 1981 default: 1962 1982 /* … … 2057 2077 struct roar_buffer * bufbuf = NULL; 2058 2078 struct roar_remove_state removalstate; 2059 void * ip ;2079 void * ip = g_output_buffer; 2060 2080 void * obuf; 2061 2081 int olen; … … 2130 2150 break; 2131 2151 2152 case ROAR_DIR_RECORD: 2153 ip = g_input_buffer; 2154 break; 2132 2155 default: 2133 2156 return 0; … … 2161 2184 ROAR_DBG("streams_send_mon(id=%i): obuf=%p, olen=%i", id, obuf, olen); 2162 2185 } else { 2163 obuf = g_output_buffer;2186 obuf = ip; 2164 2187 olen = g_output_buffer_len; 2165 2188 } 2166 2167 ip = g_output_buffer;2168 2189 2169 2190 if ( antiecho ) { … … 2335 2356 } 2336 2357 2358 int stream_vio_ctl (int stream, int cmd, void * data) { 2359 _CHECK_SID(stream); 2360 2361 return stream_vio_s_ctl(g_streams[stream], cmd, data); 2362 } 2337 2363 2338 2364 ssize_t stream_vio_s_read (struct roar_stream_server * stream, void *buf, size_t count) { … … 2443 2469 } 2444 2470 2471 int stream_vio_s_ctl (struct roar_stream_server * stream, int cmd, void * data) { 2472 if ( stream == NULL ) 2473 return -1; 2474 2475 return roar_vio_ctl(stream->viop, cmd, data); 2476 } 2477 2445 2478 //ll
Note: See TracChangeset
for help on using the changeset viewer.