2 #include "asiodrivers.h"
\r
4 AsioDrivers* asioDrivers = 0;
\r
6 bool loadAsioDriver(char *name);
\r
8 bool loadAsioDriver(char *name)
\r
11 asioDrivers = new AsioDrivers();
\r
13 return asioDrivers->loadDriver(name);
\r
17 //------------------------------------------------------------------------------------
\r
21 bool resolveASIO(unsigned long aconnID);
\r
23 AsioDrivers::AsioDrivers() : CodeFragments("ASIO Drivers", 'AsDr', 'Asio')
\r
29 AsioDrivers::~AsioDrivers()
\r
31 removeCurrentDriver();
\r
34 bool AsioDrivers::getCurrentDriverName(char *name)
\r
37 return getName(curIndex, name);
\r
41 long AsioDrivers::getDriverNames(char **names, long maxDrivers)
\r
43 for(long i = 0; i < getNumFragments() && i < maxDrivers; i++)
\r
44 getName(i, names[i]);
\r
45 return getNumFragments() < maxDrivers ? getNumFragments() : maxDrivers;
\r
48 bool AsioDrivers::loadDriver(char *name)
\r
51 unsigned long newID;
\r
53 for(long i = 0; i < getNumFragments(); i++)
\r
55 if(getName(i, dname) && !strcmp(name, dname))
\r
57 if(newInstance(i, &newID))
\r
59 if(resolveASIO(newID))
\r
62 removeInstance(curIndex, connID);
\r
74 void AsioDrivers::removeCurrentDriver()
\r
77 removeInstance(curIndex, connID);
\r
82 //------------------------------------------------------------------------------------
\r
86 #include "iasiodrv.h"
\r
88 extern IASIO* theAsioDriver;
\r
90 AsioDrivers::AsioDrivers() : AsioDriverList()
\r
95 AsioDrivers::~AsioDrivers()
\r
99 bool AsioDrivers::getCurrentDriverName(char *name)
\r
102 return asioGetDriverName(curIndex, name, 32) == 0 ? true : false;
\r
107 long AsioDrivers::getDriverNames(char **names, long maxDrivers)
\r
109 for(long i = 0; i < asioGetNumDev() && i < maxDrivers; i++)
\r
110 asioGetDriverName(i, names[i], 32);
\r
111 return asioGetNumDev() < maxDrivers ? asioGetNumDev() : maxDrivers;
\r
114 bool AsioDrivers::loadDriver(char *name)
\r
119 for(long i = 0; i < asioGetNumDev(); i++)
\r
121 if(!asioGetDriverName(i, dname, 32) && !strcmp(name, dname))
\r
124 getCurrentDriverName(curName); // in case we fail...
\r
125 removeCurrentDriver();
\r
127 if(!asioOpenDriver(i, (void **)&theAsioDriver))
\r
135 if(curName[0] && strcmp(dname, curName))
\r
136 loadDriver(curName); // try restore
\r
144 void AsioDrivers::removeCurrentDriver()
\r
147 asioCloseDriver(curIndex);
\r
153 #include "asiolist.h"
\r
155 AsioDrivers::AsioDrivers()
\r
161 AsioDrivers::~AsioDrivers()
\r
165 bool AsioDrivers::getCurrentDriverName(char *name)
\r
170 long AsioDrivers::getDriverNames(char **names, long maxDrivers)
\r
175 bool AsioDrivers::loadDriver(char *name)
\r
180 void AsioDrivers::removeCurrentDriver()
\r
185 #error implement me
\r