Changeset 643:c3fc248024dd in roaraudio


Ignore:
Timestamp:
08/25/08 13:26:36 (16 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added primary flag to streams

Location:
roard
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • roard/include/streams.h

    r596 r643  
    3232 int post_underruns; 
    3333 struct roar_vio_calls vio; 
     34 int primary; 
    3435} * g_streams[ROAR_STREAMS_MAX]; 
    3536 
     
    4849int streams_set_socktype (int id, int socktype); 
    4950int streams_get_socktype (int id); 
     51 
     52int streams_set_primary  (int id, int prim); 
     53int streams_mark_primary (int id); 
    5054 
    5155int stream_add_buffer     (int id, struct roar_buffer *  buf); 
  • roard/streams.c

    r634 r643  
    5858   s->post_underruns  =  0; 
    5959   s->codec_orgi      = -1; 
     60   s->primary         =  0; 
    6061 
    6162   s->mixer.scale     = 65535; 
     
    8485 
    8586int streams_delete (int id) { 
    86  if ( g_streams[id] == NULL ) 
     87 struct roar_stream_server * s; 
     88 if ( (s = g_streams[id]) == NULL ) 
    8789  return 0; 
    8890 
    8991 ROAR_DBG("streams_delete(id=%i) = ?", id); 
    90  ROAR_DBG("streams_delete(id=%i): g_streams[id]->id=%i", id, ROAR_STREAM(g_streams[id])->id); 
    91  
    92  if ( g_streams[id]->codecfilter != -1 ) { 
    93   codecfilter_close(g_streams[id]->codecfilter_inst, g_streams[id]->codecfilter); 
    94   g_streams[id]->codecfilter_inst = NULL; 
    95   g_streams[id]->codecfilter = -1; 
    96  } 
    97  
    98  if ( g_streams[id]->client != -1 ) { 
     92 ROAR_DBG("streams_delete(id=%i): g_streams[id]->id=%i", id, ROAR_STREAM(s)->id); 
     93 
     94 if ( s->codecfilter != -1 ) { 
     95  codecfilter_close(s->codecfilter_inst, s->codecfilter); 
     96  s->codecfilter_inst = NULL; 
     97  s->codecfilter = -1; 
     98 } 
     99 
     100 if ( s->client != -1 ) { 
    99101  ROAR_DBG("streams_delete(id=%i): Stream is owned by client %i", id, g_streams[id]->client); 
    100   client_stream_delete(g_streams[id]->client, id); 
    101  } 
    102  
    103  if ( g_streams[id]->buffer != NULL ) 
    104   roar_buffer_free(g_streams[id]->buffer); 
    105  
    106  if ( g_streams[id]->output != NULL ) 
    107   free(g_streams[id]->output); 
    108  
    109  if ( ROAR_STREAM(g_streams[id])->fh != -1 ) 
    110   close(ROAR_STREAM(g_streams[id])->fh); 
    111  
    112  free(g_streams[id]); 
     102  client_stream_delete(s->client, id); 
     103 } 
     104 
     105 if ( s->buffer != NULL ) 
     106  roar_buffer_free(s->buffer); 
     107 
     108 if ( s->output != NULL ) 
     109  free(s->output); 
     110 
     111 if ( ROAR_STREAM(s)->fh != -1 ) 
     112  close(ROAR_STREAM(s)->fh); 
     113 
     114 if ( s->primary ) { 
     115  alive = 0; 
     116  clean_quit(); 
     117 } 
     118 
     119 free(s); 
    113120 
    114121 g_streams[id] = NULL; 
     
    195202} 
    196203 
     204int streams_set_primary (int id, int prim) { 
     205 if ( g_streams[id] == NULL ) 
     206  return -1; 
     207 
     208 g_streams[id]->primary = prim; 
     209 
     210 return 0; 
     211} 
     212 
     213int streams_mark_primary (int id) { 
     214 return streams_set_primary(id, 1); 
     215} 
    197216int streams_get_outputbuffer  (int id, void ** buffer, size_t size) { 
    198217 if ( g_streams[id] == NULL ) 
Note: See TracChangeset for help on using the changeset viewer.