Browse Source

Revert "Set driver port order metadata".

The "client" argument being passed to jack_set_property() is
jack_client_internal_t*, not jack_client_t* as expected, which leads
to a crash. Using client->private_client (which is a jack_client_t*)
causes deadlock because do_request() is called recursively.

The goal here is good, but it can't be accomplished in this way.

This reverts commit 439e47da1a.
tags/0.125.0rc1
Paul Davis 10 years ago
parent
commit
7ae3b2be3c
2 changed files with 2 additions and 18 deletions
  1. +0
    -11
      jackd/engine.c
  2. +2
    -7
      libjack/client.c

+ 0
- 11
jackd/engine.c View File

@@ -4474,17 +4474,6 @@ next:

req->x.port_info.port_id = port_id;

if (internal) {
/* set port order so clients can list ports in the proper order if
* there are more than 9 driver ports (since the lack of leading zeros
* breaks sorting by name) */
char index_str[16];
snprintf (index_str, sizeof(index_str), "%d", port_id);
jack_set_property (client, shared->uuid,
"http://jackaudio.org/metadata/order", index_str,
"http://www.w3.org/2001/XMLSchema#integer");
}

return 0;
}



+ 2
- 7
libjack/client.c View File

@@ -295,15 +295,10 @@ jack_client_deliver_request (const jack_client_t *client, jack_request_t *req)
{
/* indirect through the function pointer that was set either
* by jack_client_open() or by jack_new_client_request() in
* the server. possibly NULL during driver port registration,
* in which case we don't care about request delivery.
* the server.
*/

if (client->deliver_request) {
return client->deliver_request (client->deliver_arg, req);
}

return 0;
return client->deliver_request (client->deliver_arg, req);
}

#if JACK_USE_MACH_THREADS


Loading…
Cancel
Save