Changeset 4604:00c316cc785d in roaraudio


Ignore:
Timestamp:
11/14/10 17:13:55 (13 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

support NULL as default (with internal list) driver selection for cdrivers

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • include/libroareio/driver.h

    r3851 r4604  
    4040 
    4141struct roar_cdriver { 
    42  char * name; 
    43  int  (*open)(struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir); 
     42 const char * name; 
     43 int  (*open)(struct roar_vio_calls * calls, const char * name, char * dev, struct roar_audio_info * info, int dir); 
    4444}; 
    4545 
    46 int roar_cdriver_open(struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir); 
     46int roar_cdriver_open(struct roar_vio_calls * calls, const char * name, char * dev, struct roar_audio_info * info, int dir); 
    4747 
    4848// driver prototypes: 
    49 int roar_cdriver_oss (struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir); 
    50 int roar_cdriver_roar(struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir); 
     49int roar_cdriver_oss (struct roar_vio_calls * calls, const char * name, char * dev, struct roar_audio_info * info, int dir); 
     50int roar_cdriver_roar(struct roar_vio_calls * calls, const char * name, char * dev, struct roar_audio_info * info, int dir); 
    5151 
    5252#endif 
  • libroareio/driver.c

    r3851 r4604  
    3232#endif 
    3333 
    34 int roar_cdriver_null(struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir) { 
     34int roar_cdriver_null(struct roar_vio_calls * calls, const char * name, char * dev, struct roar_audio_info * info, int dir) { 
    3535 ROAR_DBG("roar_cdriver_null(calls=%p, name='%s', dev='%s', info=%p{...}, dir=%i(?)) = ?", calls, name, dev, info, dir); 
    3636 
     
    5555}; 
    5656 
    57 int roar_cdriver_open(struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir) { 
     57 
     58static int roar_cdriver_open_default(struct roar_vio_calls * calls, char * dev, struct roar_audio_info * info, int dir) { 
     59 const char * names[] = { 
     60  // native APIs: 
     61  "oss", 
     62  // Virtual APIs: 
     63  "roar", 
     64  // Dummys: 
     65  "null" 
     66 }; 
     67 size_t i; 
     68 int ret; 
     69 
     70 if ( dev != NULL ) { 
     71  ROAR_WARN("roar_cdriver_open_default(calls=%p, dev='%s', info=%p, dir=%i): Try to open given device without driver name is a bad thing to do. This is normaly a Application error.", calls, dev, info, dir); 
     72 } 
     73 
     74 for (i = 0; i < (sizeof(names)/sizeof(*names)); i++) { 
     75  ret = roar_cdriver_open(calls, names[i], dev, info, dir); 
     76  if ( ret != -1 ) 
     77   return ret; 
     78 } 
     79 
     80 return -1; 
     81} 
     82 
     83int roar_cdriver_open(struct roar_vio_calls * calls, const char * name, char * dev, struct roar_audio_info * info, int dir) { 
    5884 int i; 
    5985 char *delm; 
     86 
     87 if ( name == NULL ) 
     88  return roar_cdriver_open_default(calls, dev, info, dir); 
    6089 
    6190 for (i = 0; _g_roar_cdriver[i].name != NULL; i++) { 
  • libroareio/driver_oss.c

    r3853 r4604  
    5959#define _err() roar_vio_close(calls); return -1 
    6060 
    61 int roar_cdriver_oss(struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir) { 
     61int roar_cdriver_oss(struct roar_vio_calls * calls, const char * name, char * dev, struct roar_audio_info * info, int dir) { 
    6262 struct roar_vio_sysio_ioctl ctl; 
    6363 int tmp, ctmp; 
  • libroareio/driver_roar.c

    r3851 r4604  
    2727#include "driver.h" 
    2828 
    29 int roar_cdriver_roar(struct roar_vio_calls * calls, char * name, char * dev, struct roar_audio_info * info, int dir) { 
     29int roar_cdriver_roar(struct roar_vio_calls * calls, const char * name, char * dev, struct roar_audio_info * info, int dir) { 
    3030 return roar_vio_simple_stream(calls, info->rate, info->channels, info->bits, info->codec, dev, dir, "libroareio client"); 
    3131} 
Note: See TracChangeset for help on using the changeset viewer.