Re: [Jack-Devel] [Fwd: Re: [Guitarix-developer] jack session crash]
Am Mittwoch, den 02.11.2011, 20:48 +0100 schrieb Stéphane Letz:
> Le 2 nov. 2011 à 20:33, Paul Davis a écrit :
>
> > On Wed, Nov 2, 2011 at 3:14 PM, hermann <[hidden]> wrote:
> >
> >> To make the mess complete, the weak linking doesn't work as
> >> advertised by the jackd developers. At least my understanding and
> >> that of the ubuntu / debian packagers seems to be:
> >>
> >> 1) you can compile and link with either package (works)
> >> 2) when the function is not in the shared library used at
> >> runtime, the function address will be 0. Does NOT work.
> >>
> >> 2) only works when the shared lib used at runtime is the same as
> >> the one used when linking. The compiler / linker will set the address
> >> of a weak function that it does not find in the libraries supplied to
> >> constant 0. Even when the funktion is in the library which is used at
> >> runtime, there will be no runtime linking.
> >
> > I have no idea what you are trying to say here.
> >
> > If the function prototype was declared with weak linkage, and the
> > symbol is not found at runtime, then this condition:
> >
> > if (function_name)
> >
> > will evaluate to false.
> >
> > ardour is doing this all the time.
> >
> > its fairly clear from your test program that you have not include
> > weakjack.h which is required to get weak linkage declarations.
> >
> > --p
>
> /**
> * get the assigned uuid for client.
> * safe to call from callback and all other threads.
> * memory needs to be freed.
> */
>
> char *jack_client_get_uuid (jack_client_t *client) JACK_WEAK_EXPORT;
>
>
> Freed by jak_free API yes ? ==> should be added in the doc
>
> /**
> * Get the session ID for a client name.
> * The session manager needs this to reassociate a client name to the session_id.
> */
> char *jack_get_uuid_for_client_name (jack_client_t *client,
> const char *client_name) JACK_WEAK_EXPORT;
>
>
> Freed by jak_free API yes ? ==> should be added in the doc
>
> /**
> * Get the client name for a session_id.
> *
> * In order to snapshot the graph connections, the session manager needs to map
> * session_ids to client names.
> */
> char *jack_get_client_name_by_uuid (jack_client_t *client,
> const char *client_uuid ) JACK_WEAK_EXPORT;
>
> Freed by jak_free API yes ? ==> should be added in the doc
>
>
>
> jack_client_get_uuid missing in JACK2:
>
> code from JACK1:
>
> char *
> jack_client_get_uuid( jack_client_t *client )
> {
> char retval[16];
>
> snprintf( retval, sizeof(retval), "%d", client->control->uid );
>
> return strdup(retval);
> }
>
> ==> Torben, I guess JACK1 client->control->uid correspond to JACK2 fSessionID field in JackClientControl yes?
>
> Thanks.
>
> Stéphane
Stéphane, is there any chance that this comes in sync for both jack
versions ?
greets
hermann
1320264635.26709_0.ltw:2,a <1320264597.2111.43.camel at box>