Changeset 5982:c38f275b38ae in roaraudio for roard/roard.c


Ignore:
Timestamp:
02/23/14 15:46:19 (10 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

Added support to load light control filters into roard.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/roard.c

    r5961 r5982  
    13011301 
    13021302 
     1303#if defined(ROAR_HAVE_MAIN_ARGS) && !defined(ROAR_WITHOUT_DCOMP_LIGHT) 
     1304struct light_filter { 
     1305 const char * name; 
     1306 char * para; 
     1307}; 
     1308 
     1309static int light_filter_add(int primary, struct light_filter * filter) { 
     1310 struct roar_keyval * kv; 
     1311 ssize_t kvlen; 
     1312 int ret; 
     1313 int err; 
     1314 
     1315 if ( filter->para == NULL ) { 
     1316  kvlen = -1; 
     1317  kv = NULL; 
     1318 } else { 
     1319  kvlen = roar_keyval_split(&kv, filter->para, NULL, NULL, 1); 
     1320  if ( kvlen == -1 ) { 
     1321   ROAR_ERR("light_filter_add(primar=%i, filter={name='%s', para=%p}): Can not split string: %s", primary, filter->name, filter->para, roar_errorstring); 
     1322   return -1; 
     1323  } 
     1324 } 
     1325 
     1326 ret = light_filter_load(primary, filter->name, 1, kv, kvlen); 
     1327 err = roar_error; 
     1328 if ( kv != NULL ) 
     1329  roar_mm_free(kv); 
     1330 
     1331 if ( ret == -1 ) { 
     1332  roar_err_set(err); 
     1333  ROAR_ERR("light_filter_add(primary=%i, filter={name='%s', para=%p}): Can not load filter: %s", primary, filter->name, filter->para, roar_errorstring); 
     1334  return -1; 
     1335 } 
     1336 
     1337 return 0; 
     1338} 
     1339#endif 
     1340 
    13031341// MAIN: 
    13041342 
     
    13991437 struct roar_vio_calls pidfile_vio; 
    14001438#endif 
     1439#if defined(ROAR_HAVE_MAIN_ARGS) && !defined(ROAR_WITHOUT_DCOMP_LIGHT) 
     1440 struct light_filter light_filter[32] = {{"chain", NULL}}; 
     1441 int    light_filter_count = 1; 
     1442 char * light_filter_para  = NULL; 
     1443#endif 
    14011444 
    14021445 ROAR_DBG("main(*): starting roard..."); 
     
    16771720  } else if ( strcmp(k, "--list-plugins") == 0 ) { 
    16781721   metaaction = MA_LIST_PLUGIN; 
     1722 
     1723  } else if ( strcmp(k, "--light-filter-load") == 0 ) { 
     1724   ROAR_CKHAVEARGS(1); 
     1725   if ( light_filter_count == (sizeof(light_filter)/sizeof(*light_filter)) ) { 
     1726    ROAR_ERR("Can not load any more light filters: %s", argv[++i]); 
     1727   } else { 
     1728    light_filter[light_filter_count].name = argv[++i]; 
     1729    light_filter[light_filter_count].para = light_filter_para; 
     1730    light_filter_count++; 
     1731   } 
     1732   light_filter_para = NULL; 
     1733  } else if ( strcmp(k, "--light-filter-load-primary") == 0 ) { 
     1734   ROAR_CKHAVEARGS(1); 
     1735   light_filter[0].name = argv[++i]; 
     1736   light_filter[0].para = light_filter_para; 
     1737  } else if ( strcmp(k, "--light-filter-args") == 0 ) { 
     1738   ROAR_CKHAVEARGS(1); 
     1739   light_filter_para = argv[++i]; 
    16791740 
    16801741  } else if ( strcmp(k, "--guest-acclev") == 0 ) { 
     
    23352396  ROAR_ERR("Can not initialize light control subsystem"); 
    23362397 } 
     2398 light_filter_add(1, &(light_filter[0])); 
     2399 for (i = 1; i < light_filter_count; i++) 
     2400  light_filter_add(0, &(light_filter[i])); 
    23372401#endif 
    23382402 
Note: See TracChangeset for help on using the changeset viewer.