git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1582 0c269be4-1314-0410-8aa9-9f06e86f4224tags/0.67
@@ -13,6 +13,11 @@ Tom Szilagyi | |||||
Jackdmp changes log | Jackdmp changes log | ||||
--------------------------- | --------------------------- | ||||
2007-10-08 Stephane Letz <letz@grame.fr> | |||||
* Use .jackdrc file (instead of .jackdmprc). Install script now creates a link "jackd ==> jackdmp" so that automatic launch can work correctly. | |||||
* Paul Davis patch for -r (--replace-registry) feature. | |||||
2007-10-07 Stephane Letz <letz@grame.fr> | 2007-10-07 Stephane Letz <letz@grame.fr> | ||||
* Add missing timestamps.c and timestamps.h files. Correctly export public headers in OSX frameworks. Suppress JackEngine::ClientInternalCloseIm method. | * Add missing timestamps.c and timestamps.h files. Correctly export public headers in OSX frameworks. Suppress JackEngine::ClientInternalCloseIm method. | ||||
@@ -651,7 +651,7 @@ void JackGraphManager::GetConnectionsAux(JackConnectionManager* manager, const c | |||||
jack_int_t index; | jack_int_t index; | ||||
int i; | int i; | ||||
for (i = 0; (i < CONNECTION_NUM) && ((index = connections[i]) != EMPTY) ; i++) { | |||||
for (i = 0; (i < CONNECTION_NUM) && ((index = connections[i]) != EMPTY); i++) { | |||||
JackPort* port = GetPort(index); | JackPort* port = GetPort(index); | ||||
res[i] = port->fName; | res[i] = port->fName; | ||||
} | } | ||||
@@ -220,15 +220,15 @@ bool JackServerGlobals::Init() | |||||
int argc = 0; | int argc = 0; | ||||
char* argv[32]; | char* argv[32]; | ||||
snprintf(filename, 255, "%s/.jackdmprc", getenv("HOME")); | |||||
snprintf(filename, 255, "%s/.jackdrc", getenv("HOME")); | |||||
fp = fopen(filename, "r"); | fp = fopen(filename, "r"); | ||||
if (!fp) { | if (!fp) { | ||||
fp = fopen("/etc/jackdmprc", "r"); | |||||
fp = fopen("/etc/jackdrc", "r"); | |||||
} | } | ||||
// if still not found, check old config name for backwards compatability | // if still not found, check old config name for backwards compatability | ||||
if (!fp) { | if (!fp) { | ||||
fp = fopen("/etc/jackdmp.conf", "r"); | |||||
fp = fopen("/etc/jackd.conf", "r"); | |||||
} | } | ||||
argc = 0; | argc = 0; | ||||
@@ -355,7 +355,7 @@ bool JackServerGlobals::Init() | |||||
server_name = jack_default_server_name(); | server_name = jack_default_server_name(); | ||||
#endif | #endif | ||||
rc = jack_register_server(server_name); | |||||
rc = jack_register_server(server_name, false); | |||||
switch (rc) { | switch (rc) { | ||||
case EEXIST: | case EEXIST: | ||||
fprintf(stderr, "`%s' server already active\n", server_name); | fprintf(stderr, "`%s' server already active\n", server_name); | ||||
@@ -41,15 +41,15 @@ static void start_server_aux(const char* server_name) | |||||
int good = 0; | int good = 0; | ||||
int ret; | int ret; | ||||
snprintf(filename, 255, "%s/.jackdmprc", getenv("HOME")); | |||||
snprintf(filename, 255, "%s/.jackdrc", getenv("HOME")); | |||||
fp = fopen(filename, "r"); | fp = fopen(filename, "r"); | ||||
if (!fp) { | if (!fp) { | ||||
fp = fopen("/etc/jackdmprc", "r"); | |||||
fp = fopen("/etc/jackdrc", "r"); | |||||
} | } | ||||
/* if still not found, check old config name for backwards compatability */ | /* if still not found, check old config name for backwards compatability */ | ||||
if (!fp) { | if (!fp) { | ||||
fp = fopen("/etc/jackdmp.conf", "r"); | |||||
fp = fopen("/etc/jackd.conf", "r"); | |||||
} | } | ||||
if (fp) { | if (fp) { | ||||
@@ -67,8 +67,8 @@ static void start_server_aux(const char* server_name) | |||||
} | } | ||||
if (!good) { | if (!good) { | ||||
command = JACK_LOCATION "/jackdmp"; | |||||
strncpy(arguments, JACK_LOCATION "/jackdmp -T -d "JACK_DEFAULT_DRIVER, 255); | |||||
command = JACK_LOCATION "/jackd"; | |||||
strncpy(arguments, JACK_LOCATION "/jackd -T -d "JACK_DEFAULT_DRIVER, 255); | |||||
} else { | } else { | ||||
result = strcspn(arguments, " "); | result = strcspn(arguments, " "); | ||||
command = (char*)malloc(result + 1); | command = (char*)malloc(result + 1); | ||||
@@ -97,7 +97,7 @@ static void start_server_aux(const char* server_name) | |||||
break; | break; | ||||
} | } | ||||
argv[i] = (char*)malloc(result + 1); | argv[i] = (char*)malloc(result + 1); | ||||
strncpy(argv[i], arguments+pos, result); | |||||
strncpy(argv[i], arguments + pos, result); | |||||
argv[i][result] = '\0'; | argv[i][result] = '\0'; | ||||
pos += result + 1; | pos += result + 1; | ||||
++i; | ++i; | ||||
@@ -80,6 +80,7 @@ static void usage(FILE* file) | |||||
" [ --loopback OR -L loopback-port-number ]\n" | " [ --loopback OR -L loopback-port-number ]\n" | ||||
// " [ --port-max OR -p maximum-number-of-ports]\n" | // " [ --port-max OR -p maximum-number-of-ports]\n" | ||||
" [ --verbose OR -v ]\n" | " [ --verbose OR -v ]\n" | ||||
" [ --replace-registry OR -r ]\n" | |||||
" [ --silent OR -s ]\n" | " [ --silent OR -s ]\n" | ||||
" [ --sync OR -S ]\n" | " [ --sync OR -S ]\n" | ||||
" [ --temporary OR -T ]\n" | " [ --temporary OR -T ]\n" | ||||
@@ -245,7 +246,7 @@ int main(int argc, char* argv[]) | |||||
int waiting; | int waiting; | ||||
jack_driver_desc_t* driver_desc; | jack_driver_desc_t* driver_desc; | ||||
const char *options = "-ad:P:uvshVRL:STFl:t:mn:p:"; | |||||
const char *options = "-ad:P:uvrshVRL:STFl:t:mn:p:"; | |||||
struct option long_options[] = { | struct option long_options[] = { | ||||
{ "driver", 1, 0, 'd' }, | { "driver", 1, 0, 'd' }, | ||||
{ "verbose", 0, 0, 'v' }, | { "verbose", 0, 0, 'v' }, | ||||
@@ -255,6 +256,7 @@ int main(int argc, char* argv[]) | |||||
{ "name", 0, 0, 'n' }, | { "name", 0, 0, 'n' }, | ||||
{ "unlock", 0, 0, 'u' }, | { "unlock", 0, 0, 'u' }, | ||||
{ "realtime", 0, 0, 'R' }, | { "realtime", 0, 0, 'R' }, | ||||
{ "replace-registry", 0, 0, 'r' }, | |||||
{ "loopback", 0, 0, 'L' }, | { "loopback", 0, 0, 'L' }, | ||||
{ "realtime-priority", 1, 0, 'P' }, | { "realtime-priority", 1, 0, 'P' }, | ||||
{ "timeout", 1, 0, 't' }, | { "timeout", 1, 0, 't' }, | ||||
@@ -272,6 +274,7 @@ int main(int argc, char* argv[]) | |||||
JSList* driver_params; | JSList* driver_params; | ||||
int driver_nargs = 1; | int driver_nargs = 1; | ||||
int show_version = 0; | int show_version = 0; | ||||
int replace_registry = 0; | |||||
int sync = 0; | int sync = 0; | ||||
int rc, i; | int rc, i; | ||||
@@ -313,7 +316,11 @@ int main(int argc, char* argv[]) | |||||
case 'P': | case 'P': | ||||
realtime_priority = atoi(optarg); | realtime_priority = atoi(optarg); | ||||
break; | break; | ||||
case 'r': | |||||
replace_registry = 1; | |||||
break; | |||||
case 'R': | case 'R': | ||||
realtime = 1; | realtime = 1; | ||||
break; | break; | ||||
@@ -404,7 +411,7 @@ int main(int argc, char* argv[]) | |||||
copyright(stdout); | copyright(stdout); | ||||
rc = jack_register_server(server_name); | |||||
rc = jack_register_server(server_name, replace_registry); | |||||
switch (rc) { | switch (rc) { | ||||
case EEXIST: | case EEXIST: | ||||
fprintf(stderr, "`%s' server already active\n", server_name); | fprintf(stderr, "`%s' server already active\n", server_name); | ||||
@@ -276,7 +276,7 @@ jack_set_server_prefix (const char *server_name) | |||||
* returns: 0 if successful | * returns: 0 if successful | ||||
*/ | */ | ||||
static int | static int | ||||
jack_server_initialize_shm (void) | |||||
jack_server_initialize_shm (int new_registry) | |||||
{ | { | ||||
int rc; | int rc; | ||||
@@ -286,6 +286,11 @@ jack_server_initialize_shm (void) | |||||
jack_shm_lock_registry (); | jack_shm_lock_registry (); | ||||
rc = jack_access_registry (®istry_info); | rc = jack_access_registry (®istry_info); | ||||
if (new_registry) { | |||||
jack_remove_shm (®istry_id); | |||||
rc = ENOENT; | |||||
} | |||||
switch (rc) { | switch (rc) { | ||||
case ENOENT: /* registry does not exist */ | case ENOENT: /* registry does not exist */ | ||||
@@ -430,7 +435,7 @@ jack_release_shm_info (jack_shm_registry_index_t index) | |||||
* ENOMEM if unable to access shared memory registry | * ENOMEM if unable to access shared memory registry | ||||
*/ | */ | ||||
EXPORT int | EXPORT int | ||||
jack_register_server (const char *server_name) | |||||
jack_register_server (const char *server_name, int new_registry) | |||||
{ | { | ||||
int i, res = 0; | int i, res = 0; | ||||
@@ -442,7 +447,7 @@ jack_register_server (const char *server_name) | |||||
jack_set_server_prefix (server_name); | jack_set_server_prefix (server_name); | ||||
if (jack_server_initialize_shm ()) | |||||
if (jack_server_initialize_shm (new_registry)) | |||||
return ENOMEM; | return ENOMEM; | ||||
jack_shm_lock_registry (); | jack_shm_lock_registry (); | ||||
@@ -770,7 +775,7 @@ jack_shmalloc (const char *shm_name, jack_shmsize_t size, jack_shm_info_t* si) | |||||
* registry index for uniqueness and ignore the shm_name | * registry index for uniqueness and ignore the shm_name | ||||
* parameter. Bah! | * parameter. Bah! | ||||
*/ | */ | ||||
snprintf (name, sizeof (name), "/jack-%d", registry->index); | |||||
snprintf (name, sizeof (name), "/jackmp-%d", registry->index); | |||||
if (strlen (name) >= sizeof (registry->id)) { | if (strlen (name) >= sizeof (registry->id)) { | ||||
jack_error ("shm segment name too long %s", name); | jack_error ("shm segment name too long %s", name); | ||||
@@ -134,7 +134,7 @@ extern "C" | |||||
/* here beginneth the API */ | /* here beginneth the API */ | ||||
EXPORT extern int jack_register_server (const char *server_name); | |||||
EXPORT extern int jack_register_server (const char *server_name, int new_registry); | |||||
EXPORT extern void jack_unregister_server (const char *server_name); | EXPORT extern void jack_unregister_server (const char *server_name); | ||||
extern int jack_initialize_shm (const char *server_name); | extern int jack_initialize_shm (const char *server_name); | ||||
@@ -113,9 +113,11 @@ install: | |||||
cp jack_dummy.so $(prefix)/lib/jackmp | cp jack_dummy.so $(prefix)/lib/jackmp | ||||
[ -f jack_freebob.so ] && cp jack_freebob.so $(prefix)/lib/jackmp || echo "freebob driver not installed" | [ -f jack_freebob.so ] && cp jack_freebob.so $(prefix)/lib/jackmp || echo "freebob driver not installed" | ||||
cd $(prefix)/lib && [ -f libjack.so.0.0.23 ] && mv -f libjack.so.0.0.23 tmp_libjack.so.0.0.23 || echo "Jack not found, continue..." | cd $(prefix)/lib && [ -f libjack.so.0.0.23 ] && mv -f libjack.so.0.0.23 tmp_libjack.so.0.0.23 || echo "Jack not found, continue..." | ||||
cd $(prefix)/bin && [ -f jackd ] && mv -f jackd tmp_jackd | |||||
cd $(prefix)/lib && rm -f libjack.so* | cd $(prefix)/lib && rm -f libjack.so* | ||||
cd $(prefix)/lib && ln -s libjackmp.so libjack.so | cd $(prefix)/lib && ln -s libjackmp.so libjack.so | ||||
cd $(prefix)/lib && ln -s libjackmp.so libjack.so.0 | cd $(prefix)/lib && ln -s libjackmp.so libjack.so.0 | ||||
cd $(prefix)/bin && ln -s jackdmp jackd | |||||
/sbin/ldconfig | /sbin/ldconfig | ||||
# Remove jackdmp and tries to restore jack | # Remove jackdmp and tries to restore jack | ||||
@@ -129,6 +131,7 @@ remove: | |||||
cd $(prefix)/lib && rm -f libjack.so* | cd $(prefix)/lib && rm -f libjack.so* | ||||
cd $(prefix)/lib && [ -f tmp_libjack.so.0.0.23 ] && mv -f tmp_libjack.so.0.0.23 libjack.so.0.0.23 \ | cd $(prefix)/lib && [ -f tmp_libjack.so.0.0.23 ] && mv -f tmp_libjack.so.0.0.23 libjack.so.0.0.23 \ | ||||
&& ln -s libjack.so.0.0.23 libjack.so && ln -s libjack.so.0.0.23 libjack.so.0 || echo "Jack not restored" | && ln -s libjack.so.0.0.23 libjack.so && ln -s libjack.so.0.0.23 libjack.so.0 || echo "Jack not restored" | ||||
cd $(prefix)/bin && [ -f tmp_jackd ] && mv -f tmp_jackd jackd | |||||
/sbin/ldconfig | /sbin/ldconfig | ||||
@@ -1,23 +1,27 @@ | |||||
# Install jackdmp and owerwrite jack installation | # Install jackdmp and owerwrite jack installation | ||||
# Plug-ins | |||||
sudo cp -r Panda.framework /Library/Frameworks | sudo cp -r Panda.framework /Library/Frameworks | ||||
sudo cp -r JackRouterMP.plugin /Library/Audio/Plug-Ins/HAL/ | sudo cp -r JackRouterMP.plugin /Library/Audio/Plug-Ins/HAL/ | ||||
# Copy libraries and exe | |||||
sudo cp -r Jackmp.framework /Library/Frameworks/ | sudo cp -r Jackmp.framework /Library/Frameworks/ | ||||
sudo cp -r Jackdmp.framework /Library/Frameworks/ | sudo cp -r Jackdmp.framework /Library/Frameworks/ | ||||
sudo install -d /usr/local/bin | sudo install -d /usr/local/bin | ||||
sudo cp jackdmp /usr/local/bin | sudo cp jackdmp /usr/local/bin | ||||
# Copy drivers | |||||
sudo install -d /usr/local/lib/jackmp | sudo install -d /usr/local/lib/jackmp | ||||
sudo cp jack_coreaudio.so /usr/local/lib/jackmp | sudo cp jack_coreaudio.so /usr/local/lib/jackmp | ||||
sudo cp jack_dummy.so /usr/local/lib/jackmp | sudo cp jack_dummy.so /usr/local/lib/jackmp | ||||
# Create links to jackmp ressources | |||||
cd /usr/local/lib && [ -f libjack.0.dylib ] && sudo mv -f libjack.0.dylib tmp_libjack.0.dylib | cd /usr/local/lib && [ -f libjack.0.dylib ] && sudo mv -f libjack.0.dylib tmp_libjack.0.dylib | ||||
cd /usr/local/lib && [ -f jackd ] && sudo mv -f jackd tmp_jackd | |||||
cd /usr/local/lib && [ -f libjack.dylib ] && sudo rm libjack.dylib | cd /usr/local/lib && [ -f libjack.dylib ] && sudo rm libjack.dylib | ||||
cd /usr/local/bin && [ -f jackd ] && sudo rm jackd | |||||
cd /usr/local/lib && sudo ln -s /Library/Frameworks/Jackmp.framework/Jackmp libjack.dylib | cd /usr/local/lib && sudo ln -s /Library/Frameworks/Jackmp.framework/Jackmp libjack.dylib | ||||
cd /usr/local/lib && sudo ln -s /Library/Frameworks/Jackmp.framework/Jackmp libjack.0.dylib | cd /usr/local/lib && sudo ln -s /Library/Frameworks/Jackmp.framework/Jackmp libjack.0.dylib | ||||
cd /usr/local/bin && sudo ln -s jackdmp jackd | |||||
@@ -1,13 +1,15 @@ | |||||
# Remove jackdmp and tries to restore jack | |||||
# Remove jackdmp resources | |||||
sudo rm -r "/usr/local/lib/jackmp" | sudo rm -r "/usr/local/lib/jackmp" | ||||
sudo rm "/usr/local/bin/jackdmp" | sudo rm "/usr/local/bin/jackdmp" | ||||
sudo rm -r "/usr/local/lib/jackd" | |||||
sudo rm "/usr/local/lib/libjackmp.dylib" | sudo rm "/usr/local/lib/libjackmp.dylib" | ||||
sudo rm -r "/Library/Frameworks/Jackmp.framework" | sudo rm -r "/Library/Frameworks/Jackmp.framework" | ||||
sudo rm -r "/Library/Frameworks/Jackdmp.framework" | sudo rm -r "/Library/Frameworks/Jackdmp.framework" | ||||
sudo rm -r "/Library/Audio/Plug-Ins/HAL/JackRouterMP.plugin" | sudo rm -r "/Library/Audio/Plug-Ins/HAL/JackRouterMP.plugin" | ||||
# Tries to restore jack | |||||
cd /usr/local/lib && sudo rm -r libjack.0.dylib | cd /usr/local/lib && sudo rm -r libjack.0.dylib | ||||
cd /usr/local/lib && [ -f tmp_libjack.0.dylib ] && sudo mv -f tmp_libjack.0.dylib libjack.0.dylib | cd /usr/local/lib && [ -f tmp_libjack.0.dylib ] && sudo mv -f tmp_libjack.0.dylib libjack.0.dylib | ||||
cd /usr/local/lib && ln -s libjack.0.dylib libjack.dylib | cd /usr/local/lib && ln -s libjack.0.dylib libjack.dylib | ||||
cd /usr/local/bin && [ -f tmp_jackd ] && sudo mv -f tmp_jackd jackd | |||||
@@ -79,6 +79,7 @@ static void usage (FILE *file) | |||||
" [ --loopback OR -L loopback-port-number ]\n" | " [ --loopback OR -L loopback-port-number ]\n" | ||||
// " [ --port-max OR -p maximum-number-of-ports]\n" | // " [ --port-max OR -p maximum-number-of-ports]\n" | ||||
" [ --verbose OR -v ]\n" | " [ --verbose OR -v ]\n" | ||||
" [ --replace-registry OR -r ]\n" | |||||
" [ --silent OR -s ]\n" | " [ --silent OR -s ]\n" | ||||
" [ --sync OR -S ]\n" | " [ --sync OR -S ]\n" | ||||
" [ --version OR -V ]\n" | " [ --version OR -V ]\n" | ||||
@@ -262,6 +263,7 @@ int main(int argc, char* argv[]) | |||||
{ "name", 0, 0, 'n' }, | { "name", 0, 0, 'n' }, | ||||
{ "unlock", 0, 0, 'u' }, | { "unlock", 0, 0, 'u' }, | ||||
{ "realtime", 0, 0, 'R' }, | { "realtime", 0, 0, 'R' }, | ||||
{ "replace-registry", 0, 0, 'r' }, | |||||
{ "loopback", 0, 0, 'L' }, | { "loopback", 0, 0, 'L' }, | ||||
{ "realtime-priority", 1, 0, 'P' }, | { "realtime-priority", 1, 0, 'P' }, | ||||
{ "timeout", 1, 0, 't' }, | { "timeout", 1, 0, 't' }, | ||||
@@ -279,6 +281,7 @@ int main(int argc, char* argv[]) | |||||
JSList * driver_params; | JSList * driver_params; | ||||
int driver_nargs = 1; | int driver_nargs = 1; | ||||
int show_version = 0; | int show_version = 0; | ||||
int replace_registry = 0; | |||||
int sync = 0; | int sync = 0; | ||||
int i; | int i; | ||||
int rc; | int rc; | ||||
@@ -329,6 +332,10 @@ int main(int argc, char* argv[]) | |||||
case 'P': | case 'P': | ||||
realtime_priority = atoi(optarg); | realtime_priority = atoi(optarg); | ||||
break; | break; | ||||
case 'r': | |||||
replace_registry = 1; | |||||
break; | |||||
case 'R': | case 'R': | ||||
realtime = 1; | realtime = 1; | ||||
@@ -414,7 +421,7 @@ int main(int argc, char* argv[]) | |||||
copyright (stdout); | copyright (stdout); | ||||
rc = jack_register_server (server_name); | |||||
rc = jack_register_server (server_name, replace_registry); | |||||
switch (rc) { | switch (rc) { | ||||
case EEXIST: | case EEXIST: | ||||
fprintf (stderr, "`%s' server already active\n", server_name); | fprintf (stderr, "`%s' server already active\n", server_name); | ||||