| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a no-op since the line was already commented out, to make it
compile on FreeBSD. But it deserves an explanation:
The _POSIX_C_SOURCE macro is meant to restrict the C library to a
certain POSIX standard, not to enable features. This is inappropriate
here because:
1. Jack already uses non-POSIX functions. E.g. JackPosixSemaphore.cpp
references gettimeofday(), which is part of the X/Open specs.
2. C++ does not define a POSIX level to be based on. Headers from the
C++ standard library may (and do) break when the POSIX feature level
is restricted.
The canonical way is to only set the feature level through the
"--std=gnu++11" compile options.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Features:
* Internal workings more in line with other Jack drivers.
* Use poll() for wait and sync instead of blocking I/O.
* Allows to use Jack in "async" mode.
* Calculate DSP usage correctly.
* OSS buffer management to achieve stable latencies.
* Latency correction for asymmetric OSS buffer use.
* More robust handling of over- and underruns.
* Handle format changes forced by the OSS interface.
* FreeBSD 24bit samples are always packed.
No changes to the driver parameters or the user interface.
|
|
|
|
| |
Start with an unchanged copy of the Solaris OSS driver.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
This is forbidden (returns EINVAL)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* macOS: Pass JackMachSemaphore send right via mach_msg IPC
Previously, JackMachSemaphore would communicate the send right for the
semaphore object from the server to a client via a named service
registered via `bootstrap_register`. However, to do this, it would
register the semaphore's port as the service port directly.
In theory this ought to be fine, however in practice, macOS `launchd`,
which provides the `bootstrap_register` interface, does not correctly
detect when such a port becomes dead, and incorrectly believes that the
service that it provides is forever alive, even past the end of the
`jackd` process' (and therefore the semaphore's) existence. This seems
to be *specific* to semaphore ports, as `launchd` is expecting a
standard IPC port, owned by the task, not the kernel. This prevents
`jackd` from later registering another service with the same name, as
`launchd` rejects the registration as conflicting with an active service.
To get around this, `jackd` previously added a counter to the end of the
named service registrations, allowing old services to remain in the
system until the end of the session. To prevent things getting out of
hand, this was capped at 98 service registrations for a given semaphore
name. This led to #784, in which running a client for the 99th time
resulted in the semaphore creation failing and the client failing to
connect.
As `launchd` outlives multiple runs of `jackd`, this situation persisted
across restarts of `jackd`, requiring a restart of the user's session
(i.e. a reboot) to fix.
An initial attempt at fixing this (see #785) tried passing the port
rights directly via shared memory, however mach is too clever for us and
foils that plan by having port names be looked up in a per-task table
(sensible when you think about it).
In this commit, we use mach IPC messages to transfer the send right for
the semaphore from the server to the client. By registering a standard
IPC port with the bootstrap server, the service registrations are
correctly torn down when the ports are destroyed.
It works something like this:
* Server creates IPC port and registers it globally via `bootstrap_register`
* Server listens on IPC port for messages
* Client looks up IPC port via `bootstrap_look_up`
* Client sends it a message
* Server replies with a message containing a send right to the
semaphore's port
* Client is then free to use the semaphore port as before.
This resolves #784.
* Improve error handling
* Add myself to Authors
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
This reverts commit 9a33cc254c49c0c96c4dbe0552caade1583fb1e2.
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|
|
|
|
| |
Signed-off-by: falkTX <falktx@falktx.com>
|