Changeset 3652:b5d0c4533431 in roaraudio for libroaross


Ignore:
Timestamp:
03/29/10 16:36:09 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added option to support new session for each stream

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroaross/libroaross.c

    r3639 r3652  
    244244 
    245245static struct session * _open_session (char * server, char * name) { 
     246 struct session * ses = &_session; 
     247 int new_session = getenv("ROAR_OSS_NEW_SESSION") == NULL ? 0 : 1; 
     248 
    246249 ROAR_DBG("_open_session(server='%s', name='%s') = ?", server, name); 
    247250 ROAR_DBG("_open_session(server='%s', name='%s'): _session.refc=%i", server, name, _session.refc); 
    248251 
    249  if ( _session.refc == 0 ) { 
     252 if ( new_session ) { 
     253  ses = malloc(sizeof(struct session)); 
     254  if ( ses == NULL ) 
     255   return NULL; 
     256 
     257  memset(ses, 0, sizeof(struct session)); 
     258 } 
     259 
     260 if ( ses->refc == 0 ) { 
    250261 
    251262  if ( name == NULL ) 
     
    255266   name = "libroaross client"; 
    256267 
    257   if ( roar_simple_connect(&(_session.con), server, name) == -1 ) 
     268  if ( roar_simple_connect(&(ses->con), server, name) == -1 ) { 
     269   if ( new_session ) 
     270    free(ses); 
     271 
    258272   return NULL; 
    259  
    260   _find_volume_sid(&_session); 
    261  
    262   if ( getenv("ROAR_OSS_KEEP_SESSION") != NULL ) 
    263    _session.refc++; 
    264  } 
    265  
    266  _session.refc++; 
    267  
    268  ROAR_DBG("_open_session(server='%s', name='%s') = %p", server, name, &_session); 
    269  return &_session; 
     273  } 
     274 
     275  _find_volume_sid(ses); 
     276 
     277  if ( !new_session ) { 
     278   if ( getenv("ROAR_OSS_KEEP_SESSION") != NULL ) 
     279    ses->refc++; 
     280  } 
     281 } 
     282 
     283 ses->refc++; 
     284 
     285 ROAR_DBG("_open_session(server='%s', name='%s') = %p", server, name, ses); 
     286 return ses; 
    270287} 
    271288 
     
    281298  roar_disconnect(&(session->con)); 
    282299 } 
     300 
     301 if ( session != &_session ) 
     302  free(session); 
    283303} 
    284304 
Note: See TracChangeset for help on using the changeset viewer.