Browse Source

Merge branch 'develop'

tags/v1.9.15
falkTX 5 years ago
parent
commit
19c5cf73ee
Signed by: falkTX <falktx@falktx.com> GPG Key ID: CDBAA37ABC74FBA0
100 changed files with 1713 additions and 29616 deletions
  1. +20
    -1
      .ci/install-deps.sh
  2. +8
    -0
      .gitignore
  3. +70
    -29
      .travis.yml
  4. +280
    -0
      COPYING
  5. +3
    -1
      README.rst
  6. +78
    -46
      common/JackDriverLoader.cpp
  7. +2
    -2
      common/JackEngine.cpp
  8. +1
    -0
      common/JackEngineControl.h
  9. +4
    -0
      common/JackGraphManager.cpp
  10. +1
    -0
      common/JackInternalClient.cpp
  11. +1
    -0
      common/JackLibClient.cpp
  12. +36
    -17
      common/JackMetadata.cpp
  13. +8
    -0
      common/JackMetadata.h
  14. +1
    -1
      common/JackPortType.cpp
  15. +1
    -1
      common/JackPortType.h
  16. +0
    -1
      common/JackShmMem.cpp
  17. +0
    -39
      common/JackShmMem.h
  18. +6
    -5
      common/JackTools.cpp
  19. +2
    -2
      common/JackTools.h
  20. +4
    -0
      common/driver_interface.h
  21. +11
    -11
      common/jack/metadata.h
  22. +37
    -5
      common/jack/session.h
  23. +8
    -8
      common/jack/systemdeps.h
  24. +38
    -37
      common/shm.c
  25. +52
    -31
      common/wscript
  26. +1
    -1
      doxyfile.in
  27. +1
    -1
      example-clients/connect.c
  28. +23
    -20
      example-clients/jack_control
  29. +32
    -33
      example-clients/property.c
  30. +15
    -3
      example-clients/wait.c
  31. +1
    -1
      jack.pc.in
  32. +8
    -8
      linux/alsa/JackAlsaAdapter.h
  33. +8
    -6
      linux/alsa/alsa_driver.c
  34. +6
    -1
      macosx/JackMachSemaphore.h
  35. +113
    -23
      macosx/JackMachSemaphore.mm
  36. +2
    -18
      macosx/JackPlatformPlug_os.h
  37. +0
    -20555
      macosx/Jackdmp.xcodeproj/project.pbxproj
  38. +54
    -0
      macosx/generate-pkg.sh
  39. +0
    -30
      macosx/iphone/Info.plist
  40. +0
    -440
      macosx/iphone/MainWindow.xib
  41. +0
    -35
      macosx/iphone/audio_thru.mm
  42. +0
    -750
      macosx/iphone/freeverb.mm
  43. +0
    -1298
      macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj
  44. +0
    -23
      macosx/iphone/iPhoneNetAppDelegate.h
  45. +0
    -32
      macosx/iphone/iPhoneNetAppDelegate.m
  46. +0
    -10
      macosx/iphone/iPhoneNet_Prefix.pch
  47. BIN
      macosx/iphone/icon.png
  48. +0
    -3127
      macosx/iphone/iphone-faust.mm
  49. +0
    -155
      macosx/iphone/main_master.mm
  50. +0
    -114
      macosx/iphone/main_slave.mm
  51. BIN
      macosx/libaften_pcm.a
  52. BIN
      macosx/libaften_static.a
  53. BIN
      macosx/libcelt.a
  54. BIN
      macosx/libopus.a
  55. BIN
      macosx/libportaudio.a
  56. +18
    -0
      macosx/package-welcome.txt.in
  57. +19
    -0
      macosx/package.xml.in
  58. +1
    -1
      posix/JackFifo.cpp
  59. +1
    -1
      posix/JackFifo.h
  60. +1
    -0
      posix/JackNetUnixSocket.cpp
  61. +2
    -11
      posix/JackPosixSemaphore.cpp
  62. +0
    -2
      posix/JackSocketServerChannel.cpp
  63. +0
    -1
      posix/JackSocketServerNotifyChannel.cpp
  64. +3
    -0
      windows/JackMMCSS.h
  65. +5
    -0
      windows/JackPlatformPlug_os.h
  66. +4
    -1
      windows/JackRouter/JackRouter.h
  67. +25
    -0
      windows/JackRouter/JackRouter_MinGW_deps.sln
  68. +287
    -0
      windows/JackRouter/JackRouter_MinGW_deps.vcxproj
  69. +3
    -0
      windows/JackShmMem_os.h
  70. +6
    -1
      windows/JackSystemDeps_os.h
  71. +9
    -2
      windows/JackTypes_os.h
  72. +4
    -0
      windows/JackWinEvent.h
  73. +7
    -4
      windows/JackWinMutex.h
  74. +3
    -0
      windows/JackWinNamedPipe.h
  75. +3
    -0
      windows/JackWinSemaphore.h
  76. +3
    -0
      windows/JackWinThread.h
  77. +270
    -0
      windows/README_MINGW
  78. BIN
      windows/Release/bin/libportaudio_x86.a
  79. BIN
      windows/Release/bin/libsamplerate_x86.a
  80. BIN
      windows/Release64/bin/libportaudio_x86_64.a
  81. BIN
      windows/Release64/bin/libsamplerate_x86_64.a
  82. BIN
      windows/inno/jack.ico
  83. +51
    -0
      windows/inno/win32.iss
  84. +52
    -0
      windows/inno/win64.iss
  85. +0
    -215
      windows/jack_audioadapter.cbp
  86. +0
    -163
      windows/jack_connect.cbp
  87. +0
    -167
      windows/jack_disconnect.cbp
  88. +0
    -173
      windows/jack_dummy.cbp
  89. +0
    -152
      windows/jack_latent_client.cbp
  90. +0
    -155
      windows/jack_load.cbp
  91. +0
    -173
      windows/jack_loopback.cbp
  92. +0
    -152
      windows/jack_lsp.cbp
  93. +0
    -158
      windows/jack_metro.cbp
  94. +0
    -114
      windows/jack_midi_dump.cbp
  95. +0
    -152
      windows/jack_midi_latency_test.cbp
  96. +0
    -187
      windows/jack_netadapter.cbp
  97. +0
    -176
      windows/jack_netdriver.cbp
  98. +0
    -169
      windows/jack_netmanager.cbp
  99. +0
    -182
      windows/jack_netonedriver.cbp
  100. +0
    -183
      windows/jack_netsource.cbp

+ 20
- 1
.ci/install-deps.sh View File

@@ -23,6 +23,10 @@ if [ "$TRAVIS_OS_NAME" == "osx" ]; then
if [ "${CC}" == "gcc-8" ]; then if [ "${CC}" == "gcc-8" ]; then
brew install gcc@8 brew install gcc@8
fi fi
# force installation of gcc-9 if required
if [ "${CC}" == "gcc-9" ]; then
brew install gcc@9
fi
fi fi


if [ "$TRAVIS_OS_NAME" == "linux" ]; then if [ "$TRAVIS_OS_NAME" == "linux" ]; then
@@ -34,7 +38,6 @@ if [ "$TRAVIS_OS_NAME" == "linux" ]; then
libsndfile-dev \ libsndfile-dev \
libasound2-dev \ libasound2-dev \
libdb-dev \ libdb-dev \
systemd-services \
systemd \ systemd \
libsystemd-dev \ libsystemd-dev \
libpam-systemd \ libpam-systemd \
@@ -73,10 +76,26 @@ if [ "$TRAVIS_OS_NAME" == "linux" ]; then
if [ "${CC}" == "gcc-8" ]; then if [ "${CC}" == "gcc-8" ]; then
sudo apt-get install gcc-8 g++-8 sudo apt-get install gcc-8 g++-8
fi fi
# force installation of gcc-9 if required
if [ "${CC}" == "gcc-9" ]; then
sudo apt-get install gcc-9 g++-9
fi
# force installation of clang-3.5 if required
if [ "${CC}" == "clang-3.5" ]; then
sudo apt-get install clang-3.5
fi
# force installation of clang-3.8 if required # force installation of clang-3.8 if required
if [ "${CC}" == "clang-3.8" ]; then if [ "${CC}" == "clang-3.8" ]; then
sudo apt-get install clang-3.8 sudo apt-get install clang-3.8
fi fi
# force installation of clang-6.0 if required
if [ "${CC}" == "clang-6.0" ]; then
sudo apt-get install clang-6.0
fi
# force installation of clang-8 if required
if [ "${CC}" == "clang-8" ]; then
sudo apt-get install clang-8
fi
fi fi


exit 0 exit 0

+ 8
- 0
.gitignore View File

@@ -1,8 +1,16 @@
build/ build/
man/*.1 man/*.1
.lock* .lock*
.stamp_*
.DS_Store
__pycache__ __pycache__
*.pyc *.pyc
*.pkg
android/.server/ android/.server/
android/.client/ android/.client/
codeBlocks codeBlocks

# macos release files
macos/package.xml
macos/package-welcome.txt


+ 70
- 29
.travis.yml View File

@@ -4,6 +4,18 @@ sudo: required


matrix: matrix:
include: include:
# linux with gcc 9
- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
install:
- gcc-9
dist: bionic
env:
- MATRIX_EVAL="CC=gcc-9 CXX=g++-9"
compiler: gcc
# linux with gcc 8 # linux with gcc 8
- os: linux - os: linux
addons: addons:
@@ -12,7 +24,7 @@ matrix:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
install: install:
- gcc-8 - gcc-8
dist: xenial
dist: bionic
env: env:
- MATRIX_EVAL="CC=gcc-8 CXX=g++-8" - MATRIX_EVAL="CC=gcc-8 CXX=g++-8"
compiler: gcc compiler: gcc
@@ -24,7 +36,7 @@ matrix:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
install: install:
- gcc-7 - gcc-7
dist: xenial
dist: bionic
env: env:
- MATRIX_EVAL="CC=gcc-7 CXX=g++-7" - MATRIX_EVAL="CC=gcc-7 CXX=g++-7"
compiler: gcc compiler: gcc
@@ -36,17 +48,45 @@ matrix:
- ubuntu-toolchain-r-test - ubuntu-toolchain-r-test
install: install:
- gcc-6 - gcc-6
dist: xenial
dist: bionic
env: env:
- MATRIX_EVAL="CC=gcc-6 CXX=g++-6" - MATRIX_EVAL="CC=gcc-6 CXX=g++-6"
compiler: gcc compiler: gcc
# linux with gcc default (4.8)
# linux with gcc 5
- os: linux - os: linux
dist: xenial
dist: bionic
env:
- MATRIX_EVAL="CC=gcc CXX=g++"
compiler: gcc compiler: gcc
# linux with clang default (3.5)
# linux with gcc 4
- os: linux - os: linux
dist: xenial dist: xenial
env:
- MATRIX_EVAL="CC=gcc CXX=g++"
compiler: gcc
# linux with clang 8
- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
install:
- clang-8
dist: bionic
env:
- MATRIX_EVAL="CC=clang-8 CXX=clang++-8"
compiler: clang
# linux with clang 6
- os: linux
addons:
apt:
sources:
- ubuntu-toolchain-r-test
install:
- clang-6.0
dist: bionic
env:
- MATRIX_EVAL="CC=clang-6.0 CXX=clang++-6.0"
compiler: clang compiler: clang
# linux with clang 3.8 # linux with clang 3.8
- os: linux - os: linux
@@ -60,31 +100,31 @@ matrix:
env: env:
- MATRIX_EVAL="CC=clang-3.8 CXX=clang++-3.8" - MATRIX_EVAL="CC=clang-3.8 CXX=clang++-3.8"
compiler: clang compiler: clang
# osx with xcode8.3/clang
- os: osx
osx_image: xcode8.3
compiler: clang
# osx with xcode9.2/clang
- os: osx
osx_image: xcode9.2
compiler: clang
# osx with xcode10.0/clang
- os: osx
osx_image: xcode10
compiler: clang
# osx with xcode10.1/clang
- os: osx
osx_image: xcode10.1
compiler: clang
# osx with xcode/clang (default)
- os: osx
compiler: clang
## osx with xcode8.3/clang
#- os: osx
#osx_image: xcode8.3
#compiler: clang
## osx with xcode9.2/clang
#- os: osx
#osx_image: xcode9.2
#compiler: clang
## osx with xcode10.0/clang
#- os: osx
#osx_image: xcode10
#compiler: clang
## osx with xcode10.1/clang
#- os: osx
#osx_image: xcode10.1
#compiler: clang
## osx with xcode/clang (default)
#- os: osx
#compiler: clang


before_install: before_install:
- eval "${MATRIX_EVAL}" - eval "${MATRIX_EVAL}"
# uninstalling oclint, as it's preinstalled and conflicts with all versions of gcc # uninstalling oclint, as it's preinstalled and conflicts with all versions of gcc
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew cask uninstall oclint || true
brew cask uninstall oclint || true;
brew update; brew update;
fi fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get -qq update; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get -qq update; fi
@@ -99,12 +139,13 @@ script:
- if [ "$TRAVIS_OS_NAME" == "linux" ]; then - if [ "$TRAVIS_OS_NAME" == "linux" ]; then
./waf configure --prefix=/usr --alsa --classic --dbus --systemd-unit; ./waf configure --prefix=/usr --alsa --classic --dbus --systemd-unit;
./waf -v build; ./waf -v build;
sudo ./waf -v install;
fi fi
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then - if [ "$TRAVIS_OS_NAME" == "osx" ]; then
CXXFLAGS="${CXXFLAGS} -flax-vector-conversions" ./waf configure;
CXXFLAGS="${CXXFLAGS} -flax-vector-conversions" ./waf -v build;
CXXFLAGS="${CXXFLAGS} -flax-vector-conversions" python2 ./waf configure;
CXXFLAGS="${CXXFLAGS} -flax-vector-conversions" python2 ./waf -v build;
sudo python2 ./waf -v install;
fi fi
- sudo ./waf -v install
# run very basic tests # run very basic tests
- sudo .ci/test_run.sh - sudo .ci/test_run.sh




+ 280
- 0
COPYING View File

@@ -0,0 +1,280 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.

When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.

We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and
modification follow.

GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.

b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.

c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,

b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,

c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

+ 3
- 1
README.rst View File

@@ -1,4 +1,4 @@
`JACK2 <http://jackaudio.org/>`_
`JACK2 <https://jackaudio.org/>`_
################################ ################################


.. image:: https://travis-ci.org/jackaudio/jack2.svg?branch=master .. image:: https://travis-ci.org/jackaudio/jack2.svg?branch=master
@@ -34,3 +34,5 @@ and robust system.
mode usually result in fewer (less audible) audio glitches in a loaded mode usually result in fewer (less audible) audio glitches in a loaded
system. system.


For further information, see the JACK `homepage <https://jackaudio.org/>`_ and `wiki <https://github.com/jackaudio/jackaudio.github.com/wiki>`_. There are also the #jack and #lad chat channels on `freenode IRC <https://freenode.net>`_.


+ 78
- 46
common/JackDriverLoader.cpp View File

@@ -32,41 +32,47 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include <dirent.h> #include <dirent.h>
#endif #endif


#ifdef WIN32
typedef wchar_t file_char_t;
#else
typedef char file_char_t;
#endif

#ifdef WIN32 #ifdef WIN32


static char* locate_dll_driver_dir()
static wchar_t* locate_dll_driver_dir()
{ {
HMODULE libjack_handle = NULL; HMODULE libjack_handle = NULL;
GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
reinterpret_cast<LPCSTR>(locate_dll_driver_dir), &libjack_handle);
GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
reinterpret_cast<LPCWSTR>(locate_dll_driver_dir), &libjack_handle);


// For WIN32 ADDON_DIR is defined in JackConstants.h as relative path // For WIN32 ADDON_DIR is defined in JackConstants.h as relative path
char driver_dir_storage[512];
if (3 < GetModuleFileName(libjack_handle, driver_dir_storage, 512)) {
char *p = strrchr(driver_dir_storage, '\\');
wchar_t driver_dir_storage[512];
if (3 < GetModuleFileNameW(libjack_handle, driver_dir_storage, 512)) {
wchar_t *p = wcsrchr(driver_dir_storage, L'\\');
if (p && (p != driver_dir_storage)) { if (p && (p != driver_dir_storage)) {
*p = 0; *p = 0;
}
jack_info("Drivers/internals found in : %s", driver_dir_storage);
strcat(driver_dir_storage, "/");
strcat(driver_dir_storage, ADDON_DIR);
return strdup(driver_dir_storage);
}
jack_info("Drivers/internals found in : %S", driver_dir_storage);
wcscat(driver_dir_storage, L"\\");
wcscat(driver_dir_storage, ADDON_DIRW);
return wcsdup(driver_dir_storage);
} else { } else {
jack_error("Cannot get JACK dll directory : %d", GetLastError()); jack_error("Cannot get JACK dll directory : %d", GetLastError());
return NULL; return NULL;
} }
} }


static char* locate_driver_dir(HANDLE& file, WIN32_FIND_DATA& filedata)
static wchar_t* locate_driver_dir(HANDLE& file, WIN32_FIND_DATAW& filedata)
{ {
// Search drivers/internals iin the same folder of "libjackserver.dll" // Search drivers/internals iin the same folder of "libjackserver.dll"
char* driver_dir = locate_dll_driver_dir();
char dll_filename[512];
snprintf(dll_filename, sizeof(dll_filename), "%s/*.dll", driver_dir);
file = (HANDLE)FindFirstFile(dll_filename, &filedata);
wchar_t* driver_dir = locate_dll_driver_dir();
wchar_t dll_filename[512];
swprintf(dll_filename, 510, L"%S/*.dll", driver_dir);
file = (HANDLE)FindFirstFileW(dll_filename, &filedata);


if (file == INVALID_HANDLE_VALUE) { if (file == INVALID_HANDLE_VALUE) {
jack_error("Drivers not found ");
jack_error("Drivers not found in \"%S\": \"%S\"", driver_dir, dll_filename);
free(driver_dir); free(driver_dir);
return NULL; return NULL;
} else { } else {
@@ -412,16 +418,20 @@ jack_driver_desc_t* jack_find_driver_descriptor (JSList * drivers, const char* n
return desc; return desc;
} }


static void* check_symbol(const char* sofile, const char* symbol, const char* driver_dir, void** res_dllhandle = NULL)
static void* check_symbol(const file_char_t* sofile, const char* symbol, const file_char_t* driver_dir, void** res_dllhandle = NULL)
{ {
void* dlhandle; void* dlhandle;
void* res = NULL; void* res = NULL;
char filename[1024];
sprintf(filename, "%s/%s", driver_dir, sofile);

file_char_t filename[1024];
#ifdef WIN32
swprintf(filename, 1022, L"%S/%S", driver_dir, sofile);
#else
snprintf(filename, 1022, "%s/%s", driver_dir, sofile);
#endif
if ((dlhandle = LoadDriverModule(filename)) == NULL) { if ((dlhandle = LoadDriverModule(filename)) == NULL) {
#ifdef WIN32 #ifdef WIN32
jack_error ("Could not open component .dll '%s': %ld", filename, GetLastError());
jack_error ("Could not open component .dll '%S': %ld", filename, GetLastError());
#else #else
jack_error ("Could not open component .so '%s': %s", filename, dlerror()); jack_error ("Could not open component .so '%s': %s", filename, dlerror());
#endif #endif
@@ -437,25 +447,30 @@ static void* check_symbol(const char* sofile, const char* symbol, const char* dr
return res; return res;
} }


static jack_driver_desc_t* jack_get_descriptor (JSList* drivers, const char* sofile, const char* symbol, const char* driver_dir)
static jack_driver_desc_t* jack_get_descriptor (JSList* drivers, const file_char_t* sofile, const char* symbol, const file_char_t* driver_dir)
{ {
jack_driver_desc_t* descriptor = NULL; jack_driver_desc_t* descriptor = NULL;
jack_driver_desc_t* other_descriptor; jack_driver_desc_t* other_descriptor;
JackDriverDescFunction so_get_descriptor = NULL; JackDriverDescFunction so_get_descriptor = NULL;
char filename[1024];
file_char_t filename[1024];
JSList* node; JSList* node;
void* dlhandle = NULL; void* dlhandle = NULL;


sprintf(filename, "%s/%s", driver_dir, sofile);
#ifdef WIN32
swprintf(filename, 1022, L"%S/%S", driver_dir, sofile);
#else
snprintf(filename, 1022, "%s/%s", driver_dir, sofile);
#endif
so_get_descriptor = (JackDriverDescFunction)check_symbol(sofile, symbol, driver_dir, &dlhandle); so_get_descriptor = (JackDriverDescFunction)check_symbol(sofile, symbol, driver_dir, &dlhandle);


if (so_get_descriptor == NULL) { if (so_get_descriptor == NULL) {
jack_error("jack_get_descriptor : dll %s is not a driver", sofile);
jack_error("jack_get_descriptor : dll %S is not a driver", sofile);
goto error; goto error;
} }


if ((descriptor = so_get_descriptor ()) == NULL) { if ((descriptor = so_get_descriptor ()) == NULL) {
jack_error("Driver from '%s' returned NULL descriptor", filename);
jack_error("Driver from '%S' returned NULL descriptor", filename);
goto error; goto error;
} }


@@ -463,15 +478,19 @@ static jack_driver_desc_t* jack_get_descriptor (JSList* drivers, const char* sof
for (node = drivers; node; node = jack_slist_next (node)) { for (node = drivers; node; node = jack_slist_next (node)) {
other_descriptor = (jack_driver_desc_t*) node->data; other_descriptor = (jack_driver_desc_t*) node->data;
if (strcmp(descriptor->name, other_descriptor->name) == 0) { if (strcmp(descriptor->name, other_descriptor->name) == 0) {
jack_error("The drivers in '%s' and '%s' both have the name '%s'; using the first",
jack_error("The drivers in '%S' and '%S' both have the name '%S'; using the first",
other_descriptor->file, filename, other_descriptor->name); other_descriptor->file, filename, other_descriptor->name);
/* FIXME: delete the descriptor */ /* FIXME: delete the descriptor */
goto error; goto error;
} }
} }


#ifdef WIN32
wcsncpy(descriptor->file, filename, JACK_PATH_MAX);
#else
strncpy(descriptor->file, filename, JACK_PATH_MAX); strncpy(descriptor->file, filename, JACK_PATH_MAX);

#endif
error: error:
if (dlhandle) { if (dlhandle) {
UnloadDriverModule(dlhandle); UnloadDriverModule(dlhandle);
@@ -484,13 +503,13 @@ error:
JSList * jack_drivers_load(JSList * drivers) JSList * jack_drivers_load(JSList * drivers)
{ {
//char dll_filename[512]; //char dll_filename[512];
WIN32_FIND_DATA filedata;
WIN32_FIND_DATAW filedata;
HANDLE file; HANDLE file;
const char* ptr = NULL;
const wchar_t* ptr = NULL;
JSList* driver_list = NULL; JSList* driver_list = NULL;
jack_driver_desc_t* desc = NULL; jack_driver_desc_t* desc = NULL;


char* driver_dir = locate_driver_dir(file, filedata);
wchar_t* driver_dir = locate_driver_dir(file, filedata);
if (!driver_dir) { if (!driver_dir) {
jack_error("Driver folder not found"); jack_error("Driver folder not found");
goto error; goto error;
@@ -498,17 +517,17 @@ JSList * jack_drivers_load(JSList * drivers)


do { do {
/* check the filename is of the right format */ /* check the filename is of the right format */
if (strncmp ("jack_", filedata.cFileName, 5) != 0) {
if (wcsncmp (L"jack_", filedata.cFileName, 5) != 0) {
continue; continue;
} }


ptr = strrchr (filedata.cFileName, '.');
ptr = wcsrchr (filedata.cFileName, L'.');
if (!ptr) { if (!ptr) {
continue; continue;
} }


ptr++; ptr++;
if (strncmp ("dll", ptr, 3) != 0) {
if (wcsncmp (L"dll", ptr, 3) != 0) {
continue; continue;
} }


@@ -521,13 +540,13 @@ JSList * jack_drivers_load(JSList * drivers)
if (desc) { if (desc) {
driver_list = jack_slist_append (driver_list, desc); driver_list = jack_slist_append (driver_list, desc);
} else { } else {
jack_error ("jack_get_descriptor returns null for \'%s\'", filedata.cFileName);
jack_error ("jack_get_descriptor returns null for \'%S\'", filedata.cFileName);
} }


} while (FindNextFile(file, &filedata));
} while (FindNextFileW(file, &filedata));


if (!driver_list) { if (!driver_list) {
jack_error ("Could not find any drivers in %s!", driver_dir);
jack_error ("Could not find any drivers in %S!", driver_dir);
} }


error: error:
@@ -613,13 +632,13 @@ JSList* jack_drivers_load (JSList * drivers)
JSList* jack_internals_load(JSList * internals) JSList* jack_internals_load(JSList * internals)
{ {
///char dll_filename[512]; ///char dll_filename[512];
WIN32_FIND_DATA filedata;
WIN32_FIND_DATAW filedata;
HANDLE file; HANDLE file;
const char* ptr = NULL;
const wchar_t* ptr = NULL;
JSList* driver_list = NULL; JSList* driver_list = NULL;
jack_driver_desc_t* desc; jack_driver_desc_t* desc;


char* driver_dir = locate_driver_dir(file, filedata);
wchar_t* driver_dir = locate_driver_dir(file, filedata);
if (!driver_dir) { if (!driver_dir) {
jack_error("Driver folder not found"); jack_error("Driver folder not found");
goto error; goto error;
@@ -627,13 +646,13 @@ JSList* jack_internals_load(JSList * internals)


do { do {


ptr = strrchr (filedata.cFileName, '.');
ptr = wcsrchr (filedata.cFileName, L'.');
if (!ptr) { if (!ptr) {
continue; continue;
} }


ptr++; ptr++;
if (strncmp ("dll", ptr, 3) != 0) {
if (wcsncmp (L"dll", ptr, 3) != 0) {
continue; continue;
} }


@@ -649,7 +668,7 @@ JSList* jack_internals_load(JSList * internals)
jack_error ("jack_get_descriptor returns null for \'%s\'", filedata.cFileName); jack_error ("jack_get_descriptor returns null for \'%s\'", filedata.cFileName);
} }


} while (FindNextFile(file, &filedata));
} while (FindNextFileW(file, &filedata));


if (!driver_list) { if (!driver_list) {
jack_error ("Could not find any internals in %s!", driver_dir); jack_error ("Could not find any internals in %s!", driver_dir);
@@ -745,18 +764,26 @@ Jack::JackDriverClientInterface* JackDriverInfo::Open(jack_driver_desc_t* driver
if (fHandle == NULL) { if (fHandle == NULL) {
#ifdef WIN32 #ifdef WIN32
if ((errstr = GetLastError ()) != 0) { if ((errstr = GetLastError ()) != 0) {
jack_error ("Can't load \"%s\": %ld", driver_desc->file, errstr);
jack_error ("Can't load \"%S\": %ld", driver_desc->file, errstr);
#else #else
if ((errstr = dlerror ()) != 0) { if ((errstr = dlerror ()) != 0) {
jack_error ("Can't load \"%s\": %s", driver_desc->file, errstr); jack_error ("Can't load \"%s\": %s", driver_desc->file, errstr);
#endif #endif


} else { } else {
jack_error ("Error loading driver shared object %s", driver_desc->file);
#ifdef WIN32
jack_error ("Error loading driver shared object %S", driver_desc->file);
#else
jack_error ("Error loading driver shared object %s", driver_desc->file);
#endif
} }
return NULL; return NULL;
} }



//jack_error (" --------------------------------- Successfully opened driver \"%S\"\n", driver_desc->file);

fInitialize = (driverInitialize)GetDriverProc(fHandle, "driver_initialize"); fInitialize = (driverInitialize)GetDriverProc(fHandle, "driver_initialize");


#ifdef WIN32 #ifdef WIN32
@@ -764,7 +791,12 @@ Jack::JackDriverClientInterface* JackDriverInfo::Open(jack_driver_desc_t* driver
#else #else
if ((fInitialize == NULL) && (errstr = dlerror ()) != 0) { if ((fInitialize == NULL) && (errstr = dlerror ()) != 0) {
#endif #endif

#ifdef WIN32
jack_error("No initialize function in shared object %S\n", driver_desc->file);
#else
jack_error("No initialize function in shared object %s\n", driver_desc->file); jack_error("No initialize function in shared object %s\n", driver_desc->file);
#endif
return NULL; return NULL;
} }




+ 2
- 2
common/JackEngine.cpp View File

@@ -34,8 +34,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackChannel.h" #include "JackChannel.h"
#include "JackError.h" #include "JackError.h"


extern const char* JACK_METADATA_HARDWARE;
extern const char* JACK_METADATA_PRETTY_NAME;
extern const char JACK_METADATA_HARDWARE[];
extern const char JACK_METADATA_PRETTY_NAME[];


namespace Jack namespace Jack
{ {


+ 1
- 0
common/JackEngineControl.h View File

@@ -118,6 +118,7 @@ struct SERVER_EXPORT JackEngineControl : public JackShmMem
fMaxUsecs = 0; fMaxUsecs = 0;
ResetRollingUsecs(); ResetRollingUsecs();
strncpy(fServerName, server_name, sizeof(fServerName)); strncpy(fServerName, server_name, sizeof(fServerName));
fServerName[sizeof(fServerName) - 1] = 0;
fCPULoad = 0.f; fCPULoad = 0.f;
fPeriod = 0; fPeriod = 0;
fComputation = 0; fComputation = 0;


+ 4
- 0
common/JackGraphManager.cpp View File

@@ -24,7 +24,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <algorithm> #include <algorithm>
#ifdef HAVE_TRE_REGEX_H
#include <tre/regex.h>
#else
#include <regex.h> #include <regex.h>
#endif


namespace Jack namespace Jack
{ {


+ 1
- 0
common/JackInternalClient.cpp View File

@@ -77,6 +77,7 @@ int JackInternalClient::Open(const char* server_name, const char* name, jack_uui
} }


strncpy(fServerName, server_name, sizeof(fServerName)); strncpy(fServerName, server_name, sizeof(fServerName));
fServerName[sizeof(fServerName) - 1] = 0;


// Open server/client direct channel // Open server/client direct channel
char name_res[JACK_CLIENT_NAME_SIZE + 1]; char name_res[JACK_CLIENT_NAME_SIZE + 1];


+ 1
- 0
common/JackLibClient.cpp View File

@@ -106,6 +106,7 @@ int JackLibClient::Open(const char* server_name, const char* name, jack_uuid_t u
} }
strncpy(fServerName, server_name, sizeof(fServerName)); strncpy(fServerName, server_name, sizeof(fServerName));
fServerName[sizeof(fServerName) - 1] = 0;


// Open server/client channel // Open server/client channel
char name_res[JACK_CLIENT_NAME_SIZE+1]; char name_res[JACK_CLIENT_NAME_SIZE+1];


+ 36
- 17
common/JackMetadata.cpp View File

@@ -28,16 +28,16 @@




#define JACK_METADATA_PREFIX "http://jackaudio.org/metadata/" #define JACK_METADATA_PREFIX "http://jackaudio.org/metadata/"
LIB_EXPORT const char* JACK_METADATA_CONNECTED = JACK_METADATA_PREFIX "connected";
LIB_EXPORT const char* JACK_METADATA_EVENT_TYPES = JACK_METADATA_PREFIX "event-types";
LIB_EXPORT const char* JACK_METADATA_HARDWARE = JACK_METADATA_PREFIX "hardware";
LIB_EXPORT const char* JACK_METADATA_ICON_LARGE = JACK_METADATA_PREFIX "icon-large";
LIB_EXPORT const char* JACK_METADATA_ICON_NAME = JACK_METADATA_PREFIX "icon-name";
LIB_EXPORT const char* JACK_METADATA_ICON_SMALL = JACK_METADATA_PREFIX "icon-small";
LIB_EXPORT const char* JACK_METADATA_ORDER = JACK_METADATA_PREFIX "order";
LIB_EXPORT const char* JACK_METADATA_PORT_GROUP = JACK_METADATA_PREFIX "port-group";
LIB_EXPORT const char* JACK_METADATA_PRETTY_NAME = JACK_METADATA_PREFIX "pretty-name";
LIB_EXPORT const char* JACK_METADATA_SIGNAL_TYPE = JACK_METADATA_PREFIX "signal-type";
LIB_EXPORT extern const char JACK_METADATA_CONNECTED[] = JACK_METADATA_PREFIX "connected";
LIB_EXPORT extern const char JACK_METADATA_EVENT_TYPES[] = JACK_METADATA_PREFIX "event-types";
LIB_EXPORT extern const char JACK_METADATA_HARDWARE[] = JACK_METADATA_PREFIX "hardware";
LIB_EXPORT extern const char JACK_METADATA_ICON_LARGE[] = JACK_METADATA_PREFIX "icon-large";
LIB_EXPORT extern const char JACK_METADATA_ICON_NAME[] = JACK_METADATA_PREFIX "icon-name";
LIB_EXPORT extern const char JACK_METADATA_ICON_SMALL[] = JACK_METADATA_PREFIX "icon-small";
LIB_EXPORT extern const char JACK_METADATA_ORDER[] = JACK_METADATA_PREFIX "order";
LIB_EXPORT extern const char JACK_METADATA_PORT_GROUP[] = JACK_METADATA_PREFIX "port-group";
LIB_EXPORT extern const char JACK_METADATA_PRETTY_NAME[] = JACK_METADATA_PREFIX "pretty-name";
LIB_EXPORT extern const char JACK_METADATA_SIGNAL_TYPE[] = JACK_METADATA_PREFIX "signal-type";
#undef JACK_METADATA_PREFIX #undef JACK_METADATA_PREFIX


namespace Jack namespace Jack
@@ -68,20 +68,20 @@ JackMetadata::~JackMetadata()
if (fIsEngine) if (fIsEngine)
{ {
// cleanup after libdb, nasty! // cleanup after libdb, nasty!
snprintf (dbpath, sizeof(dbpath), "%s/jack_db/metadata.db", jack_server_dir);
snprintf (dbpath, sizeof(dbpath), "%s/jack_db/metadata.db", fDBFilesDir);
remove (dbpath); remove (dbpath);


snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.001", jack_server_dir);
snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.001", fDBFilesDir);
remove (dbpath); remove (dbpath);


snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.002", jack_server_dir);
snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.002", fDBFilesDir);
remove (dbpath); remove (dbpath);


snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.003", jack_server_dir);
snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.003", fDBFilesDir);
remove (dbpath); remove (dbpath);


// remove our custom dir // remove our custom dir
snprintf (dbpath, sizeof(dbpath), "%s/jack_db", jack_server_dir);
snprintf (dbpath, sizeof(dbpath), "%s/jack_db", fDBFilesDir);
rmdir (dbpath); rmdir (dbpath);
} }
#endif #endif
@@ -94,6 +94,16 @@ int JackMetadata::PropertyInit()
int ret; int ret;
char dbpath[PATH_MAX + 1]; char dbpath[PATH_MAX + 1];


#ifdef WIN32
ret = GetTempPathA (PATH_MAX, fDBFilesDir);
if ((ret > PATH_MAX) || (ret == 0)) {
jack_error ("cannot get path for temp files");
return -1;
}
#else
strncpy (fDBFilesDir, jack_server_dir, PATH_MAX);
#endif

/* idempotent */ /* idempotent */


if (fDBenv) { if (fDBenv) {
@@ -105,24 +115,33 @@ int JackMetadata::PropertyInit()
return -1; return -1;
} }


snprintf (dbpath, sizeof(dbpath), "%s/jack_db", jack_server_dir);
snprintf (dbpath, sizeof(dbpath), "%s/jack_db", fDBFilesDir);
#ifdef WIN32
mkdir (dbpath);
#else
mkdir (dbpath, S_IRWXU | S_IRWXG); mkdir (dbpath, S_IRWXU | S_IRWXG);
#endif


if ((ret = fDBenv->open (fDBenv, dbpath, DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL | DB_THREAD, 0)) != 0) { if ((ret = fDBenv->open (fDBenv, dbpath, DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL | DB_THREAD, 0)) != 0) {
jack_error ("cannot open DB environment: %s", db_strerror (ret)); jack_error ("cannot open DB environment: %s", db_strerror (ret));
fDBenv = NULL;
return -1; return -1;
} }


if ((ret = db_create (&fDB, fDBenv, 0)) != 0) { if ((ret = db_create (&fDB, fDBenv, 0)) != 0) {
jack_error ("Cannot initialize metadata DB (%s)", db_strerror (ret)); jack_error ("Cannot initialize metadata DB (%s)", db_strerror (ret));
fDBenv->close (fDBenv, 0);
fDBenv = NULL;
return -1; return -1;
} }


snprintf (dbpath, sizeof(dbpath), "%s/jack_db/metadata.db", jack_server_dir);
snprintf (dbpath, sizeof(dbpath), "%s/jack_db/metadata.db", fDBFilesDir);
if ((ret = fDB->open (fDB, NULL, dbpath, NULL, DB_HASH, DB_CREATE | DB_THREAD, 0666)) != 0) { if ((ret = fDB->open (fDB, NULL, dbpath, NULL, DB_HASH, DB_CREATE | DB_THREAD, 0666)) != 0) {
jack_error ("Cannot open metadata DB at %s: %s", dbpath, db_strerror (ret)); jack_error ("Cannot open metadata DB at %s: %s", dbpath, db_strerror (ret));
fDB->close (fDB, 0); fDB->close (fDB, 0);
fDB = NULL; fDB = NULL;
fDBenv->close (fDBenv, 0);
fDBenv = NULL;
return -1; return -1;
} }




+ 8
- 0
common/JackMetadata.h View File

@@ -24,7 +24,14 @@
#include "config.h" #include "config.h"
#endif #endif


// libdb does not work in 32bit mixed mode
#ifdef BUILD_WITH_32_64
#undef HAVE_DB
#define HAVE_DB 0
#endif

#include <stdint.h> #include <stdint.h>
#include <limits.h>


#if HAVE_DB #if HAVE_DB
#include <db.h> #include <db.h>
@@ -82,6 +89,7 @@ class JackMetadata
DB* fDB; DB* fDB;
DB_ENV* fDBenv; DB_ENV* fDBenv;
const bool fIsEngine; const bool fIsEngine;
char fDBFilesDir[PATH_MAX + 1];
#endif #endif


int PropertyInit(); int PropertyInit();


+ 1
- 1
common/JackPortType.cpp View File

@@ -30,7 +30,7 @@ static const JackPortType* gPortTypes[] =
&gMidiPortType, &gMidiPortType,
}; };


jack_port_type_id_t PORT_TYPES_MAX = sizeof(gPortTypes) / sizeof(gPortTypes[0]);
const jack_port_type_id_t PORT_TYPES_MAX = sizeof(gPortTypes) / sizeof(gPortTypes[0]);


jack_port_type_id_t GetPortTypeId(const char* port_type) jack_port_type_id_t GetPortTypeId(const char* port_type)
{ {


+ 1
- 1
common/JackPortType.h View File

@@ -27,7 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
namespace Jack namespace Jack
{ {


extern jack_port_type_id_t PORT_TYPES_MAX;
extern const jack_port_type_id_t PORT_TYPES_MAX;


struct JackPortType struct JackPortType
{ {


+ 0
- 1
common/JackShmMem.cpp View File

@@ -26,7 +26,6 @@ namespace Jack


static unsigned int fSegmentNum = 0; static unsigned int fSegmentNum = 0;
static jack_shm_info_t gInfo; static jack_shm_info_t gInfo;
size_t JackMem::gSize = 0;


JackShmMem::JackShmMem() JackShmMem::JackShmMem()
{ {


+ 0
- 39
common/JackShmMem.h View File

@@ -39,45 +39,6 @@ void UnlockMemoryImp(void* ptr, size_t size);
void LockAllMemory(); void LockAllMemory();
void UnlockAllMemory(); void UnlockAllMemory();


class JackMem
{
private:

size_t fSize;
static size_t gSize;

protected:

JackMem(): fSize(gSize)
{}
~JackMem()
{}

public:

void* operator new(size_t size)
{
gSize = size;
return calloc(1, size);
}

void operator delete(void* ptr, size_t size)
{
free(ptr);
}

void LockMemory()
{
LockMemoryImp(this, fSize);
}

void UnlockMemory()
{
UnlockMemoryImp(this, fSize);
}

};

/*! /*!
\brief \brief




+ 6
- 5
common/JackTools.cpp View File

@@ -28,6 +28,7 @@


#ifdef WIN32 #ifdef WIN32
#include <process.h> #include <process.h>
#include "JackPlatformPlug_os.h"
#endif #endif




@@ -87,12 +88,12 @@ namespace Jack {
/* returns the name of the per-user subdirectory of jack_tmpdir */ /* returns the name of the per-user subdirectory of jack_tmpdir */
#ifdef WIN32 #ifdef WIN32


char* JackTools::UserDir()
const char* JackTools::UserDir()
{ {
return ""; return "";
} }


char* JackTools::ServerDir(const char* server_name, char* server_dir)
const char* JackTools::ServerDir(const char* server_name, char* server_dir)
{ {
return ""; return "";
} }
@@ -105,7 +106,7 @@ namespace Jack {
} }


#else #else
char* JackTools::UserDir()
const char* JackTools::UserDir()
{ {
static char user_dir[JACK_PATH_MAX + 1] = ""; static char user_dir[JACK_PATH_MAX + 1] = "";


@@ -122,7 +123,7 @@ namespace Jack {
} }


/* returns the name of the per-server subdirectory of jack_user_dir() */ /* returns the name of the per-server subdirectory of jack_user_dir() */
char* JackTools::ServerDir(const char* server_name, char* server_dir)
const char* JackTools::ServerDir(const char* server_name, char* server_dir)
{ {
/* format the path name into the suppled server_dir char array, /* format the path name into the suppled server_dir char array,
* assuming that server_dir is at least as large as JACK_PATH_MAX + 1 */ * assuming that server_dir is at least as large as JACK_PATH_MAX + 1 */
@@ -263,7 +264,7 @@ void PrintLoadError(const char* so_name)
lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT, lpDisplayBuf = (LPVOID)LocalAlloc(LMEM_ZEROINIT,
(lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)so_name) + 40) * sizeof(TCHAR)); (lstrlen((LPCTSTR)lpMsgBuf) + lstrlen((LPCTSTR)so_name) + 40) * sizeof(TCHAR));
_snprintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR), _snprintf((LPTSTR)lpDisplayBuf, LocalSize(lpDisplayBuf) / sizeof(TCHAR),
TEXT("error loading %s err = %s"), so_name, lpMsgBuf);
TEXT("error loading %s err = %s"), so_name, (LPCTSTR)lpMsgBuf);


jack_error((LPCTSTR)lpDisplayBuf); jack_error((LPCTSTR)lpDisplayBuf);




+ 2
- 2
common/JackTools.h View File

@@ -60,8 +60,8 @@ namespace Jack
static void KillServer(); static void KillServer();


static int MkDir(const char* path); static int MkDir(const char* path);
static char* UserDir();
static char* ServerDir(const char* server_name, char* server_dir);
static const char* UserDir();
static const char* ServerDir(const char* server_name, char* server_dir);
static const char* DefaultServerName(); static const char* DefaultServerName();
static void CleanupFiles(const char* server_name); static void CleanupFiles(const char* server_name);
static int GetTmpdir(); static int GetTmpdir();


+ 4
- 0
common/driver_interface.h View File

@@ -133,7 +133,11 @@ typedef struct {
char name[JACK_DRIVER_NAME_MAX + 1]; /**< The driver's canonical name */ char name[JACK_DRIVER_NAME_MAX + 1]; /**< The driver's canonical name */
jack_driver_type_t type; /**< The driver's type */ jack_driver_type_t type; /**< The driver's type */
char desc[JACK_DRIVER_PARAM_DESC + 1]; /**< The driver's extended description */ char desc[JACK_DRIVER_PARAM_DESC + 1]; /**< The driver's extended description */
#ifdef WIN32
wchar_t file[JACK_PATH_MAX + 1]; /**< The filename of the driver's shared object file */
#else
char file[JACK_PATH_MAX + 1]; /**< The filename of the driver's shared object file */ char file[JACK_PATH_MAX + 1]; /**< The filename of the driver's shared object file */
#endif
uint32_t nparams; /**< The number of parameters the driver has */ uint32_t nparams; /**< The number of parameters the driver has */
jack_driver_param_desc_t * params; /**< An array of parameter descriptors */ jack_driver_param_desc_t * params; /**< An array of parameter descriptors */
} }


+ 11
- 11
common/jack/metadata.h View File

@@ -229,7 +229,7 @@ int jack_set_property_change_callback (jack_client_t* client,
* A value that identifies what the hardware port is connected to (an external * A value that identifies what the hardware port is connected to (an external
* device of some kind). Possible values might be "E-Piano" or "Master 2 Track". * device of some kind). Possible values might be "E-Piano" or "Master 2 Track".
*/ */
extern const char* JACK_METADATA_CONNECTED;
extern const char JACK_METADATA_CONNECTED[];


/** /**
* The supported event types of an event port. * The supported event types of an event port.
@@ -242,21 +242,21 @@ extern const char* JACK_METADATA_CONNECTED;
* status byte will gracefully ignore OSC messages if the user makes an * status byte will gracefully ignore OSC messages if the user makes an
* inappropriate connection. * inappropriate connection.
*/ */
extern const char* JACK_METADATA_EVENT_TYPES;
extern const char JACK_METADATA_EVENT_TYPES[];


/** /**
* A value that should be shown when attempting to identify the * A value that should be shown when attempting to identify the
* specific hardware outputs of a client. Typical values might be * specific hardware outputs of a client. Typical values might be
* "ADAT1", "S/PDIF L" or "MADI 43". * "ADAT1", "S/PDIF L" or "MADI 43".
*/ */
extern const char* JACK_METADATA_HARDWARE;
extern const char JACK_METADATA_HARDWARE[];


/** /**
* A value with a MIME type of "image/png;base64" that is an encoding of an * A value with a MIME type of "image/png;base64" that is an encoding of an
* NxN (with 32 < N <= 128) image to be used when displaying a visual * NxN (with 32 < N <= 128) image to be used when displaying a visual
* representation of that client or port. * representation of that client or port.
*/ */
extern const char* JACK_METADATA_ICON_LARGE;
extern const char JACK_METADATA_ICON_LARGE[];


/** /**
* The name of the icon for the subject (typically client). * The name of the icon for the subject (typically client).
@@ -265,16 +265,16 @@ extern const char* JACK_METADATA_ICON_LARGE;
* themes. Icons should be searched for according to the freedesktop Icon * themes. Icons should be searched for according to the freedesktop Icon
* *
* Theme Specification: * Theme Specification:
* http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
* https://specifications.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
*/ */
extern const char* JACK_METADATA_ICON_NAME;
extern const char JACK_METADATA_ICON_NAME[];


/** /**
* A value with a MIME type of "image/png;base64" that is an encoding of an * A value with a MIME type of "image/png;base64" that is an encoding of an
* NxN (with N <=32) image to be used when displaying a visual representation * NxN (with N <=32) image to be used when displaying a visual representation
* of that client or port. * of that client or port.
*/ */
extern const char* JACK_METADATA_ICON_SMALL;
extern const char JACK_METADATA_ICON_SMALL[];


/** /**
* Order for a port. * Order for a port.
@@ -287,18 +287,18 @@ extern const char* JACK_METADATA_ICON_SMALL;
* *
* It is encouraged to use http://www.w3.org/2001/XMLSchema#int as the type. * It is encouraged to use http://www.w3.org/2001/XMLSchema#int as the type.
*/ */
extern const char* JACK_METADATA_ORDER;
extern const char JACK_METADATA_ORDER[];


/** /**
* A value that should be shown to the user when displaying a port to the user, * A value that should be shown to the user when displaying a port to the user,
* unless the user has explicitly overridden that a request to show the port * unless the user has explicitly overridden that a request to show the port
* name, or some other key value. * name, or some other key value.
*/ */
extern const char* JACK_METADATA_PRETTY_NAME;
extern const char JACK_METADATA_PRETTY_NAME[];


/** /**
*/ */
extern const char* JACK_METADATA_PORT_GROUP;
extern const char JACK_METADATA_PORT_GROUP[];


/** /**
* The type of an audio signal. * The type of an audio signal.
@@ -309,7 +309,7 @@ extern const char* JACK_METADATA_PORT_GROUP;
* their output directly to speakers. In particular, CV ports are not * their output directly to speakers. In particular, CV ports are not
* necessarily periodic at all and may have very high DC. * necessarily periodic at all and may have very high DC.
*/ */
extern const char* JACK_METADATA_SIGNAL_TYPE;
extern const char JACK_METADATA_SIGNAL_TYPE[];


/** /**
* @} * @}


+ 37
- 5
common/jack/session.h View File

@@ -30,6 +30,10 @@ extern "C" {


/** /**
* @defgroup SessionClientFunctions Session API for clients. * @defgroup SessionClientFunctions Session API for clients.
*
* @deprecated Use of JACK-Session is currently deprecated and unsupported.
* JACK developers recommend the use of NSM instead.
* See https://github.com/linuxaudio/new-session-manager
* @{ * @{
*/ */


@@ -156,6 +160,10 @@ typedef struct _jack_session_event jack_session_event_t;
* *
* The client must promptly call jack_session_reply for this event. * The client must promptly call jack_session_reply for this event.
* *
* @deprecated Use of JACK-Session is currently deprecated and unsupported.
* JACK developers recommend the use of NSM instead.
* See https://github.com/linuxaudio/new-session-manager
*
* @param event The event structure. * @param event The event structure.
* @param arg Pointer to a client supplied structure. * @param arg Pointer to a client supplied structure.
*/ */
@@ -170,11 +178,15 @@ typedef void (*JackSessionCallback)(jack_session_event_t *event,
* error. if you have a multiclient application its more sensible to create * error. if you have a multiclient application its more sensible to create
* a jack_client with only a session callback set. * a jack_client with only a session callback set.
* *
* @deprecated Use of JACK-Session is currently deprecated and unsupported.
* JACK developers recommend the use of NSM instead.
* See https://github.com/linuxaudio/new-session-manager
*
* @return 0 on success, otherwise a non-zero error code * @return 0 on success, otherwise a non-zero error code
*/ */
int jack_set_session_callback (jack_client_t *client, int jack_set_session_callback (jack_client_t *client,
JackSessionCallback session_callback, JackSessionCallback session_callback,
void *arg) JACK_WEAK_EXPORT;
void *arg) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;


/** /**
* Reply to a session event. * Reply to a session event.
@@ -183,18 +195,26 @@ int jack_set_session_callback (jack_client_t *client,
* different thread. For example, it is possible to push the event through a * different thread. For example, it is possible to push the event through a
* queue and execute the save code from the GUI thread. * queue and execute the save code from the GUI thread.
* *
* @deprecated Use of JACK-Session is currently deprecated and unsupported.
* JACK developers recommend the use of NSM instead.
* See https://github.com/linuxaudio/new-session-manager
*
* @return 0 on success, otherwise a non-zero error code * @return 0 on success, otherwise a non-zero error code
*/ */
int jack_session_reply (jack_client_t *client, int jack_session_reply (jack_client_t *client,
jack_session_event_t *event) JACK_WEAK_EXPORT;
jack_session_event_t *event) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;




/** /**
* Free memory used by a jack_session_event_t. * Free memory used by a jack_session_event_t.
* *
* This also frees the memory used by the command_line pointer, if its non NULL. * This also frees the memory used by the command_line pointer, if its non NULL.
*
* @deprecated Use of JACK-Session is currently deprecated and unsupported.
* JACK developers recommend the use of NSM instead.
* See https://github.com/linuxaudio/new-session-manager
*/ */
void jack_session_event_free (jack_session_event_t *event) JACK_WEAK_EXPORT;
void jack_session_event_free (jack_session_event_t *event) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;




/** /**
@@ -238,8 +258,12 @@ jack_session_command_t *jack_session_notify (


/** /**
* Free the memory allocated by a session command. * Free the memory allocated by a session command.
*
* @deprecated Use of JACK-Session is currently deprecated and unsupported.
* JACK developers recommend the use of NSM instead.
* See https://github.com/linuxaudio/new-session-manager
*/ */
void jack_session_commands_free (jack_session_command_t *cmds) JACK_WEAK_EXPORT;
void jack_session_commands_free (jack_session_command_t *cmds) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;


/** /**
* Reserve a client name and associate it with a UUID. * Reserve a client name and associate it with a UUID.
@@ -258,11 +282,19 @@ jack_reserve_client_name (jack_client_t *client,
/** /**
* Find out whether a client has set up a session callback. * Find out whether a client has set up a session callback.
* *
* @deprecated Use of JACK-Session is currently deprecated and unsupported.
* JACK developers recommend the use of NSM instead.
* See https://github.com/linuxaudio/new-session-manager
*
* @return 0 when the client has no session callback, 1 when it has one. * @return 0 when the client has no session callback, 1 when it has one.
* -1 on error. * -1 on error.
*/ */
int int
jack_client_has_session_callback (jack_client_t *client, const char *client_name) JACK_WEAK_EXPORT;
jack_client_has_session_callback (jack_client_t *client, const char *client_name) JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT;

/**
* @}
*/


#ifdef __cplusplus #ifdef __cplusplus
} }


+ 8
- 8
common/jack/systemdeps.h View File

@@ -70,14 +70,14 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#define __inline__ inline #define __inline__ inline
#if (!defined(int8_t) && !defined(_STDINT_H)) #if (!defined(int8_t) && !defined(_STDINT_H))
#define __int8_t_defined #define __int8_t_defined
typedef char int8_t;
typedef unsigned char uint8_t;
typedef short int16_t;
typedef unsigned short uint16_t;
typedef long int32_t;
typedef unsigned long uint32_t;
typedef LONGLONG int64_t;
typedef ULONGLONG uint64_t;
typedef INT8 int8_t;
typedef UINT8 uint8_t;
typedef INT16 int16_t;
typedef UINT16 uint16_t;
typedef INT32 int32_t;
typedef UINT32 uint32_t;
typedef INT64 int64_t;
typedef UINT64 uint64_t;
#endif #endif
#elif __MINGW32__ /* MINGW */ #elif __MINGW32__ /* MINGW */
#include <stdint.h> #include <stdint.h>


+ 38
- 37
common/shm.c View File

@@ -79,17 +79,17 @@ static int GetPID()
} }


#ifdef USE_POSIX_SHM #ifdef USE_POSIX_SHM
static jack_shmtype_t jack_shmtype = shm_POSIX;
static const jack_shmtype_t jack_shmtype = shm_POSIX;
#elif WIN32 #elif WIN32
static jack_shmtype_t jack_shmtype = shm_WIN32;
static const jack_shmtype_t jack_shmtype = shm_WIN32;
#else #else
static jack_shmtype_t jack_shmtype = shm_SYSV;
static const jack_shmtype_t jack_shmtype = shm_SYSV;
#endif #endif


/* interface-dependent forward declarations */ /* interface-dependent forward declarations */
static int jack_access_registry (jack_shm_info_t *ri); static int jack_access_registry (jack_shm_info_t *ri);
static int jack_create_registry (jack_shm_info_t *ri); static int jack_create_registry (jack_shm_info_t *ri);
static void jack_remove_shm (jack_shm_id_t *id);
static void jack_remove_shm (const jack_shm_id_t id);


/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* common interface-independent section * common interface-independent section
@@ -103,12 +103,19 @@ static void jack_remove_shm (jack_shm_id_t *id);
*/ */


/* per-process global data for the SHM interfaces */ /* per-process global data for the SHM interfaces */
#ifdef USE_POSIX_SHM
static const jack_shm_id_t registry_id = "/jack-shm-registry";
#elif WIN32
static const jack_shm_id_t registry_id = "jack-shm-registry";
#else
static jack_shm_id_t registry_id; /* SHM id for the registry */ static jack_shm_id_t registry_id; /* SHM id for the registry */
#endif


#ifdef WIN32 #ifdef WIN32
static jack_shm_info_t registry_info = {/* SHM info for the registry */ static jack_shm_info_t registry_info = {/* SHM info for the registry */
JACK_SHM_NULL_INDEX, JACK_SHM_NULL_INDEX,
NULL
0,
{ NULL }
}; };
#else #else
static jack_shm_info_t registry_info = { /* SHM info for the registry */ static jack_shm_info_t registry_info = { /* SHM info for the registry */
@@ -120,7 +127,6 @@ static jack_shm_info_t registry_info = { /* SHM info for the registry */
/* pointers to registry header and array */ /* pointers to registry header and array */
static jack_shm_header_t *jack_shm_header = NULL; static jack_shm_header_t *jack_shm_header = NULL;
static jack_shm_registry_t *jack_shm_registry = NULL; static jack_shm_registry_t *jack_shm_registry = NULL;
static char jack_shm_server_prefix[JACK_SERVER_NAME_SIZE+1] = "";


/* jack_shm_lock_registry() serializes updates to the shared memory /* jack_shm_lock_registry() serializes updates to the shared memory
* segment JACK uses to keep track of the SHM segments allocated to * segment JACK uses to keep track of the SHM segments allocated to
@@ -315,16 +321,16 @@ jack_shm_validate_registry ()
* name, in the interest of portability we use colons instead. * name, in the interest of portability we use colons instead.
*/ */
static void static void
jack_set_server_prefix (const char *server_name)
jack_get_server_prefix (const char* const server_name, char* const prefix, const size_t size)
{ {
#ifdef WIN32 #ifdef WIN32
char buffer[UNLEN+1]={0}; char buffer[UNLEN+1]={0};
DWORD len = UNLEN+1; DWORD len = UNLEN+1;
GetUserName(buffer, &len); GetUserName(buffer, &len);
snprintf (jack_shm_server_prefix, sizeof (jack_shm_server_prefix),
snprintf (prefix, size,
"jack-%s:%s:", buffer, server_name); "jack-%s:%s:", buffer, server_name);
#else #else
snprintf (jack_shm_server_prefix, sizeof (jack_shm_server_prefix),
snprintf (prefix, size,
"jack-%d:%s:", GetUID(), server_name); "jack-%d:%s:", GetUID(), server_name);
#endif #endif
} }
@@ -349,7 +355,7 @@ jack_server_initialize_shm (int new_registry)
rc = jack_access_registry (&registry_info); rc = jack_access_registry (&registry_info);


if (new_registry) { if (new_registry) {
jack_remove_shm (&registry_id);
jack_remove_shm (registry_id);
rc = ENOENT; rc = ENOENT;
} }


@@ -365,7 +371,7 @@ jack_server_initialize_shm (int new_registry)
/* Apparently, this registry was created by an older /* Apparently, this registry was created by an older
* JACK version. Delete it so we can try again. */ * JACK version. Delete it so we can try again. */
jack_release_shm (&registry_info); jack_release_shm (&registry_info);
jack_remove_shm (&registry_id);
jack_remove_shm (registry_id);
if ((rc = jack_create_registry (&registry_info)) != 0) { if ((rc = jack_create_registry (&registry_info)) != 0) {
jack_error ("incompatible shm registry (%s)", jack_error ("incompatible shm registry (%s)",
strerror (errno)); strerror (errno));
@@ -394,11 +400,12 @@ int
jack_initialize_shm (const char *server_name) jack_initialize_shm (const char *server_name)
{ {
int rc; int rc;
char server_prefix[JACK_SERVER_NAME_SIZE+1];


if (jack_shm_header) if (jack_shm_header)
return 0; /* already initialized */ return 0; /* already initialized */


jack_set_server_prefix (server_name);
jack_get_server_prefix (server_name, server_prefix, sizeof(server_prefix));


if (jack_shm_lock_registry () < 0) { if (jack_shm_lock_registry () < 0) {
jack_error ("jack_shm_lock_registry fails..."); jack_error ("jack_shm_lock_registry fails...");
@@ -429,7 +436,7 @@ jack_destroy_shm (jack_shm_info_t* si)
if (si->index == JACK_SHM_NULL_INDEX) if (si->index == JACK_SHM_NULL_INDEX)
return; /* segment not allocated */ return; /* segment not allocated */


jack_remove_shm (&jack_shm_registry[si->index].id);
jack_remove_shm (jack_shm_registry[si->index].id);
jack_release_shm_info (si->index); jack_release_shm_info (si->index);
} }


@@ -490,8 +497,9 @@ int
jack_register_server (const char *server_name, int new_registry) jack_register_server (const char *server_name, int new_registry)
{ {
int i, res = 0; int i, res = 0;
char server_prefix[JACK_SERVER_NAME_SIZE+1];


jack_set_server_prefix (server_name);
jack_get_server_prefix (server_name, server_prefix, sizeof(server_prefix));


if (jack_server_initialize_shm (new_registry)) if (jack_server_initialize_shm (new_registry))
return ENOMEM; return ENOMEM;
@@ -507,8 +515,8 @@ jack_register_server (const char *server_name, int new_registry)
for (i = 0; i < MAX_SERVERS; i++) { for (i = 0; i < MAX_SERVERS; i++) {


if (strncmp (jack_shm_header->server[i].name, if (strncmp (jack_shm_header->server[i].name,
jack_shm_server_prefix,
JACK_SERVER_NAME_SIZE) != 0)
server_prefix,
sizeof(server_prefix)) != 0)
continue; /* no match */ continue; /* no match */


if (jack_shm_header->server[i].pid == GetPID()){ if (jack_shm_header->server[i].pid == GetPID()){
@@ -548,8 +556,8 @@ jack_register_server (const char *server_name, int new_registry)
/* claim it */ /* claim it */
jack_shm_header->server[i].pid = GetPID(); jack_shm_header->server[i].pid = GetPID();
strncpy (jack_shm_header->server[i].name, strncpy (jack_shm_header->server[i].name,
jack_shm_server_prefix,
JACK_SERVER_NAME_SIZE);
server_prefix,
sizeof(server_prefix));


unlock: unlock:
jack_shm_unlock_registry (); jack_shm_unlock_registry ();
@@ -630,7 +638,7 @@ jack_cleanup_shm ()
int index = copy.index; int index = copy.index;


if ((index >= 0) && (index < MAX_SHM_ID)) { if ((index >= 0) && (index < MAX_SHM_ID)) {
jack_remove_shm (&jack_shm_registry[index].id);
jack_remove_shm (jack_shm_registry[index].id);
jack_release_shm_entry (index); jack_release_shm_entry (index);
} }
r->size = 0; r->size = 0;
@@ -715,8 +723,6 @@ jack_access_registry (jack_shm_info_t *ri)
/* registry must be locked */ /* registry must be locked */
int shm_fd; int shm_fd;


strncpy (registry_id, "/jack-shm-registry", sizeof (registry_id));

/* try to open an existing segment */ /* try to open an existing segment */
if ((shm_fd = shm_open (registry_id, O_RDWR, 0666)) < 0) { if ((shm_fd = shm_open (registry_id, O_RDWR, 0666)) < 0) {
int rc = errno; int rc = errno;
@@ -759,8 +765,6 @@ jack_create_registry (jack_shm_info_t *ri)
/* registry must be locked */ /* registry must be locked */
int shm_fd; int shm_fd;


strncpy (registry_id, "/jack-shm-registry", sizeof (registry_id));

if ((shm_fd = shm_open (registry_id, O_RDWR|O_CREAT, 0666)) < 0) { if ((shm_fd = shm_open (registry_id, O_RDWR|O_CREAT, 0666)) < 0) {
int rc = errno; int rc = errno;
jack_error ("Cannot create shm registry segment (%s)", jack_error ("Cannot create shm registry segment (%s)",
@@ -779,7 +783,7 @@ jack_create_registry (jack_shm_info_t *ri)
if (ftruncate (shm_fd, JACK_SHM_REGISTRY_SIZE) < 0) { if (ftruncate (shm_fd, JACK_SHM_REGISTRY_SIZE) < 0) {
int rc = errno; int rc = errno;
jack_error ("Cannot set registry size (%s)", strerror (errno)); jack_error ("Cannot set registry size (%s)", strerror (errno));
jack_remove_shm (&registry_id);
jack_remove_shm (registry_id);
close (shm_fd); close (shm_fd);
return rc; return rc;
} }
@@ -789,7 +793,7 @@ jack_create_registry (jack_shm_info_t *ri)
MAP_SHARED, shm_fd, 0)) == MAP_FAILED) { MAP_SHARED, shm_fd, 0)) == MAP_FAILED) {
jack_error ("Cannot mmap shm registry segment (%s)", jack_error ("Cannot mmap shm registry segment (%s)",
strerror (errno)); strerror (errno));
jack_remove_shm (&registry_id);
jack_remove_shm (registry_id);
close (shm_fd); close (shm_fd);
return EINVAL; return EINVAL;
} }
@@ -806,10 +810,10 @@ jack_create_registry (jack_shm_info_t *ri)
} }


static void static void
jack_remove_shm (jack_shm_id_t *id)
jack_remove_shm (const jack_shm_id_t id)
{ {
/* registry may or may not be locked */ /* registry may or may not be locked */
shm_unlink ((char *) id);
shm_unlink (id);
} }


void void
@@ -955,7 +959,6 @@ jack_access_registry (jack_shm_info_t *ri)
{ {
/* registry must be locked */ /* registry must be locked */
HANDLE shm_fd; HANDLE shm_fd;
strncpy (registry_id, "jack-shm-registry", sizeof (registry_id));


/* try to open an existing segment */ /* try to open an existing segment */


@@ -969,7 +972,7 @@ jack_access_registry (jack_shm_info_t *ri)


if ((ri->ptr.attached_at = MapViewOfFile (shm_fd, FILE_MAP_ALL_ACCESS, 0, 0, JACK_SHM_REGISTRY_SIZE)) == NULL) { if ((ri->ptr.attached_at = MapViewOfFile (shm_fd, FILE_MAP_ALL_ACCESS, 0, 0, JACK_SHM_REGISTRY_SIZE)) == NULL) {
jack_error ("Cannot mmap shm registry segment (%ld)", GetLastError()); jack_error ("Cannot mmap shm registry segment (%ld)", GetLastError());
jack_remove_shm (&registry_id);
jack_remove_shm (registry_id);
CloseHandle (shm_fd); CloseHandle (shm_fd);
return EINVAL; return EINVAL;
} }
@@ -989,8 +992,6 @@ jack_create_registry (jack_shm_info_t *ri)
/* registry must be locked */ /* registry must be locked */
HANDLE shm_fd; HANDLE shm_fd;


strncpy (registry_id, "jack-shm-registry", sizeof (registry_id));

if ((shm_fd = CreateFileMapping(INVALID_HANDLE_VALUE, if ((shm_fd = CreateFileMapping(INVALID_HANDLE_VALUE,
0, PAGE_READWRITE, 0, PAGE_READWRITE,
0, JACK_SHM_REGISTRY_SIZE, 0, JACK_SHM_REGISTRY_SIZE,
@@ -1002,7 +1003,7 @@ jack_create_registry (jack_shm_info_t *ri)


if ((ri->ptr.attached_at = MapViewOfFile (shm_fd, FILE_MAP_ALL_ACCESS, 0, 0, JACK_SHM_REGISTRY_SIZE)) == NULL) { if ((ri->ptr.attached_at = MapViewOfFile (shm_fd, FILE_MAP_ALL_ACCESS, 0, 0, JACK_SHM_REGISTRY_SIZE)) == NULL) {
jack_error ("Cannot mmap shm registry segment (%ld)", GetLastError()); jack_error ("Cannot mmap shm registry segment (%ld)", GetLastError());
jack_remove_shm (&registry_id);
jack_remove_shm (registry_id);
CloseHandle (shm_fd); CloseHandle (shm_fd);
return EINVAL; return EINVAL;
} }
@@ -1020,7 +1021,7 @@ jack_create_registry (jack_shm_info_t *ri)
} }


static void static void
jack_remove_shm (jack_shm_id_t *id)
jack_remove_shm (const jack_shm_id_t id)
{ {
/* nothing to do */ /* nothing to do */
} }
@@ -1102,7 +1103,7 @@ jack_attach_shm (jack_shm_info_t* si)


if ((si->ptr.attached_at = MapViewOfFile (shm_fd, FILE_MAP_ALL_ACCESS, 0, 0, registry->size)) == NULL) { if ((si->ptr.attached_at = MapViewOfFile (shm_fd, FILE_MAP_ALL_ACCESS, 0, 0, registry->size)) == NULL) {
jack_error ("Cannot mmap shm segment (%ld)", GetLastError()); jack_error ("Cannot mmap shm segment (%ld)", GetLastError());
jack_remove_shm (&registry_id);
jack_remove_shm (registry_id);
CloseHandle (shm_fd); CloseHandle (shm_fd);
return -1; return -1;
} }
@@ -1125,7 +1126,7 @@ jack_attach_shm_read (jack_shm_info_t* si)


if ((si->ptr.attached_at = MapViewOfFile (shm_fd, FILE_MAP_READ, 0, 0, registry->size)) == NULL) { if ((si->ptr.attached_at = MapViewOfFile (shm_fd, FILE_MAP_READ, 0, 0, registry->size)) == NULL) {
jack_error("Cannot mmap shm segment (%ld)", GetLastError()); jack_error("Cannot mmap shm segment (%ld)", GetLastError());
jack_remove_shm(&registry_id);
jack_remove_shm(registry_id);
CloseHandle(shm_fd); CloseHandle(shm_fd);
return -1; return -1;
} }
@@ -1224,10 +1225,10 @@ jack_create_registry (jack_shm_info_t *ri)
} }


static void static void
jack_remove_shm (jack_shm_id_t *id)
jack_remove_shm (jack_shm_id_t id)
{ {
/* registry may or may not be locked */ /* registry may or may not be locked */
shmctl (*id, IPC_RMID, NULL);
shmctl (id, IPC_RMID, NULL);
} }


void void


+ 52
- 31
common/wscript View File

@@ -10,12 +10,12 @@ def configure(conf):


if conf.env['IS_WINDOWS']: if conf.env['IS_WINDOWS']:
try: try:
conf.check(function_name='regcomp', header_name='regex.h', lib='regex', uselib_store='REGEX', define_name='HAVE_REGEX_H')
conf.check(header_name='regex.h', lib='regex', uselib_store='REGEX', define_name='HAVE_REGEX_H')
except: except:
conf.check(function_name='regcomp', header_name='regex.h', lib='tre', uselib_store='REGEX', define_name='HAVE_REGEX_H')
conf.check(function_name='htons', header_name='winsock2.h', lib='ws2_32', uselib_store='WS2_32', define_name='HAVE_WINSOCK2_H')
conf.check(function_name='timeGetDevCaps', header_name=['windows.h', 'mmsystem.h'], lib='winmm', uselib_store='WINMM', define_name='HAVE_MMSYSTEM_H')
conf.check(function_name='EnumProcesses', header_name=['windows.h', 'psapi.h'], lib='psapi', uselib_store='PSAPI', define_name='HAVE_PSAPI_H')
conf.check(header_name='tre/regex.h', lib='tre', uselib_store='REGEX', define_name='HAVE_TRE_REGEX_H')
conf.check(header_name='winsock2.h', lib='ws2_32', uselib_store='WS2_32', define_name='HAVE_WINSOCK2_H')
conf.check(header_name=['windows.h', 'mmsystem.h'], lib='winmm', uselib_store='WINMM', define_name='HAVE_MMSYSTEM_H')
conf.check(header_name=['windows.h', 'psapi.h'], lib='psapi', uselib_store='PSAPI', define_name='HAVE_PSAPI_H')


def create_jack_process_obj(bld, target, sources, uselib = None, framework = None): def create_jack_process_obj(bld, target, sources, uselib = None, framework = None):
process = bld(features = ['cxx', 'cxxshlib']) process = bld(features = ['cxx', 'cxxshlib'])
@@ -74,7 +74,7 @@ def build(bld):
includes.append('..') includes.append('..')
else: else:
includes.append('../..') includes.append('../..')
uselib = ['PTHREAD', 'CELT', 'OPUS', 'DB']
uselib = ['CELT', 'OPUS', 'DB', 'PTHREAD']


if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:
common_libsources += [ common_libsources += [
@@ -116,8 +116,7 @@ def build(bld):
'../posix/JackPosixThread.cpp', '../posix/JackPosixThread.cpp',
'../posix/JackPosixMutex.cpp', '../posix/JackPosixMutex.cpp',
'../macosx/JackMachThread.mm', '../macosx/JackMachThread.mm',
#'../macosx/JackMachSemaphore.mm',
'../posix/JackPosixSemaphore.cpp',
'../macosx/JackMachSemaphore.mm',
'../posix/JackSocket.cpp', '../posix/JackSocket.cpp',
'../macosx/JackMachTime.c', '../macosx/JackMachTime.c',
] ]
@@ -132,11 +131,16 @@ def build(bld):
'../windows/JackWinTime.c', '../windows/JackWinTime.c',
] ]
includes = ['../windows' ] + includes includes = ['../windows' ] + includes
libsuffix = "64" if (bld.env['DEST_CPU'] == "x86_64" and not bld.variant) else ""
staticbuild = bool('BUILD_STATIC' in bld.env and bld.env['BUILD_STATIC'])
uselib.append('REGEX') uselib.append('REGEX')
uselib.append('WS2_32') uselib.append('WS2_32')
uselib.append('PSAPI') uselib.append('PSAPI')
uselib.append('WINMM') uselib.append('WINMM')


else:
libsuffix = ""

clientlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib']) clientlib = bld(features = ['c', 'cxx', 'cxxshlib', 'cshlib'])
if bld.env['IS_MACOSX']: if bld.env['IS_MACOSX']:
clientlib.framework = ['CoreAudio', 'Accelerate'] clientlib.framework = ['CoreAudio', 'Accelerate']
@@ -144,14 +148,14 @@ def build(bld):
clientlib.use = uselib clientlib.use = uselib
if bld.env['IS_WINDOWS']: if bld.env['IS_WINDOWS']:
clientlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' clientlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
clientlib.install_path = '${BINDIR}'
else:
clientlib.install_path = '${LIBDIR}'
clientlib.env['cxxstlib_PATTERN'] = 'lib%s.a'
clientlib.env['implib_PATTERN'] = 'lib%s.dll.a'
clientlib.install_path = '${LIBDIR}'
if bld.env['AUTOSTART_METHOD'] == 'dbus': if bld.env['AUTOSTART_METHOD'] == 'dbus':
clientlib.use.append('DBUS-1') clientlib.use.append('DBUS-1')
clientlib.includes = includes clientlib.includes = includes
clientlib.name = 'clientlib' clientlib.name = 'clientlib'
clientlib.target = 'jack'
clientlib.target = 'jack'+libsuffix
clientlib.source = [] + common_libsources clientlib.source = [] + common_libsources
clientlib.source += [ clientlib.source += [
'JackLibClient.cpp', 'JackLibClient.cpp',
@@ -185,7 +189,8 @@ def build(bld):
'../windows/JackMMCSS.cpp', '../windows/JackMMCSS.cpp',
] ]


clientlib.vnum = bld.env['JACK_API_VERSION']
if not bld.env['IS_WINDOWS']:
clientlib.vnum = bld.env['JACK_API_VERSION']


if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:
clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') clientlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
@@ -197,6 +202,15 @@ def build(bld):
if bld.env['IS_SUN']: if bld.env['IS_SUN']:
clientlib.env.append_value('LINKFLAGS', '-lnsl -lsocket') clientlib.env.append_value('LINKFLAGS', '-lnsl -lsocket')


if bld.env['IS_WINDOWS']:
# remove switch to shared binaries if possible, as we most likely want static builds on Windows
if staticbuild:
clientlib.env['SHLIB_MARKER'] = ''
# statically link libjack to libstdc++, some client apps like ardour come
# with a different version of libstdc++.dll that takes precedence and results
# in missing symbols during runtime
clientlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import'])

if bld.variant: if bld.variant:
# if there is variant defined, we expect it to be the 32bit client lib one # if there is variant defined, we expect it to be the 32bit client lib one
# we don't want to build other stuff in this variant # we don't want to build other stuff in this variant
@@ -207,14 +221,17 @@ def build(bld):
serverlib.framework = ['CoreAudio', 'CoreFoundation', 'Accelerate'] serverlib.framework = ['CoreAudio', 'CoreFoundation', 'Accelerate']
serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] serverlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
serverlib.includes = includes serverlib.includes = includes
serverlib.name = 'serverlib'
serverlib.target = 'jackserver'
serverlib.name = 'serverlib'
serverlib.target = 'jackserver'+libsuffix
serverlib.use = uselib serverlib.use = uselib
if bld.env['IS_WINDOWS']: if bld.env['IS_WINDOWS']:
serverlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
serverlib.install_path = '${BINDIR}'
else:
serverlib.install_path = '${LIBDIR}'
serverlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
serverlib.env['cxxstlib_PATTERN'] = 'lib%s.a'
serverlib.env['implib_PATTERN'] = 'lib%s.dll.a'
if staticbuild:
serverlib.env['SHLIB_MARKER'] = ''
serverlib.env.append_value('LINKFLAGS', ['-static-libstdc++', '--disable-auto-import'])
serverlib.install_path = '${LIBDIR}'
serverlib.source = [] + common_libsources serverlib.source = [] + common_libsources
serverlib.source += [ serverlib.source += [
'JackAudioDriver.cpp', 'JackAudioDriver.cpp',
@@ -287,7 +304,8 @@ def build(bld):
'../windows/JackNetWinSocket.cpp', '../windows/JackNetWinSocket.cpp',
] ]


serverlib.vnum = bld.env['JACK_API_VERSION']
if not bld.env['IS_WINDOWS']:
serverlib.vnum = bld.env['JACK_API_VERSION']


if bld.env['IS_LINUX']: if bld.env['IS_LINUX']:
serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden') serverlib.env.append_value('CPPFLAGS', '-fvisibility=hidden')
@@ -305,18 +323,19 @@ def build(bld):
netlib.framework = ['CoreAudio'] netlib.framework = ['CoreAudio']
netlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE'] netlib.defines = ['HAVE_CONFIG_H','SERVER_SIDE']
netlib.includes = includes netlib.includes = includes
netlib.name = 'netlib'
netlib.target = 'jacknet'
netlib.name = 'netlib'
netlib.target = 'jacknet'+libsuffix
netlib.use = ['SAMPLERATE', 'CELT', 'OPUS', 'PTHREAD'] netlib.use = ['SAMPLERATE', 'CELT', 'OPUS', 'PTHREAD']
if bld.env['IS_WINDOWS']: if bld.env['IS_WINDOWS']:
netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll' netlib.env['cxxshlib_PATTERN'] = 'lib%s.dll'
netlib.install_path = '${BINDIR}'
netlib.env['cxxstlib_PATTERN'] = 'lib%s.a'
netlib.env['implib_PATTERN'] = 'lib%s.dll.a'
if staticbuild:
netlib.env['SHLIB_MARKER'] = ''
netlib.use += ['WS2_32', 'WINMM'] netlib.use += ['WS2_32', 'WINMM']
elif bld.env['IS_MACOSX']:
netlib.install_path = '${LIBDIR}'
else:
elif not bld.env['IS_MACOSX']:
netlib.use += ['RT'] netlib.use += ['RT']
netlib.install_path = '${LIBDIR}'
netlib.install_path = '${LIBDIR}'
netlib.source = [ netlib.source = [
'JackNetAPI.cpp', 'JackNetAPI.cpp',
'JackNetInterface.cpp', 'JackNetInterface.cpp',
@@ -344,7 +363,8 @@ def build(bld):
if bld.env['IS_WINDOWS']: if bld.env['IS_WINDOWS']:
netlib.source += ['../windows/JackNetWinSocket.cpp','../windows/JackWinThread.cpp', '../windows/JackMMCSS.cpp', '../windows/JackWinTime.c'] netlib.source += ['../windows/JackNetWinSocket.cpp','../windows/JackWinThread.cpp', '../windows/JackMMCSS.cpp', '../windows/JackWinTime.c']


netlib.vnum = bld.env['JACK_API_VERSION']
if not bld.env['IS_WINDOWS']:
netlib.vnum = bld.env['JACK_API_VERSION']


create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib) create_jack_process_obj(bld, 'netmanager', 'JackNetManager.cpp', serverlib)


@@ -388,12 +408,12 @@ def build(bld):
if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']: if bld.env['BUILD_ADAPTER'] and bld.env['IS_LINUX'] and bld.env['BUILD_DRIVER_ALSA']:
audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp'] audio_adapter_sources += ['../linux/alsa/JackAlsaAdapter.cpp']
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
process.use = ['ALSA', 'SAMPLERATE']
process.use += ['ALSA', 'SAMPLERATE']


if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']: if bld.env['BUILD_ADAPTER'] and bld.env['IS_SUN']:
audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c'] audio_adapter_sources += ['../solaris/oss/JackOSSAdapter.cpp', 'memops.c']
process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib) process = create_jack_process_obj(bld, 'audioadapter', audio_adapter_sources, serverlib)
process.use = 'SAMPLERATE'
process.use += 'SAMPLERATE'


if bld.env['BUILD_ADAPTER'] and bld.env['IS_WINDOWS']: if bld.env['BUILD_ADAPTER'] and bld.env['IS_WINDOWS']:
audio_adapter_sources += ['../windows/portaudio/JackPortAudioAdapter.cpp', '../windows/portaudio/JackPortAudioDevices.cpp'] audio_adapter_sources += ['../windows/portaudio/JackPortAudioAdapter.cpp', '../windows/portaudio/JackPortAudioDevices.cpp']
@@ -408,7 +428,8 @@ def build(bld):
features = 'subst_pc', features = 'subst_pc',
source = '../jack.pc.in', source = '../jack.pc.in',
target = 'jack.pc', target = 'jack.pc',
install_path = '${LIBDIR}/pkgconfig/',
install_path = '${PKGCONFDIR}',
INCLUDEDIR = os.path.normpath(bld.env['PREFIX'] + '/include'), INCLUDEDIR = os.path.normpath(bld.env['PREFIX'] + '/include'),
CLIENTLIB = clientlib.target,
SERVERLIB = serverlib.target, SERVERLIB = serverlib.target,
) )

+ 1
- 1
doxyfile.in View File

@@ -792,7 +792,7 @@ HTML_HEADER =
# each generated HTML page. If it is left blank doxygen will generate a # each generated HTML page. If it is left blank doxygen will generate a
# standard footer. # standard footer.


HTML_FOOTER = @SRCDIR@/no_date_footer.html
HTML_FOOTER =


# The HTML_STYLESHEET tag can be used to specify a user-defined cascading # The HTML_STYLESHEET tag can be used to specify a user-defined cascading
# style sheet that is used by each HTML page. It can be used to # style sheet that is used by each HTML page. It can be used to


+ 1
- 1
example-clients/connect.c View File

@@ -88,7 +88,7 @@ main (int argc, char *argv[])
while ((c = getopt_long (argc, argv, "s:hvu", long_options, &option_index)) >= 0) { while ((c = getopt_long (argc, argv, "s:hvu", long_options, &option_index)) >= 0) {
switch (c) { switch (c) {
case 's': case 's':
server_name = (char *) malloc (sizeof (char) * strlen(optarg));
server_name = (char *) malloc (sizeof (char) * (strlen(optarg) + 1));
strcpy (server_name, optarg); strcpy (server_name, optarg);
options |= JackServerName; options |= JackServerName;
break; break;


+ 23
- 20
example-clients/jack_control View File

@@ -43,7 +43,7 @@ def python_type_to_jackdbus_type(value, type_char):
if type_char == "b": if type_char == "b":
return bool_convert(value); return bool_convert(value);
elif type_char == "y": elif type_char == "y":
return dbus.Byte(value);
return dbus.Byte(ord(value));
elif type_char == "i": elif type_char == "i":
return dbus.Int32(value) return dbus.Int32(value)
elif type_char == "u": elif type_char == "u":
@@ -154,7 +154,7 @@ def maybe_print_param_constraint(iface, param):
def main(): def main():
if len(sys.argv) == 1 or sys.argv[1] in ["-h", "--help", "help"]: if len(sys.argv) == 1 or sys.argv[1] in ["-h", "--help", "help"]:
print_help() print_help()
sys.exit(0)
return 0


bus = dbus.SessionBus() bus = dbus.SessionBus()


@@ -175,10 +175,10 @@ def main():
print("--- status") print("--- status")
if control_iface.IsStarted(): if control_iface.IsStarted():
print("started") print("started")
sys.exit(0)
return 0
else: else:
print("stopped") print("stopped")
sys.exit(1)
return 1
elif arg == 'start': elif arg == 'start':
print("--- start") print("--- start")
control_iface.StartServer() control_iface.StartServer()
@@ -205,7 +205,7 @@ def main():
elif arg == 'ds': elif arg == 'ds':
if index >= len(sys.argv): if index >= len(sys.argv):
print("driver select command requires driver name argument") print("driver select command requires driver name argument")
sys.exit()
return 1


arg = sys.argv[index] arg = sys.argv[index]
index += 1 index += 1
@@ -218,7 +218,7 @@ def main():
elif arg == 'dpd': elif arg == 'dpd':
if index >= len(sys.argv): if index >= len(sys.argv):
print("get driver parameter long description command requires parameter name argument") print("get driver parameter long description command requires parameter name argument")
sys.exit()
return 1


param = sys.argv[index] param = sys.argv[index]
index += 1 index += 1
@@ -230,7 +230,7 @@ def main():
elif arg == 'dps': elif arg == 'dps':
if index + 1 >= len(sys.argv): if index + 1 >= len(sys.argv):
print("driver parameter set command requires parameter name and value arguments") print("driver parameter set command requires parameter name and value arguments")
sys.exit()
return 1


param = sys.argv[index] param = sys.argv[index]
index += 1 index += 1
@@ -244,7 +244,7 @@ def main():
elif arg == 'dpr': elif arg == 'dpr':
if index >= len(sys.argv): if index >= len(sys.argv):
print("driver parameter reset command requires parameter name argument") print("driver parameter reset command requires parameter name argument")
sys.exit()
return 1


param = sys.argv[index] param = sys.argv[index]
index += 1 index += 1
@@ -257,7 +257,7 @@ def main():
elif arg == 'epd': elif arg == 'epd':
if index >= len(sys.argv): if index >= len(sys.argv):
print("get engine parameter long description command requires parameter name argument") print("get engine parameter long description command requires parameter name argument")
sys.exit()
return 1


param_name = sys.argv[index] param_name = sys.argv[index]
index += 1 index += 1
@@ -270,7 +270,7 @@ def main():
elif arg == 'eps': elif arg == 'eps':
if index + 1 >= len(sys.argv): if index + 1 >= len(sys.argv):
print("engine parameter set command requires parameter name and value arguments") print("engine parameter set command requires parameter name and value arguments")
sys.exit()
return 1


param = sys.argv[index] param = sys.argv[index]
index += 1 index += 1
@@ -284,7 +284,7 @@ def main():
elif arg == 'epr': elif arg == 'epr':
if index >= len(sys.argv): if index >= len(sys.argv):
print("engine parameter reset command requires parameter name") print("engine parameter reset command requires parameter name")
sys.exit()
return 1


param = sys.argv[index] param = sys.argv[index]
index += 1 index += 1
@@ -303,7 +303,7 @@ def main():


if index >= len(sys.argv): if index >= len(sys.argv):
print("internal parameters command requires internal name argument") print("internal parameters command requires internal name argument")
sys.exit()
return 1


internal_name = sys.argv[index] internal_name = sys.argv[index]
index += 1 index += 1
@@ -312,7 +312,7 @@ def main():
elif arg == 'ipd': elif arg == 'ipd':
if index + 1 >= len(sys.argv): if index + 1 >= len(sys.argv):
print("get internal parameter long description command requires internal and parameter name arguments") print("get internal parameter long description command requires internal and parameter name arguments")
sys.exit()
return 1


name = sys.argv[index] name = sys.argv[index]
index += 1 index += 1
@@ -325,7 +325,7 @@ def main():
elif arg == 'ips': elif arg == 'ips':
if index + 2 >= len(sys.argv): if index + 2 >= len(sys.argv):
print("internal parameter set command requires internal, parameter name and value arguments") print("internal parameter set command requires internal, parameter name and value arguments")
sys.exit()
return 1


internal_name = sys.argv[index] internal_name = sys.argv[index]
index += 1 index += 1
@@ -341,7 +341,7 @@ def main():
elif arg == 'ipr': elif arg == 'ipr':
if index + 1 >= len(sys.argv): if index + 1 >= len(sys.argv):
print("reset internal parameter command requires internal and parameter name arguments") print("reset internal parameter command requires internal and parameter name arguments")
sys.exit()
return 1


internal_name = sys.argv[index] internal_name = sys.argv[index]
index += 1 index += 1
@@ -356,7 +356,7 @@ def main():


if index >= len(sys.argv): if index >= len(sys.argv):
print("load internal command requires internal name argument") print("load internal command requires internal name argument")
sys.exit()
return 1


name = sys.argv[index] name = sys.argv[index]
index += 1 index += 1
@@ -366,7 +366,7 @@ def main():


if index >= len(sys.argv): if index >= len(sys.argv):
print("unload internal command requires internal name argument") print("unload internal command requires internal name argument")
sys.exit()
return 1


name = sys.argv[index] name = sys.argv[index]
index += 1 index += 1
@@ -376,7 +376,7 @@ def main():


if index >= len(sys.argv): if index >= len(sys.argv):
print("add slave driver command requires driver name argument") print("add slave driver command requires driver name argument")
sys.exit()
return 1


name = sys.argv[index] name = sys.argv[index]
index += 1 index += 1
@@ -386,7 +386,7 @@ def main():


if index >= len(sys.argv): if index >= len(sys.argv):
print("remove slave driver command requires driver name argument") print("remove slave driver command requires driver name argument")
sys.exit()
return 1


name = sys.argv[index] name = sys.argv[index]
index += 1 index += 1
@@ -395,6 +395,9 @@ def main():
print("Unknown command '%s'" % arg) print("Unknown command '%s'" % arg)
except dbus.DBusException as e: except dbus.DBusException as e:
print("DBus exception: %s" % str(e)) print("DBus exception: %s" % str(e))
return 1

return 0


if __name__ == '__main__': if __name__ == '__main__':
main()
sys.exit(main())

+ 32
- 33
example-clients/property.c View File

@@ -17,20 +17,20 @@ static char* subject = NULL;
static void static void
show_usage (void) show_usage (void)
{ {
fprintf (stderr, "\nUsage: jack_property [options] UUID [ key [ value [ type ] ] ]\n");
fprintf (stderr, "Set/Display JACK properties (metadata).\n\n");
fprintf (stderr, "Set options:\n");
fprintf (stderr, " -s, --set Set property \"key\" to \"value\" for \"UUID\" with optional MIME type \"type\"\n");
fprintf (stderr, " -d, --delete Remove/delete property \"key\" for \"UUID\"\n");
fprintf (stderr, " -d, --delete UUID Remove/delete all properties for \"UUID\"\n");
fprintf (stderr, " -D, --delete-all Remove/delete all properties\n");
fprintf (stderr, "\nUsage: jack_property [options] UUID [ key [ value [ type ] ] ]\n");
fprintf (stderr, "Set/Display JACK properties (metadata).\n\n");
fprintf (stderr, "Set options:\n");
fprintf (stderr, " -s, --set Set property \"key\" to \"value\" for \"UUID\" with optional MIME type \"type\"\n");
fprintf (stderr, " -d, --delete Remove/delete property \"key\" for \"UUID\"\n");
fprintf (stderr, " -d, --delete UUID Remove/delete all properties for \"UUID\"\n");
fprintf (stderr, " -D, --delete-all Remove/delete all properties\n");
fprintf (stderr, " --client Interpret UUID as a client name, not a UUID\n"); fprintf (stderr, " --client Interpret UUID as a client name, not a UUID\n");
fprintf (stderr, " --port \tInterpret UUID as a port name, not a UUID\n"); fprintf (stderr, " --port \tInterpret UUID as a port name, not a UUID\n");
fprintf (stderr, "\nDisplay options:\n");
fprintf (stderr, " -l Show all properties\n");
fprintf (stderr, " -l, --list UUID \tShow value all properties of UUID\n");
fprintf (stderr, " -l, --list UUID key Show value for key of UUID\n");
fprintf (stderr, "\nFor more information see http://jackaudio.org/\n");
fprintf (stderr, "\nDisplay options:\n");
fprintf (stderr, " -l Show all properties\n");
fprintf (stderr, " -l, --list UUID \tShow value for all properties of UUID\n");
fprintf (stderr, " -l, --list UUID key Show value for key of UUID\n");
fprintf (stderr, "\nFor more information see https://jackaudio.org/\n");
} }


static int static int
@@ -82,7 +82,7 @@ get_subject (jack_client_t* client, char* argv[], int* optind)
int main (int argc, char* argv[]) int main (int argc, char* argv[])
{ {
jack_client_t* client = NULL; jack_client_t* client = NULL;
jack_options_t options = JackNoStartServer;
jack_options_t options = JackNoStartServer;
char* key = NULL; char* key = NULL;
char* value = NULL; char* value = NULL;
char* type = NULL; char* type = NULL;
@@ -90,32 +90,32 @@ int main (int argc, char* argv[])
int delete = 0; int delete = 0;
int delete_all = 0; int delete_all = 0;
int c; int c;
int option_index;
extern int optind;
struct option long_options[] = {
{ "set", 0, 0, 's' },
{ "delete", 0, 0, 'd' },
{ "delete-all", 0, 0, 'D' },
{ "list", 0, 0, 'l' },
{ "client", 0, 0, 'c' },
{ "port", 0, 0, 'p' },
{ 0, 0, 0, 0 }
};
int option_index;
extern int optind;
struct option long_options[] = {
{ "set", 0, 0, 's' },
{ "delete", 0, 0, 'd' },
{ "delete-all", 0, 0, 'D' },
{ "list", 0, 0, 'l' },
{ "client", 0, 0, 'c' },
{ "port", 0, 0, 'p' },
{ 0, 0, 0, 0 }
};


if (argc < 2) { if (argc < 2) {
show_usage (); show_usage ();
exit (1); exit (1);
} }


while ((c = getopt_long (argc, argv, "sdDlaApc", long_options, &option_index)) >= 0) {
switch (c) {
case 's':
while ((c = getopt_long (argc, argv, "sdDlaApc", long_options, &option_index)) >= 0) {
switch (c) {
case 's':
if (argc < 5) { if (argc < 5) {
show_usage (); show_usage ();
exit (1); exit (1);
} }
set = 1;
break;
set = 1;
break;
case 'd': case 'd':
if (argc < 3) { if (argc < 3) {
show_usage (); show_usage ();
@@ -222,7 +222,7 @@ int main (int argc, char* argv[])
} }


if (jack_set_property (client, uuid, key, value, type)) { if (jack_set_property (client, uuid, key, value, type)) {
fprintf (stderr, "cannot set value for key %s of %s\n", value, subject);
fprintf (stderr, "cannot set value for key %s of %s\n", key, subject);
exit (1); exit (1);
} }


@@ -258,7 +258,7 @@ int main (int argc, char* argv[])
/* list all properties for a given UUID */ /* list all properties for a given UUID */


jack_description_t description; jack_description_t description;
size_t cnt, n;
int cnt, n;


if (get_subject (client, argv, &optind)) { if (get_subject (client, argv, &optind)) {
return -1; return -1;
@@ -289,9 +289,8 @@ int main (int argc, char* argv[])
/* list all properties */ /* list all properties */


jack_description_t* description; jack_description_t* description;
int cnt;
int cnt, n;
size_t p; size_t p;
int n;
char buf[JACK_UUID_STRING_SIZE]; char buf[JACK_UUID_STRING_SIZE];


if ((cnt = jack_get_all_properties (&description)) < 0) { if ((cnt = jack_get_all_properties (&description)) < 0) {


+ 15
- 3
example-clients/wait.c View File

@@ -17,6 +17,7 @@ show_usage(void)
fprintf(stderr, "Check for jack existence, or wait, until it either quits, or gets started\n"); fprintf(stderr, "Check for jack existence, or wait, until it either quits, or gets started\n");
fprintf(stderr, "options:\n"); fprintf(stderr, "options:\n");
fprintf(stderr, " -s, --server <name> Connect to the jack server named <name>\n"); fprintf(stderr, " -s, --server <name> Connect to the jack server named <name>\n");
fprintf(stderr, " -n, --name <name> Set client name to <name>\n");
fprintf(stderr, " -w, --wait Wait for server to become available\n"); fprintf(stderr, " -w, --wait Wait for server to become available\n");
fprintf(stderr, " -q, --quit Wait until server is quit\n"); fprintf(stderr, " -q, --quit Wait until server is quit\n");
fprintf(stderr, " -c, --check Check whether server is running\n"); fprintf(stderr, " -c, --check Check whether server is running\n");
@@ -34,6 +35,7 @@ main(int argc, char *argv[])
int c; int c;
int option_index; int option_index;
char *server_name = NULL; char *server_name = NULL;
char *client_name = NULL;
int wait_for_start = 0; int wait_for_start = 0;
int wait_for_quit = 0; int wait_for_quit = 0;
int just_check = 0; int just_check = 0;
@@ -44,6 +46,7 @@ main(int argc, char *argv[])
struct option long_options[] = { struct option long_options[] = {
{ "server", 1, 0, 's' }, { "server", 1, 0, 's' },
{ "wait", 0, 0, 'w' }, { "wait", 0, 0, 'w' },
{ "name", 1, 0, 'n'},
{ "quit", 0, 0, 'q' }, { "quit", 0, 0, 'q' },
{ "check", 0, 0, 'c' }, { "check", 0, 0, 'c' },
{ "timeout", 1, 0, 't' }, { "timeout", 1, 0, 't' },
@@ -58,13 +61,17 @@ main(int argc, char *argv[])
my_name ++; my_name ++;
} }


while ((c = getopt_long (argc, argv, "s:wqct:hv", long_options, &option_index)) >= 0) {
while ((c = getopt_long (argc, argv, "s:n:wqct:hv", long_options, &option_index)) >= 0) {
switch (c) { switch (c) {
case 's': case 's':
server_name = (char *) malloc (sizeof (char) * strlen(optarg));
server_name = (char *) malloc (sizeof (char) * (strlen(optarg) + 1));
strcpy (server_name, optarg); strcpy (server_name, optarg);
options |= JackServerName; options |= JackServerName;
break; break;
case 'n':
client_name = (char *) malloc (sizeof (char) * (strlen(optarg) + 1));
strcpy (client_name, optarg);
break;
case 'w': case 'w':
wait_for_start = 1; wait_for_start = 1;
break; break;
@@ -93,7 +100,12 @@ main(int argc, char *argv[])
start_timestamp = time(NULL); start_timestamp = time(NULL);


while (1) { while (1) {
client = jack_client_open ("wait", options, &status, server_name);
if (client_name) {
client = jack_client_open (client_name, options, &status, server_name);
}
else {
client = jack_client_open ("wait", options, &status, server_name);
}
/* check for some real error and bail out */ /* check for some real error and bail out */
if ((client == NULL) && !(status & JackServerFailed)) { if ((client == NULL) && !(status & JackServerFailed)) {
fprintf (stderr, "jack_client_open() failed, " fprintf (stderr, "jack_client_open() failed, "


+ 1
- 1
jack.pc.in View File

@@ -7,5 +7,5 @@ server_libs=-L@LIBDIR@ -l@SERVERLIB@
Name: jack Name: jack
Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server Description: the Jack Audio Connection Kit: a low-latency synchronous callback-based media server
Version: @JACK_VERSION@ Version: @JACK_VERSION@
Libs: -L@LIBDIR@ -ljack
Libs: -L@LIBDIR@ -l@CLIENTLIB@
Cflags: -I@INCLUDEDIR@ Cflags: -I@INCLUDEDIR@

+ 8
- 8
linux/alsa/JackAlsaAdapter.h View File

@@ -35,8 +35,8 @@ namespace Jack


inline void* aligned_calloc ( size_t nmemb, size_t size ) { return ( void* ) calloc ( nmemb, size ); } inline void* aligned_calloc ( size_t nmemb, size_t size ) { return ( void* ) calloc ( nmemb, size ); }


#define max(x,y) (((x)>(y)) ? (x) : (y))
#define min(x,y) (((x)<(y)) ? (x) : (y))
#define jack_max(x,y) (((x)>(y)) ? (x) : (y))
#define jack_min(x,y) (((x)<(y)) ? (x) : (y))


#define check_error(err) if (err) { jack_error("%s:%d, alsa error %d : %s", __FILE__, __LINE__, err, snd_strerror(err)); return err; } #define check_error(err) if (err) { jack_error("%s:%d, alsa error %d : %s", __FILE__, __LINE__, err, snd_strerror(err)); return err; }
#define check_error_msg(err,msg) if (err) { jack_error("%s:%d, %s : %s(%d)", __FILE__, __LINE__, msg, snd_strerror(err), err); return err; } #define check_error_msg(err,msg) if (err) { jack_error("%s:%d, %s : %s(%d)", __FILE__, __LINE__, msg, snd_strerror(err), err); return err; }
@@ -259,9 +259,9 @@ namespace Jack
} }


//set floating point buffers needed by the dsp code //set floating point buffers needed by the dsp code
fSoftInputs = max ( fSoftInputs, fCardInputs );
fSoftInputs = jack_max ( fSoftInputs, fCardInputs );
assert ( fSoftInputs < 256 ); assert ( fSoftInputs < 256 );
fSoftOutputs = max ( fSoftOutputs, fCardOutputs );
fSoftOutputs = jack_max ( fSoftOutputs, fCardOutputs );
assert ( fSoftOutputs < 256 ); assert ( fSoftOutputs < 256 );


for ( unsigned int i = 0; i < fSoftInputs; i++ ) for ( unsigned int i = 0; i < fSoftInputs; i++ )
@@ -447,7 +447,7 @@ namespace Jack
for ( unsigned int c = 0; c < fCardOutputs; c++ ) for ( unsigned int c = 0; c < fCardOutputs; c++ )
{ {
jack_default_audio_sample_t x = fOutputSoftChannels[c][f]; jack_default_audio_sample_t x = fOutputSoftChannels[c][f];
buffer16b[c + f * fCardOutputs] = short(max(min (x, jack_default_audio_sample_t(1.0)), jack_default_audio_sample_t(-1.0)) * jack_default_audio_sample_t(SHRT_MAX));
buffer16b[c + f * fCardOutputs] = short(jack_max(jack_min (x, jack_default_audio_sample_t(1.0)), jack_default_audio_sample_t(-1.0)) * jack_default_audio_sample_t(SHRT_MAX));
} }
} }
} }
@@ -459,7 +459,7 @@ namespace Jack
for ( unsigned int c = 0; c < fCardOutputs; c++ ) for ( unsigned int c = 0; c < fCardOutputs; c++ )
{ {
jack_default_audio_sample_t x = fOutputSoftChannels[c][f]; jack_default_audio_sample_t x = fOutputSoftChannels[c][f];
buffer32b[c + f * fCardOutputs] = int32_t(max(min(x, jack_default_audio_sample_t(1.0)), jack_default_audio_sample_t(-1.0)) * jack_default_audio_sample_t(INT_MAX));
buffer32b[c + f * fCardOutputs] = int32_t(jack_max(jack_min(x, jack_default_audio_sample_t(1.0)), jack_default_audio_sample_t(-1.0)) * jack_default_audio_sample_t(INT_MAX));
} }
} }
} }
@@ -481,7 +481,7 @@ namespace Jack
for ( f = 0; f < fBuffering; f++ ) for ( f = 0; f < fBuffering; f++ )
{ {
jack_default_audio_sample_t x = fOutputSoftChannels[c][f]; jack_default_audio_sample_t x = fOutputSoftChannels[c][f];
chan16b[f] = short(max(min (x, jack_default_audio_sample_t(1.0)), jack_default_audio_sample_t(-1.0)) * jack_default_audio_sample_t(SHRT_MAX));
chan16b[f] = short(jack_max(jack_min (x, jack_default_audio_sample_t(1.0)), jack_default_audio_sample_t(-1.0)) * jack_default_audio_sample_t(SHRT_MAX));
} }
} }
} }
@@ -493,7 +493,7 @@ namespace Jack
for ( f = 0; f < fBuffering; f++ ) for ( f = 0; f < fBuffering; f++ )
{ {
jack_default_audio_sample_t x = fOutputSoftChannels[c][f]; jack_default_audio_sample_t x = fOutputSoftChannels[c][f];
chan32b[f] = int32_t(max(min(x, jack_default_audio_sample_t(1.0)), jack_default_audio_sample_t(-1.0)) * jack_default_audio_sample_t(INT_MAX));
chan32b[f] = int32_t(jack_max(jack_min(x, jack_default_audio_sample_t(1.0)), jack_default_audio_sample_t(-1.0)) * jack_default_audio_sample_t(INT_MAX));
} }
} }
} }


+ 8
- 6
linux/alsa/alsa_driver.c View File

@@ -755,8 +755,8 @@ alsa_driver_set_parameters (alsa_driver_t *driver,
if (c_period_size != driver->frames_per_cycle) { if (c_period_size != driver->frames_per_cycle) {
jack_error ("alsa_pcm: requested an interrupt every %" jack_error ("alsa_pcm: requested an interrupt every %"
PRIu32 PRIu32
" frames but got %uc frames for capture",
driver->frames_per_cycle, p_period_size);
" frames but got %u frames for capture",
driver->frames_per_cycle, c_period_size);
return -1; return -1;
} }
} }
@@ -1367,12 +1367,14 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float
if (poll_result < 0) { if (poll_result < 0) {


if (errno == EINTR) { if (errno == EINTR) {
jack_info ("poll interrupt");
const char poll_log[] = "ALSA: poll interrupt";
// this happens mostly when run // this happens mostly when run
// under gdb, or when exiting due to a signal // under gdb, or when exiting due to a signal
if (under_gdb) { if (under_gdb) {
jack_info(poll_log);
goto again; goto again;
} }
jack_error(poll_log);
*status = -2; *status = -2;
return 0; return 0;
} }
@@ -1395,9 +1397,9 @@ alsa_driver_wait (alsa_driver_t *driver, int extra_fd, int *status, float
*status = -5; *status = -5;
return 0; return 0;
} }
jack_log ("ALSA: poll time out, polled for %" PRIu64
" usecs, Retrying with a recovery, retry cnt = %d",
poll_ret - poll_enter, retry_cnt);
jack_error ("ALSA: poll time out, polled for %" PRIu64
" usecs, Retrying with a recovery, retry cnt = %d",
poll_ret - poll_enter, retry_cnt);
*status = alsa_driver_xrun_recovery (driver, delayed_usecs); *status = alsa_driver_xrun_recovery (driver, delayed_usecs);
if(*status != 0) { if(*status != 0) {
jack_error ("ALSA: poll time out, recovery failed with status = %d", *status); jack_error ("ALSA: poll time out, recovery failed with status = %d", *status);


+ 6
- 1
macosx/JackMachSemaphore.h View File

@@ -41,13 +41,18 @@ class SERVER_EXPORT JackMachSemaphore : public detail::JackSynchro
semaphore_t fSemaphore; semaphore_t fSemaphore;
mach_port_t fBootPort; mach_port_t fBootPort;


int fSharedMem;
char* fSharedName;

bool recursiveBootstrapRegister(int counter);

protected: protected:


void BuildName(const char* name, const char* server_name, char* res, int size); void BuildName(const char* name, const char* server_name, char* res, int size);


public: public:


JackMachSemaphore():JackSynchro(), fSemaphore(0), fBootPort(0)
JackMachSemaphore():JackSynchro(), fSemaphore(0), fBootPort(0), fSharedMem(0), fSharedName(NULL)
{} {}


bool Signal(); bool Signal();


+ 113
- 23
macosx/JackMachSemaphore.mm View File

@@ -21,7 +21,9 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackConstants.h" #include "JackConstants.h"
#include "JackTools.h" #include "JackTools.h"
#include "JackError.h" #include "JackError.h"
#include <fcntl.h>
#include <stdio.h> #include <stdio.h>
#include <sys/mman.h>


namespace Jack namespace Jack
{ {
@@ -30,7 +32,12 @@ void JackMachSemaphore::BuildName(const char* client_name, const char* server_na
{ {
char ext_client_name[SYNC_MAX_NAME_SIZE + 1]; char ext_client_name[SYNC_MAX_NAME_SIZE + 1];
JackTools::RewriteName(client_name, ext_client_name); JackTools::RewriteName(client_name, ext_client_name);
snprintf(res, size, "jack_mach_sem.%d_%s_%s", JackTools::GetUID(), server_name, ext_client_name);

// make the name as small as possible, as macos has issues with long semaphore names
if (strcmp(server_name, "default") == 0)
server_name = "";

snprintf(res, std::min(size, 32), "js%d.%s%s", JackTools::GetUID(), server_name, ext_client_name);
} }


bool JackMachSemaphore::Signal() bool JackMachSemaphore::Signal()
@@ -102,6 +109,39 @@ bool JackMachSemaphore::TimedWait(long usec)
return (res == KERN_SUCCESS); return (res == KERN_SUCCESS);
} }


bool JackMachSemaphore::recursiveBootstrapRegister(int counter)
{
if (counter == 99)
return false;

kern_return_t res;

if ((res = bootstrap_register(fBootPort, fSharedName, fSemaphore)) != KERN_SUCCESS) {
switch (res) {
case BOOTSTRAP_SUCCESS :
break;

case BOOTSTRAP_NOT_PRIVILEGED :
case BOOTSTRAP_NAME_IN_USE :
case BOOTSTRAP_UNKNOWN_SERVICE :
case BOOTSTRAP_SERVICE_ACTIVE :
// try again with next suffix
snprintf(fSharedName, sizeof(fName), "%s-%d", fName, ++counter);
return recursiveBootstrapRegister(counter);
break;

default :
jack_log("bootstrap_register() err = %i:%s", res, bootstrap_strerror(res));
break;
}

jack_error("Allocate: can't check in mach semaphore name = %s err = %i:%s", fName, res, bootstrap_strerror(res));
return false;
}

return true;
}

// Server side : publish the semaphore in the global namespace // Server side : publish the semaphore in the global namespace
bool JackMachSemaphore::Allocate(const char* name, const char* server_name, int value) bool JackMachSemaphore::Allocate(const char* name, const char* server_name, int value)
{ {
@@ -116,34 +156,39 @@ bool JackMachSemaphore::Allocate(const char* name, const char* server_name, int
} }
} }


if ((res = semaphore_create(task, &fSemaphore, SYNC_POLICY_FIFO, value)) != KERN_SUCCESS) {
jack_error("Allocate: can create semaphore err = %s", mach_error_string(res));
if ((fSharedMem = shm_open(fName, O_CREAT | O_RDWR, 0777)) < 0) {
jack_error("Allocate: can't check in mach shared name = %s err = %s", fName, strerror(errno));
return false; return false;
} }


if ((res = bootstrap_register(fBootPort, fName, fSemaphore)) != KERN_SUCCESS) {
jack_error("Allocate: can't check in mach semaphore name = %s err = %s", fName, mach_error_string(res));

switch (res) {
case BOOTSTRAP_SUCCESS :
/* service not currently registered, "a good thing" (tm) */
break;
case BOOTSTRAP_NOT_PRIVILEGED :
jack_log("bootstrap_register(): bootstrap not privileged");
break;
case BOOTSTRAP_SERVICE_ACTIVE :
jack_log("bootstrap_register(): bootstrap service active");
break;
default :
jack_log("bootstrap_register() err = %s", mach_error_string(res));
break;
struct stat st;
if (fstat(fSharedMem, &st) != -1 && st.st_size == 0) {
if (ftruncate(fSharedMem, SYNC_MAX_NAME_SIZE+1) != 0) {
jack_error("Allocate: can't set shared memory size in mach shared name = %s err = %s", fName, strerror(errno));
return false;
} }
}


char* const sharedName = (char*)mmap(NULL, SYNC_MAX_NAME_SIZE+1, PROT_READ|PROT_WRITE, MAP_SHARED, fSharedMem, 0);

if (sharedName == NULL || sharedName == MAP_FAILED) {
jack_error("Allocate: can't check in mach shared name = %s err = %s", fName, strerror(errno));
close(fSharedMem);
fSharedMem = -1;
shm_unlink(fName);
return false;
}

fSharedName = sharedName;
strcpy(fSharedName, fName);

if ((res = semaphore_create(task, &fSemaphore, SYNC_POLICY_FIFO, value)) != KERN_SUCCESS) {
jack_error("Allocate: can create semaphore err = %i:%s", res, mach_error_string(res));
return false; return false;
} }


jack_log("JackMachSemaphore::Allocate name = %s", fName); jack_log("JackMachSemaphore::Allocate name = %s", fName);
return true;
return recursiveBootstrapRegister(1);
} }


// Client side : get the published semaphore from server // Client side : get the published semaphore from server
@@ -152,6 +197,12 @@ bool JackMachSemaphore::ConnectInput(const char* name, const char* server_name)
BuildName(name, server_name, fName, sizeof(fName)); BuildName(name, server_name, fName, sizeof(fName));
kern_return_t res; kern_return_t res;


// Temporary...
if (fSharedName) {
jack_log("Already connected name = %s", name);
return true;
}

if (fBootPort == 0) { if (fBootPort == 0) {
if ((res = task_get_bootstrap_port(mach_task_self(), &fBootPort)) != KERN_SUCCESS) { if ((res = task_get_bootstrap_port(mach_task_self(), &fBootPort)) != KERN_SUCCESS) {
jack_error("Connect: can't find bootstrap port err = %s", mach_error_string(res)); jack_error("Connect: can't find bootstrap port err = %s", mach_error_string(res));
@@ -159,11 +210,29 @@ bool JackMachSemaphore::ConnectInput(const char* name, const char* server_name)
} }
} }


if ((res = bootstrap_look_up(fBootPort, fName, &fSemaphore)) != KERN_SUCCESS) {
jack_error("Connect: can't find mach semaphore name = %s err = %s", fName, mach_error_string(res));
if ((fSharedMem = shm_open(fName, O_RDWR, 0)) < 0) {
jack_error("Connect: can't connect mach shared name = %s err = %s", fName, strerror(errno));
return false; return false;
} }


char* const sharedName = (char*)mmap(NULL, SYNC_MAX_NAME_SIZE+1, PROT_READ|PROT_WRITE, MAP_SHARED, fSharedMem, 0);

if (sharedName == NULL || sharedName == MAP_FAILED) {
jack_error("Connect: can't connect mach shared name = %s err = %s", fName, strerror(errno));
close(fSharedMem);
fSharedMem = -1;
return false;
}

if ((res = bootstrap_look_up(fBootPort, sharedName, &fSemaphore)) != KERN_SUCCESS) {
jack_error("Connect: can't find mach semaphore name = %s, sname = %s, err = %s", fName, sharedName, bootstrap_strerror(res));
close(fSharedMem);
fSharedMem = -1;
return false;
}

fSharedName = sharedName;

jack_log("JackMachSemaphore::Connect name = %s ", fName); jack_log("JackMachSemaphore::Connect name = %s ", fName);
return true; return true;
} }
@@ -184,7 +253,16 @@ bool JackMachSemaphore::Disconnect()
jack_log("JackMachSemaphore::Disconnect name = %s", fName); jack_log("JackMachSemaphore::Disconnect name = %s", fName);
fSemaphore = 0; fSemaphore = 0;
} }
// Nothing to do

if (!fSharedName) {
return true;
}

munmap(fSharedName, SYNC_MAX_NAME_SIZE+1);
fSharedName = NULL;

close(fSharedMem);
fSharedMem = -1;
return true; return true;
} }


@@ -202,6 +280,18 @@ void JackMachSemaphore::Destroy()
} else { } else {
jack_error("JackMachSemaphore::Destroy semaphore < 0"); jack_error("JackMachSemaphore::Destroy semaphore < 0");
} }

if (!fSharedName) {
return;
}

munmap(fSharedName, SYNC_MAX_NAME_SIZE+1);
fSharedName = NULL;

close(fSharedMem);
fSharedMem = -1;

shm_unlink(fName);
} }


} // end of namespace } // end of namespace


+ 2
- 18
macosx/JackPlatformPlug_os.h View File

@@ -41,13 +41,6 @@ namespace Jack
class JackSocketNotifyChannel; class JackSocketNotifyChannel;


class JackNetUnixSocket; class JackNetUnixSocket;

#ifdef MY_TARGET_OS_IPHONE
class JackClient;
class JackGraphManager;
class JackEngineControl;
class JackSynchro;
#endif
} }


/* __JackPlatformMutex__ */ /* __JackPlatformMutex__ */
@@ -59,21 +52,13 @@ namespace Jack { typedef JackPosixMutex JackMutex; }
namespace Jack { typedef JackMachThread JackThread; } namespace Jack { typedef JackMachThread JackThread; }


/* __JackPlatformSynchro__ client activation */ /* __JackPlatformSynchro__ client activation */
#ifndef MY_TARGET_OS_IPHONE
//#include "JackMachSemaphore.h"
//namespace Jack { typedef JackMachSemaphore JackSynchro; }


#include "JackPosixSemaphore.h"
namespace Jack { typedef JackPosixSemaphore JackSynchro; }

#endif
#include "JackMachSemaphore.h"
namespace Jack { typedef JackMachSemaphore JackSynchro; }


/* __JackPlatformProcessSync__ */ /* __JackPlatformProcessSync__ */
#include "JackPosixProcessSync.h" #include "JackPosixProcessSync.h"
namespace Jack { typedef JackPosixProcessSync JackProcessSync; } namespace Jack { typedef JackPosixProcessSync JackProcessSync; }


#ifndef MY_TARGET_OS_IPHONE
/* __JackPlatformServerChannel__ */ /* __JackPlatformServerChannel__ */
#include "JackSocketServerChannel.h" #include "JackSocketServerChannel.h"
namespace Jack { typedef JackSocketServerChannel JackServerChannel; } namespace Jack { typedef JackSocketServerChannel JackServerChannel; }
@@ -89,7 +74,6 @@ namespace Jack { typedef JackSocketServerNotifyChannel JackServerNotifyChannel;
/* __JackPlatformNotifyChannel__ */ /* __JackPlatformNotifyChannel__ */
#include "JackSocketNotifyChannel.h" #include "JackSocketNotifyChannel.h"
namespace Jack { typedef JackSocketNotifyChannel JackNotifyChannel; } namespace Jack { typedef JackSocketNotifyChannel JackNotifyChannel; }
#endif


/* __JackPlatformNetSocket__ */ /* __JackPlatformNetSocket__ */
#include "JackNetUnixSocket.h" #include "JackNetUnixSocket.h"


+ 0
- 20555
macosx/Jackdmp.xcodeproj/project.pbxproj
File diff suppressed because it is too large
View File


+ 54
- 0
macosx/generate-pkg.sh View File

@@ -0,0 +1,54 @@
#!/bin/bash

set -e

cd $(dirname ${0})

# ---------------------------------------------------------------------------------------------------------------------

installed_prefix="${1}"

if [ -z "${installed_prefix}" ]; then
echo "usage: ${0} <installed_prefix>"
exit 1
fi

# ---------------------------------------------------------------------------------------------------------------------

VERSION=$(cat ../wscript | awk 'sub("VERSION=","")' | tr -d "'")

rm -f jack2-osx-root.pkg
rm -f jack2-osx-${VERSION}.pkg
rm -f package.xml

# ---------------------------------------------------------------------------------------------------------------------

pkgbuild \
--identifier org.jackaudio.jack2 \
--install-location "/usr/local/" \
--root "${installed_prefix}/" \
jack2-osx-root.pkg

# ---------------------------------------------------------------------------------------------------------------------

# https://developer.apple.com/library/content/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html

pushd "${installed_prefix}"
mkdir -p share/jack2
touch share/jack2/jack2-osx-files.txt
find -sL . -type f | awk 'sub("./","/usr/local/")' > share/jack2/jack2-osx-files.txt
popd

sed -e "s|@CURDIR@|${PWD}|" package.xml.in > package.xml
cat package-welcome.txt.in "${installed_prefix}/share/jack2/jack2-osx-files.txt" > package-welcome.txt

productbuild \
--distribution package.xml \
--identifier org.jackaudio.jack2 \
--package-path "${PWD}" \
--version ${VERSION} \
jack2-osx-${VERSION}.pkg

rm jack2-osx-root.pkg package.xml package-welcome.txt

# ---------------------------------------------------------------------------------------------------------------------

+ 0
- 30
macosx/iphone/Info.plist View File

@@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIconFile</key>
<string></string>
<key>CFBundleIdentifier</key>
<string>fr.grame.iGrame.iPhoneFaustNet</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSMainNibFile</key>
<string>MainWindow</string>
</dict>
</plist>

+ 0
- 440
macosx/iphone/MainWindow.xib View File

@@ -1,440 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">528</int>
<string key="IBDocument.SystemVersion">10C540</string>
<string key="IBDocument.InterfaceBuilderVersion">740</string>
<string key="IBDocument.AppKitVersion">1038.25</string>
<string key="IBDocument.HIToolboxVersion">458.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<string key="NS.object.0">62</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="2"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys" id="0">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBProxyObject" id="841351856">
<string key="IBProxiedObjectIdentifier">IBFilesOwner</string>
</object>
<object class="IBProxyObject" id="427554174">
<string key="IBProxiedObjectIdentifier">IBFirstResponder</string>
</object>
<object class="IBUICustomObject" id="664661524"/>
<object class="IBUIWindow" id="380026005">
<reference key="NSNextResponder"/>
<int key="NSvFlags">1316</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUILabel" id="622412730">
<reference key="NSNextResponder" ref="380026005"/>
<int key="NSvFlags">1316</int>
<string key="NSFrame">{{25, 40}, {267, 21}}</string>
<reference key="NSSuperview" ref="380026005"/>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClipsSubviews">YES</bool>
<bool key="IBUIUserInteractionEnabled">NO</bool>
<string key="IBUIText">NetJack : client on JACK server </string>
<object class="NSFont" key="IBUIFont">
<string key="NSName">Helvetica-Bold</string>
<double key="NSSize">17</double>
<int key="NSfFlags">16</int>
</object>
<object class="NSColor" key="IBUITextColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MCAwIDAAA</bytes>
</object>
<nil key="IBUIHighlightedColor"/>
<int key="IBUIBaselineAdjustment">1</int>
<float key="IBUIMinimumFontSize">10</float>
</object>
</object>
<object class="NSPSMatrix" key="NSFrameMatrix"/>
<string key="NSFrameSize">{320, 480}</string>
<reference key="NSSuperview"/>
<object class="NSColor" key="IBUIBackgroundColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
<bool key="IBUIOpaque">NO</bool>
<bool key="IBUIClearsContextBeforeDrawing">NO</bool>
<object class="IBUISimulatedStatusBarMetrics" key="IBUISimulatedStatusBarMetrics"/>
</object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">delegate</string>
<reference key="source" ref="841351856"/>
<reference key="destination" ref="664661524"/>
</object>
<int key="connectionID">4</int>
</object>
<object class="IBConnectionRecord">
<object class="IBCocoaTouchOutletConnection" key="connection">
<string key="label">window</string>
<reference key="source" ref="664661524"/>
<reference key="destination" ref="380026005"/>
</object>
<int key="connectionID">5</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
<reference key="object" ref="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">2</int>
<reference key="object" ref="380026005"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="622412730"/>
</object>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="841351856"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">3</int>
<reference key="object" ref="664661524"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="427554174"/>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="622412730"/>
<reference key="parent" ref="380026005"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>-1.CustomClassName</string>
<string>-2.CustomClassName</string>
<string>10.IBPluginDependency</string>
<string>2.IBAttributePlaceholdersKey</string>
<string>2.IBEditorWindowLastContentRect</string>
<string>2.IBPluginDependency</string>
<string>2.IBUserGuides</string>
<string>3.CustomClassName</string>
<string>3.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UIApplication</string>
<string>UIResponder</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSMutableDictionary">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<string>{{366, 320}, {320, 480}}</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
<object class="NSMutableArray">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBUserGuide">
<reference key="view" ref="380026005"/>
<double key="location">153.5</double>
<int key="affinity">0</int>
</object>
</object>
<string>iPhoneNetAppDelegate</string>
<string>com.apple.InterfaceBuilder.IBCocoaTouchPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="activeLocalization"/>
<object class="NSMutableDictionary" key="localizations">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference key="dict.sortedKeys" ref="0"/>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">11</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">iPhoneNetAppDelegate</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>navigationController</string>
<string>window</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>UINavigationController</string>
<string>UIWindow</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">iPhoneNetAppDelegate.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">iPhoneNetAppDelegate</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSError.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSNetServices.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSPort.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSStream.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Foundation.framework/Headers/NSXMLParser.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINibLoading.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIApplication</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIApplication.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UILabel</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UILabel.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UINavigationController</string>
<string key="superclassName">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="325457853">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UINavigationController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIResponder</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIResponder.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UISearchBar</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UISearchBar.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITextField.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIView</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<reference key="sourceIdentifier" ref="325457853"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UITabBarController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIViewController</string>
<string key="superclassName">UIResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIViewController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">UIWindow</string>
<string key="superclassName">UIView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">UIKit.framework/Headers/UIWindow.h</string>
</object>
</object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="528" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencyDefaults">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS</string>
<integer value="544" key="NS.object.0"/>
</object>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3</string>
<integer value="3000" key="NS.object.0"/>
</object>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">iPhoneNet.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<string key="IBCocoaTouchPluginVersion">3.1</string>
</data>
</archive>

+ 0
- 35
macosx/iphone/audio_thru.mm View File

@@ -1,35 +0,0 @@

#include "JackAudioQueueAdapter.h"

#define CHANNELS 2

static void DSPcompute(int count, float** input, float** output)
{
for (int i = 0; i < CHANNELS; i++) {
memcpy(output[i], input[i], count * sizeof(float));
}
}

int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Jack::JackAudioQueueAdapter audio(2, 2, 512, 44100, DSPcompute);
if (audio.Open() < 0) {
fprintf(stderr, "Cannot open audio\n");
return 1;
}
// Hang around forever...
while(1) CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.25, false);
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
if (audio.Close() < 0) {
fprintf(stderr, "Cannot close audio\n");
}
return retVal;
}

+ 0
- 750
macosx/iphone/freeverb.mm View File

@@ -1,750 +0,0 @@
//-----------------------------------------------------
// name: "freeverb"
// version: "1.0"
// author: "Grame"
// license: "BSD"
// copyright: "(c)GRAME 2006"
//
// Code generated with Faust 0.9.9.5b2 (http://faust.grame.fr)
//-----------------------------------------------------
/* link with */

/* link with */
#include <math.h>
/* link with */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <math.h>
#include <errno.h>
#include <time.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <fcntl.h>
#include <pwd.h>
#include <sys/types.h>
#include <assert.h>
#include <pthread.h>
#include <sys/wait.h>
#include <libgen.h>
#include <jack/net.h>

#include <list>
#include <vector>
#include <iostream>
#include <fstream>
#include <stack>
#include <list>
#include <map>

#include "JackAudioQueueAdapter.h"

using namespace std;

// On Intel set FZ (Flush to Zero) and DAZ (Denormals Are Zero)
// flags to avoid costly denormals
#ifdef __SSE__
#include <xmmintrin.h>
#ifdef __SSE2__
#define AVOIDDENORMALS _mm_setcsr(_mm_getcsr() | 0x8040)
#else
#define AVOIDDENORMALS _mm_setcsr(_mm_getcsr() | 0x8000)
#endif
#else
#define AVOIDDENORMALS
#endif

//#define BENCHMARKMODE

struct Meta : map<const char*, const char*>
{
void declare (const char* key, const char* value) { (*this)[key]=value; }
};


#define max(x,y) (((x)>(y)) ? (x) : (y))
#define min(x,y) (((x)<(y)) ? (x) : (y))

inline int lsr (int x, int n) { return int(((unsigned int)x) >> n); }
inline int int2pow2 (int x) { int r = 0; while ((1<<r)<x) r++; return r; }


/******************************************************************************
*******************************************************************************

VECTOR INTRINSICS

*******************************************************************************
*******************************************************************************/


/******************************************************************************
*******************************************************************************

USER INTERFACE

*******************************************************************************
*******************************************************************************/

class UI
{
bool fStopped;
public:

UI() : fStopped(false) {}
virtual ~UI() {}

// -- active widgets

virtual void addButton(const char* label, float* zone) = 0;
virtual void addToggleButton(const char* label, float* zone) = 0;
virtual void addCheckButton(const char* label, float* zone) = 0;
virtual void addVerticalSlider(const char* label, float* zone, float init, float min, float max, float step) = 0;
virtual void addHorizontalSlider(const char* label, float* zone, float init, float min, float max, float step) = 0;
virtual void addNumEntry(const char* label, float* zone, float init, float min, float max, float step) = 0;

// -- passive widgets

virtual void addNumDisplay(const char* label, float* zone, int precision) = 0;
virtual void addTextDisplay(const char* label, float* zone, char* names[], float min, float max) = 0;
virtual void addHorizontalBargraph(const char* label, float* zone, float min, float max) = 0;
virtual void addVerticalBargraph(const char* label, float* zone, float min, float max) = 0;

// -- frames and labels

virtual void openFrameBox(const char* label) = 0;
virtual void openTabBox(const char* label) = 0;
virtual void openHorizontalBox(const char* label) = 0;
virtual void openVerticalBox(const char* label) = 0;
virtual void closeBox() = 0;

virtual void show() = 0;
virtual void run() = 0;

void stop() { fStopped = true; }
bool stopped() { return fStopped; }

virtual void declare(float* zone, const char* key, const char* value) {}
};

struct param {
float* fZone; float fMin; float fMax;
param(float* z, float a, float b) : fZone(z), fMin(a), fMax(b) {}
};

class CMDUI : public UI
{
int fArgc;
char** fArgv;
stack<string> fPrefix;
map<string, param> fKeyParam;

void addOption(const char* label, float* zone, float min, float max)
{
string fullname = fPrefix.top() + label;
fKeyParam.insert(make_pair(fullname, param(zone, min, max)));
}

void openAnyBox(const char* label)
{
string prefix;

if (label && label[0]) {
prefix = fPrefix.top() + "-" + label;
} else {
prefix = fPrefix.top();
}
fPrefix.push(prefix);
}

public:

CMDUI(int argc, char *argv[]) : UI(), fArgc(argc), fArgv(argv) { fPrefix.push("--"); }
virtual ~CMDUI() {}

virtual void addButton(const char* label, float* zone) {};
virtual void addToggleButton(const char* label, float* zone) {};
virtual void addCheckButton(const char* label, float* zone) {};

virtual void addVerticalSlider(const char* label, float* zone, float init, float min, float max, float step)
{
addOption(label,zone,min,max);
}

virtual void addHorizontalSlider(const char* label, float* zone, float init, float min, float max, float step)
{
addOption(label,zone,min,max);
}

virtual void addNumEntry(const char* label, float* zone, float init, float min, float max, float step)
{
addOption(label,zone,min,max);
}

// -- passive widgets

virtual void addNumDisplay(const char* label, float* zone, int precision) {}
virtual void addTextDisplay(const char* label, float* zone, char* names[], float min, float max) {}
virtual void addHorizontalBargraph(const char* label, float* zone, float min, float max) {}
virtual void addVerticalBargraph(const char* label, float* zone, float min, float max) {}

virtual void openFrameBox(const char* label) { openAnyBox(label); }
virtual void openTabBox(const char* label) { openAnyBox(label); }
virtual void openHorizontalBox(const char* label) { openAnyBox(label); }
virtual void openVerticalBox(const char* label) { openAnyBox(label); }

virtual void closeBox() { fPrefix.pop(); }

virtual void show() {}
virtual void run()
{
char c;
printf("Type 'q' to quit\n");
while ((c = getchar()) != 'q') {
sleep(1);
}
}

void print()
{
map<string, param>::iterator i;
cout << fArgc << "\n";
cout << fArgv[0] << " option list : ";
for (i = fKeyParam.begin(); i != fKeyParam.end(); i++) {
cout << "[ " << i->first << " " << i->second.fMin << ".." << i->second.fMax <<" ] ";
}
}

void process_command()
{
map<string, param>::iterator p;
for (int i = 1; i < fArgc; i++) {
if (fArgv[i][0] == '-') {
p = fKeyParam.find(fArgv[i]);
if (p == fKeyParam.end()) {
cout << fArgv[0] << " : unrecognized option " << fArgv[i] << "\n";
print();
exit(1);
}
char* end;
*(p->second.fZone) = float(strtod(fArgv[i+1], &end));
i++;
}
}
}

void process_init()
{
map<string, param>::iterator p;
for (int i = 1; i < fArgc; i++) {
if (fArgv[i][0] == '-') {
p = fKeyParam.find(fArgv[i]);
if (p == fKeyParam.end()) {
cout << fArgv[0] << " : unrecognized option " << fArgv[i] << "\n";
exit(1);
}
char* end;
*(p->second.fZone) = float(strtod(fArgv[i+1], &end));
i++;
}
}
}
};


//----------------------------------------------------------------
// Signal processor definition
//----------------------------------------------------------------

class dsp {
protected:
int fSamplingFreq;
public:
dsp() {}
virtual ~dsp() {}

virtual int getNumInputs() = 0;
virtual int getNumOutputs() = 0;
virtual void buildUserInterface(UI* interface) = 0;
virtual void init(int samplingRate) = 0;
virtual void compute(int len, float** inputs, float** outputs) = 0;
virtual void conclude() {}
};


//----------------------------------------------------------------------------
// FAUST generated code
//----------------------------------------------------------------------------


class mydsp : public dsp {
private:
float fslider0;
float fRec9[2];
float fslider1;
int IOTA;
float fVec0[2048];
float fRec8[2];
float fRec11[2];
float fVec1[2048];
float fRec10[2];
float fRec13[2];
float fVec2[2048];
float fRec12[2];
float fRec15[2];
float fVec3[2048];
float fRec14[2];
float fRec17[2];
float fVec4[2048];
float fRec16[2];
float fRec19[2];
float fVec5[2048];
float fRec18[2];
float fRec21[2];
float fVec6[2048];
float fRec20[2];
float fRec23[2];
float fVec7[2048];
float fRec22[2];
float fVec8[1024];
float fRec6[2];
float fVec9[512];
float fRec4[2];
float fVec10[512];
float fRec2[2];
float fVec11[256];
float fRec0[2];
float fslider2;
float fRec33[2];
float fVec12[2048];
float fRec32[2];
float fRec35[2];
float fVec13[2048];
float fRec34[2];
float fRec37[2];
float fVec14[2048];
float fRec36[2];
float fRec39[2];
float fVec15[2048];
float fRec38[2];
float fRec41[2];
float fVec16[2048];
float fRec40[2];
float fRec43[2];
float fVec17[2048];
float fRec42[2];
float fRec45[2];
float fVec18[2048];
float fRec44[2];
float fRec47[2];
float fVec19[2048];
float fRec46[2];
float fVec20[1024];
float fRec30[2];
float fVec21[512];
float fRec28[2];
float fVec22[512];
float fRec26[2];
float fVec23[256];
float fRec24[2];
public:
static void metadata(Meta* m) {
m->declare("name", "freeverb");
m->declare("version", "1.0");
m->declare("author", "Grame");
m->declare("license", "BSD");
m->declare("copyright", "(c)GRAME 2006");
}

virtual int getNumInputs() { return 2; }
virtual int getNumOutputs() { return 2; }
static void classInit(int samplingFreq) {
}
virtual void instanceInit(int samplingFreq) {
fSamplingFreq = samplingFreq;
fslider0 = 0.5f;
for (int i=0; i<2; i++) fRec9[i] = 0;
fslider1 = 0.8f;
IOTA = 0;
for (int i=0; i<2048; i++) fVec0[i] = 0;
for (int i=0; i<2; i++) fRec8[i] = 0;
for (int i=0; i<2; i++) fRec11[i] = 0;
for (int i=0; i<2048; i++) fVec1[i] = 0;
for (int i=0; i<2; i++) fRec10[i] = 0;
for (int i=0; i<2; i++) fRec13[i] = 0;
for (int i=0; i<2048; i++) fVec2[i] = 0;
for (int i=0; i<2; i++) fRec12[i] = 0;
for (int i=0; i<2; i++) fRec15[i] = 0;
for (int i=0; i<2048; i++) fVec3[i] = 0;
for (int i=0; i<2; i++) fRec14[i] = 0;
for (int i=0; i<2; i++) fRec17[i] = 0;
for (int i=0; i<2048; i++) fVec4[i] = 0;
for (int i=0; i<2; i++) fRec16[i] = 0;
for (int i=0; i<2; i++) fRec19[i] = 0;
for (int i=0; i<2048; i++) fVec5[i] = 0;
for (int i=0; i<2; i++) fRec18[i] = 0;
for (int i=0; i<2; i++) fRec21[i] = 0;
for (int i=0; i<2048; i++) fVec6[i] = 0;
for (int i=0; i<2; i++) fRec20[i] = 0;
for (int i=0; i<2; i++) fRec23[i] = 0;
for (int i=0; i<2048; i++) fVec7[i] = 0;
for (int i=0; i<2; i++) fRec22[i] = 0;
for (int i=0; i<1024; i++) fVec8[i] = 0;
for (int i=0; i<2; i++) fRec6[i] = 0;
for (int i=0; i<512; i++) fVec9[i] = 0;
for (int i=0; i<2; i++) fRec4[i] = 0;
for (int i=0; i<512; i++) fVec10[i] = 0;
for (int i=0; i<2; i++) fRec2[i] = 0;
for (int i=0; i<256; i++) fVec11[i] = 0;
for (int i=0; i<2; i++) fRec0[i] = 0;
fslider2 = 0.8f;
for (int i=0; i<2; i++) fRec33[i] = 0;
for (int i=0; i<2048; i++) fVec12[i] = 0;
for (int i=0; i<2; i++) fRec32[i] = 0;
for (int i=0; i<2; i++) fRec35[i] = 0;
for (int i=0; i<2048; i++) fVec13[i] = 0;
for (int i=0; i<2; i++) fRec34[i] = 0;
for (int i=0; i<2; i++) fRec37[i] = 0;
for (int i=0; i<2048; i++) fVec14[i] = 0;
for (int i=0; i<2; i++) fRec36[i] = 0;
for (int i=0; i<2; i++) fRec39[i] = 0;
for (int i=0; i<2048; i++) fVec15[i] = 0;
for (int i=0; i<2; i++) fRec38[i] = 0;
for (int i=0; i<2; i++) fRec41[i] = 0;
for (int i=0; i<2048; i++) fVec16[i] = 0;
for (int i=0; i<2; i++) fRec40[i] = 0;
for (int i=0; i<2; i++) fRec43[i] = 0;
for (int i=0; i<2048; i++) fVec17[i] = 0;
for (int i=0; i<2; i++) fRec42[i] = 0;
for (int i=0; i<2; i++) fRec45[i] = 0;
for (int i=0; i<2048; i++) fVec18[i] = 0;
for (int i=0; i<2; i++) fRec44[i] = 0;
for (int i=0; i<2; i++) fRec47[i] = 0;
for (int i=0; i<2048; i++) fVec19[i] = 0;
for (int i=0; i<2; i++) fRec46[i] = 0;
for (int i=0; i<1024; i++) fVec20[i] = 0;
for (int i=0; i<2; i++) fRec30[i] = 0;
for (int i=0; i<512; i++) fVec21[i] = 0;
for (int i=0; i<2; i++) fRec28[i] = 0;
for (int i=0; i<512; i++) fVec22[i] = 0;
for (int i=0; i<2; i++) fRec26[i] = 0;
for (int i=0; i<256; i++) fVec23[i] = 0;
for (int i=0; i<2; i++) fRec24[i] = 0;
}
virtual void init(int samplingFreq) {
classInit(samplingFreq);
instanceInit(samplingFreq);
}
virtual void buildUserInterface(UI* interface) {
interface->openVerticalBox("Freeverb");
interface->addHorizontalSlider("Damp", &fslider0, 0.5f, 0.0f, 1.0f, 2.500000e-02f);
interface->addHorizontalSlider("RoomSize", &fslider1, 0.8f, 0.0f, 1.0f, 2.500000e-02f);
interface->addHorizontalSlider("Wet", &fslider2, 0.8f, 0.0f, 1.0f, 2.500000e-02f);
interface->closeBox();
}
virtual void compute (int count, float** input, float** output) {
float fSlow0 = (0.4f * fslider0);
float fSlow1 = (1 - fSlow0);
float fSlow2 = (0.7f + (0.28f * fslider1));
float fSlow3 = fslider2;
float fSlow4 = (1 - fSlow3);
float* input0 = input[0];
float* input1 = input[1];
float* output0 = output[0];
float* output1 = output[1];
for (int i=0; i<count; i++) {
fRec9[0] = ((fSlow1 * fRec8[1]) + (fSlow0 * fRec9[1]));
float fTemp0 = input1[i];
float fTemp1 = input0[i];
float fTemp2 = (1.500000e-02f * (fTemp1 + fTemp0));
fVec0[IOTA&2047] = (fTemp2 + (fSlow2 * fRec9[0]));
fRec8[0] = fVec0[(IOTA-1617)&2047];
fRec11[0] = ((fSlow1 * fRec10[1]) + (fSlow0 * fRec11[1]));
fVec1[IOTA&2047] = (fTemp2 + (fSlow2 * fRec11[0]));
fRec10[0] = fVec1[(IOTA-1557)&2047];
fRec13[0] = ((fSlow1 * fRec12[1]) + (fSlow0 * fRec13[1]));
fVec2[IOTA&2047] = (fTemp2 + (fSlow2 * fRec13[0]));
fRec12[0] = fVec2[(IOTA-1491)&2047];
fRec15[0] = ((fSlow1 * fRec14[1]) + (fSlow0 * fRec15[1]));
fVec3[IOTA&2047] = (fTemp2 + (fSlow2 * fRec15[0]));
fRec14[0] = fVec3[(IOTA-1422)&2047];
fRec17[0] = ((fSlow1 * fRec16[1]) + (fSlow0 * fRec17[1]));
fVec4[IOTA&2047] = (fTemp2 + (fSlow2 * fRec17[0]));
fRec16[0] = fVec4[(IOTA-1356)&2047];
fRec19[0] = ((fSlow1 * fRec18[1]) + (fSlow0 * fRec19[1]));
fVec5[IOTA&2047] = (fTemp2 + (fSlow2 * fRec19[0]));
fRec18[0] = fVec5[(IOTA-1277)&2047];
fRec21[0] = ((fSlow1 * fRec20[1]) + (fSlow0 * fRec21[1]));
fVec6[IOTA&2047] = (fTemp2 + (fSlow2 * fRec21[0]));
fRec20[0] = fVec6[(IOTA-1188)&2047];
fRec23[0] = ((fSlow1 * fRec22[1]) + (fSlow0 * fRec23[1]));
fVec7[IOTA&2047] = (fTemp2 + (fSlow2 * fRec23[0]));
fRec22[0] = fVec7[(IOTA-1116)&2047];
float fTemp3 = (((((((fRec22[0] + fRec20[0]) + fRec18[0]) + fRec16[0]) + fRec14[0]) + fRec12[0]) + fRec10[0]) + fRec8[0]);
fVec8[IOTA&1023] = (fTemp3 + (0.5f * fRec6[1]));
fRec6[0] = fVec8[(IOTA-556)&1023];
float fRec7 = (0 - (fTemp3 - fRec6[1]));
fVec9[IOTA&511] = (fRec7 + (0.5f * fRec4[1]));
fRec4[0] = fVec9[(IOTA-441)&511];
float fRec5 = (fRec4[1] - fRec7);
fVec10[IOTA&511] = (fRec5 + (0.5f * fRec2[1]));
fRec2[0] = fVec10[(IOTA-341)&511];
float fRec3 = (fRec2[1] - fRec5);
fVec11[IOTA&255] = (fRec3 + (0.5f * fRec0[1]));
fRec0[0] = fVec11[(IOTA-225)&255];
float fRec1 = (fRec0[1] - fRec3);
output0[i] = ((fSlow4 * fTemp1) + (fSlow3 * fRec1));
fRec33[0] = ((fSlow1 * fRec32[1]) + (fSlow0 * fRec33[1]));
fVec12[IOTA&2047] = (fTemp2 + (fSlow2 * fRec33[0]));
fRec32[0] = fVec12[(IOTA-1640)&2047];
fRec35[0] = ((fSlow1 * fRec34[1]) + (fSlow0 * fRec35[1]));
fVec13[IOTA&2047] = (fTemp2 + (fSlow2 * fRec35[0]));
fRec34[0] = fVec13[(IOTA-1580)&2047];
fRec37[0] = ((fSlow1 * fRec36[1]) + (fSlow0 * fRec37[1]));
fVec14[IOTA&2047] = (fTemp2 + (fSlow2 * fRec37[0]));
fRec36[0] = fVec14[(IOTA-1514)&2047];
fRec39[0] = ((fSlow1 * fRec38[1]) + (fSlow0 * fRec39[1]));
fVec15[IOTA&2047] = (fTemp2 + (fSlow2 * fRec39[0]));
fRec38[0] = fVec15[(IOTA-1445)&2047];
fRec41[0] = ((fSlow1 * fRec40[1]) + (fSlow0 * fRec41[1]));
fVec16[IOTA&2047] = (fTemp2 + (fSlow2 * fRec41[0]));
fRec40[0] = fVec16[(IOTA-1379)&2047];
fRec43[0] = ((fSlow1 * fRec42[1]) + (fSlow0 * fRec43[1]));
fVec17[IOTA&2047] = (fTemp2 + (fSlow2 * fRec43[0]));
fRec42[0] = fVec17[(IOTA-1300)&2047];
fRec45[0] = ((fSlow1 * fRec44[1]) + (fSlow0 * fRec45[1]));
fVec18[IOTA&2047] = (fTemp2 + (fSlow2 * fRec45[0]));
fRec44[0] = fVec18[(IOTA-1211)&2047];
fRec47[0] = ((fSlow1 * fRec46[1]) + (fSlow0 * fRec47[1]));
fVec19[IOTA&2047] = (fTemp2 + (fSlow2 * fRec47[0]));
fRec46[0] = fVec19[(IOTA-1139)&2047];
float fTemp4 = (((((((fRec46[0] + fRec44[0]) + fRec42[0]) + fRec40[0]) + fRec38[0]) + fRec36[0]) + fRec34[0]) + fRec32[0]);
fVec20[IOTA&1023] = (fTemp4 + (0.5f * fRec30[1]));
fRec30[0] = fVec20[(IOTA-579)&1023];
float fRec31 = (0 - (fTemp4 - fRec30[1]));
fVec21[IOTA&511] = (fRec31 + (0.5f * fRec28[1]));
fRec28[0] = fVec21[(IOTA-464)&511];
float fRec29 = (fRec28[1] - fRec31);
fVec22[IOTA&511] = (fRec29 + (0.5f * fRec26[1]));
fRec26[0] = fVec22[(IOTA-364)&511];
float fRec27 = (fRec26[1] - fRec29);
fVec23[IOTA&255] = (fRec27 + (0.5f * fRec24[1]));
fRec24[0] = fVec23[(IOTA-248)&255];
float fRec25 = (fRec24[1] - fRec27);
output1[i] = ((fSlow4 * fTemp0) + (fSlow3 * fRec25));
// post processing
fRec24[1] = fRec24[0];
fRec26[1] = fRec26[0];
fRec28[1] = fRec28[0];
fRec30[1] = fRec30[0];
fRec46[1] = fRec46[0];
fRec47[1] = fRec47[0];
fRec44[1] = fRec44[0];
fRec45[1] = fRec45[0];
fRec42[1] = fRec42[0];
fRec43[1] = fRec43[0];
fRec40[1] = fRec40[0];
fRec41[1] = fRec41[0];
fRec38[1] = fRec38[0];
fRec39[1] = fRec39[0];
fRec36[1] = fRec36[0];
fRec37[1] = fRec37[0];
fRec34[1] = fRec34[0];
fRec35[1] = fRec35[0];
fRec32[1] = fRec32[0];
fRec33[1] = fRec33[0];
fRec0[1] = fRec0[0];
fRec2[1] = fRec2[0];
fRec4[1] = fRec4[0];
fRec6[1] = fRec6[0];
fRec22[1] = fRec22[0];
fRec23[1] = fRec23[0];
fRec20[1] = fRec20[0];
fRec21[1] = fRec21[0];
fRec18[1] = fRec18[0];
fRec19[1] = fRec19[0];
fRec16[1] = fRec16[0];
fRec17[1] = fRec17[0];
fRec14[1] = fRec14[0];
fRec15[1] = fRec15[0];
fRec12[1] = fRec12[0];
fRec13[1] = fRec13[0];
fRec10[1] = fRec10[0];
fRec11[1] = fRec11[0];
fRec8[1] = fRec8[0];
IOTA = IOTA+1;
fRec9[1] = fRec9[0];
}
}
};

mydsp DSP;

/******************************************************************************
*******************************************************************************

NETJACK AUDIO INTERFACE

*******************************************************************************
*******************************************************************************/

//----------------------------------------------------------------------------
// number of input and output channels
//----------------------------------------------------------------------------

int gNumInChans;
int gNumOutChans;

//----------------------------------------------------------------------------
// Jack Callbacks
//----------------------------------------------------------------------------

static void net_shutdown(void *)
{
exit(1);
}

#ifdef BENCHMARKMODE
// measuring jack performances
static __inline__ unsigned long long int rdtsc(void)
{
unsigned long long int x;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
return x;
}

#define KSKIP 10
#define KMESURE 1024
int mesure = 0;
unsigned long long int starts[KMESURE];
unsigned long long int stops [KMESURE];

#define STARTMESURE starts[mesure%KMESURE] = rdtsc();
#define STOPMESURE stops[mesure%KMESURE] = rdtsc(); mesure = mesure+1;

void printstats()
{
unsigned long long int low, hi, tot;
low = hi = tot = (stops[KSKIP] - starts[KSKIP]);

if (mesure < KMESURE) {

for (int i = KSKIP+1; i<mesure; i++) {
unsigned long long int m = stops[i] - starts[i];
if (m<low) low = m;
if (m>hi) hi = m;
tot += m;
}
cout << low << ' ' << tot/(mesure-KSKIP) << ' ' << hi << endl;

} else {

for (int i = KSKIP+1; i<KMESURE; i++) {
unsigned long long int m = stops[i] - starts[i];
if (m<low) low = m;
if (m>hi) hi = m;
tot += m;
}
cout << low << ' ' << tot/(KMESURE-KSKIP) << ' ' << hi << endl;

}
}

#else

#define STARTMESURE
#define STOPMESURE

#endif

static int net_process(jack_nframes_t buffer_size,
int audio_input,
float** audio_input_buffer,
int midi_input,
void** midi_input_buffer,
int audio_output,
float** audio_output_buffer,
int midi_output,
void** midi_output_buffer,
void* data)
{
AVOIDDENORMALS;
STARTMESURE
DSP.compute(buffer_size, audio_input_buffer, audio_output_buffer);
STOPMESURE
return 0;
}

/******************************************************************************
*******************************************************************************

MAIN PLAY THREAD

*******************************************************************************
*******************************************************************************/

//-------------------------------------------------------------------------
// MAIN
//-------------------------------------------------------------------------


#define TEST_MASTER "194.5.49.5"

int main(int argc, char *argv[]) {

UI* interface = new CMDUI(argc, argv);
jack_net_slave_t* net;
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

//Jack::JackAudioQueueAdapter audio(2, 2, 1024, 44100, NULL);

gNumInChans = DSP.getNumInputs();
gNumOutChans = DSP.getNumOutputs();

jack_slave_t request = { gNumInChans, gNumOutChans, 0, 0, DEFAULT_MTU, -1, 2 };
jack_master_t result;

printf("Network\n");

//if (audio.Open() < 0) {
// fprintf(stderr, "Cannot open audio\n");
// return 1;
//}

//audio.Start();

// Hang around forever...
//while(1) CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.25, false);

if ((net = jack_net_slave_open(TEST_MASTER, DEFAULT_PORT, "iPhone", &request, &result)) == 0) {
fprintf(stderr, "jack remote server not running ?\n");
return 1;
}

jack_set_net_slave_process_callback(net, net_process, NULL);

// We want to restart (that is "wait for available master" again)
//jack_set_net_shutdown_callback(net, net_shutdown, 0);

DSP.init(result.sample_rate);
DSP.buildUserInterface(interface);

if (jack_net_slave_activate(net) != 0) {
fprintf(stderr, "cannot activate net");
return 1;
}

int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];

// Wait for application end
jack_net_slave_deactivate(net);
jack_net_slave_close(net);

//if (audio.Close() < 0) {
// fprintf(stderr, "Cannot close audio\n");
//}

return retVal;
}

+ 0
- 1298
macosx/iphone/iPhoneNet.xcodeproj/project.pbxproj
File diff suppressed because it is too large
View File


+ 0
- 23
macosx/iphone/iPhoneNetAppDelegate.h View File

@@ -1,23 +0,0 @@
//
// iPhoneNetAppDelegate.h
// iPhoneNet
//
// Created by Stéphane LETZ on 16/02/09.
// Copyright Grame 2009. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface iPhoneNetAppDelegate : NSObject <UIApplicationDelegate> {
// UIWindow *window;
IBOutlet UIWindow *window;
IBOutlet UINavigationController *navigationController;
}

//@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) UINavigationController *navigationController;

@end


+ 0
- 32
macosx/iphone/iPhoneNetAppDelegate.m View File

@@ -1,32 +0,0 @@
//
// iPhoneNetAppDelegate.m
// iPhoneNet
//
// Created by Stéphane LETZ on 16/02/09.
// Copyright Grame 2009. All rights reserved.
//

#import "iPhoneNetAppDelegate.h"

@implementation iPhoneNetAppDelegate

@synthesize window, navigationController;


- (void)applicationDidFinishLaunching:(UIApplication *)application {

// Override point for customization after application launch
// add the navigation controller's view to the window
[window addSubview: navigationController.view];
[window makeKeyAndVisible];
}


- (void)dealloc {
[navigationController release];
[window release];
[super dealloc];
}


@end

+ 0
- 10
macosx/iphone/iPhoneNet_Prefix.pch View File

@@ -1,10 +0,0 @@
//
// Prefix header for all source files of the 'iPhoneNet' target in the 'iPhoneNet' project
//

#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#endif

#define MY_TARGET_OS_IPHONE 1

BIN
macosx/iphone/icon.png View File

Before After
Width: 48  |  Height: 48  |  Size: 5.2KB

+ 0
- 3127
macosx/iphone/iphone-faust.mm
File diff suppressed because it is too large
View File


+ 0
- 155
macosx/iphone/main_master.mm View File

@@ -1,155 +0,0 @@
//
// main.m
// iPhoneNet
//
// Created by Stéphane LETZ on 16/02/09.
// Copyright Grame 2009. All rights reserved.
//

#import <UIKit/UIKit.h>
#include <jack/net.h>

#include "TiPhoneCoreAudioRenderer.h"

#define NUM_INPUT 2
#define NUM_OUTPUT 2

jack_net_master_t* net;
jack_adapter_t* adapter;

float** audio_input_buffer = NULL;
float** audio_output_buffer = NULL;

int buffer_size = 1024;
int sample_rate = 22050;
//int sample_rate = 32000;

jack_master_t request = { -1, -1, -1, -1, buffer_size, sample_rate, "master" };
jack_slave_t result;

static void MixAudio(float** dst, float** src1, float** src2, int channels, int buffer_size)
{
for (int chan = 0; chan < channels; chan++) {
for (int frame = 0; frame < buffer_size; frame++) {
dst[chan][frame] = src1[chan][frame] + src2[chan][frame];
}
}
}

static void MasterAudioCallback(int frames, float** inputs, float** outputs, void* arg)
{
int i;

// Copy from iPod input to network buffers
for (i = 0; i < result.audio_input; i++) {
memcpy(audio_input_buffer[i], inputs[i], buffer_size * sizeof(float));
}

/*
// Copy from network out buffers to network in buffers (audio thru)
for (i = 0; i < result.audio_input; i++) {
memcpy(audio_input_buffer[i], audio_output_buffer[i], buffer_size * sizeof(float));
}
*/

// Mix iPod input and network in buffers to network out buffers
//MixAudio(audio_input_buffer, inputs, audio_output_buffer, result.audio_input, buffer_size);

// Send network buffers
if (jack_net_master_send(net, result.audio_input, audio_input_buffer, 0, NULL) < 0) {
printf("jack_net_master_send error..\n");
}

// Recv network buffers
if (jack_net_master_recv(net, result.audio_output, audio_output_buffer, 0, NULL) < 0) {
printf("jack_net_master_recv error..\n");
}

// Copy from network buffers to iPod output
for (i = 0; i < result.audio_output; i++) {
memcpy(outputs[i], audio_output_buffer[i], buffer_size * sizeof(float));
}
}

int main(int argc, char *argv[]) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int i;

if ((net = jack_net_master_open(DEFAULT_MULTICAST_IP, DEFAULT_PORT, "iPhone", &request, &result)) == 0) {
printf("jack_net_master_open error..\n");
return -1;
}

TiPhoneCoreAudioRenderer audio_device(result.audio_input, result.audio_output);

// Allocate buffers
if (result.audio_input > 0) {
audio_input_buffer = (float**)calloc(result.audio_input, sizeof(float*));
for (i = 0; i < result.audio_input; i++) {
audio_input_buffer[i] = (float*)(calloc(buffer_size, sizeof(float)));
}
}

if (result.audio_output > 0) {
audio_output_buffer = (float**)calloc(result.audio_output, sizeof(float*));
for (i = 0; i < result.audio_output; i++) {
audio_output_buffer[i] = (float*)(calloc(buffer_size, sizeof(float)));
}
}

if (audio_device.Open(buffer_size, sample_rate) < 0) {
return -1;
}

audio_device.SetAudioCallback(MasterAudioCallback, NULL);

if (audio_device.Start() < 0) {
return -1;
}

/*
// Quite brutal way, the application actually does not start completely, the netjack audio processing loop is used instead...
// Run until interrupted

int wait_usec = (unsigned long)((((float)buffer_size) / ((float)sample_rate)) * 1000000.0f);

while (1) {

// Copy input to output
for (i = 0; i < result.audio_input; i++) {
memcpy(audio_output_buffer[i], audio_input_buffer[i], buffer_size * sizeof(float));
}

if (jack_net_master_send(net, result.audio_output, audio_output_buffer, 0, NULL) < 0) {
printf("jack_net_master_send error..\n");
}

if (jack_net_master_recv(net, result.audio_input, audio_input_buffer, 0, NULL) < 0) {
printf("jack_net_master_recv error..\n");
}
usleep(wait_usec);
};
*/

int retVal = UIApplicationMain(argc, argv, nil, nil);

audio_device.Stop();
audio_device.Close();

// Wait for application end
jack_net_master_close(net);

for (i = 0; i < result.audio_input; i++) {
free(audio_input_buffer[i]);
}
free(audio_input_buffer);

for (i = 0; i < result.audio_output; i++) {
free(audio_output_buffer[i]);
}
free(audio_output_buffer);

[pool release];
return retVal;
}

+ 0
- 114
macosx/iphone/main_slave.mm View File

@@ -1,114 +0,0 @@
//
// main.m
// iPhoneNet
//
// Created by Stéphane LETZ on 16/02/09.
// Copyright Grame 2009. All rights reserved.
//

#import <UIKit/UIKit.h>
#include <jack/net.h>

#include "TiPhoneCoreAudioRenderer.h"

#define NUM_INPUT 0
#define NUM_OUTPUT 2

jack_net_slave_t* net = NULL;
jack_adapter_t* adapter = NULL;

int buffer_size;
int sample_rate;

static int net_process(jack_nframes_t buffer_size,
int audio_input,
float** audio_input_buffer,
int midi_input,
void** midi_input_buffer,
int audio_output,
float** audio_output_buffer,
int midi_output,
void** midi_output_buffer,
void* data)
{
jack_adapter_pull_and_push(adapter, audio_output_buffer, audio_input_buffer, buffer_size);

// Process input, produce output
if (audio_input == audio_output) {
// Copy net input to net output
for (int i = 0; i < audio_input; i++) {
memcpy(audio_output_buffer[i], audio_input_buffer[i], buffer_size * sizeof(float));
}
}
return 0;
}

static void net_shutdown(void *arg)
{
if (adapter)
jack_flush_adapter(adapter);
}

static void SlaveAudioCallback(int frames, float** inputs, float** outputs, void* arg)
{
jack_adapter_push_and_pull(adapter, inputs, outputs, frames);
}

//http://www.securityfocus.com/infocus/1884

#define WIFI_MTU 1500

int main(int argc, char *argv[]) {

NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];

jack_slave_t request = { NUM_OUTPUT, NUM_INPUT, 0, 0, WIFI_MTU, -1, JackCeltEncoder, 128, 2 };
jack_master_t result;

//if ((net = jack_net_slave_open("169.254.112.119", DEFAULT_PORT, "iPhone", &request, &result)) == 0) {
if ((net = jack_net_slave_open(DEFAULT_MULTICAST_IP, DEFAULT_PORT, "iPod", &request, &result)) == 0) {
printf("jack_net_slave_open error...\n");
return -1;
}

if ((adapter = jack_create_adapter(NUM_INPUT,
NUM_OUTPUT,
result.buffer_size,
result.sample_rate,
result.buffer_size,
result.sample_rate)) == 0) {
return -1;
}

TiPhoneCoreAudioRenderer audio_device(NUM_INPUT, NUM_OUTPUT);

jack_set_net_slave_process_callback(net, net_process, NULL);
jack_set_net_slave_shutdown_callback(net, net_shutdown, NULL);

if (jack_net_slave_activate(net) != 0) {
printf("Cannot activate slave client\n");
return -1;
}

if (audio_device.Open(result.buffer_size, result.sample_rate) < 0) {
return -1;
}

audio_device.SetAudioCallback(SlaveAudioCallback, NULL);

if (audio_device.Start() < 0) {
return -1;
}

int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];

audio_device.Stop();
audio_device.Close();

// Wait for application end
jack_net_slave_deactivate(net);
jack_net_slave_close(net);
jack_destroy_adapter(adapter);
return retVal;
}

BIN
macosx/libaften_pcm.a View File


BIN
macosx/libaften_static.a View File


BIN
macosx/libcelt.a View File


BIN
macosx/libopus.a View File


BIN
macosx/libportaudio.a View File


+ 18
- 0
macosx/package-welcome.txt.in View File

@@ -0,0 +1,18 @@
JACK2 is a low-latency audio server for multi-processor machines.
It provides a basic infrastructure for audio applications to communicate with each other and with audio hardware.
Through JACK, users are enabled to build powerful systems for signal processing and music production.

This package installs jackd and the command-line tools for JACK2.
It also includes the necessary files for developers to build with JACK support.

All files will be installed under /usr/local/.


Please note that this package will not delete previously installed jackosx contents.
If you used that before, please run its own uninstaller before installing this package!

Also, the previously packaged JackRouter plugin is not available at this point.


For advanced/curious users, here is the full file list that this package provides:


+ 19
- 0
macosx/package.xml.in View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<installer-gui-script minSpecVersion="1">
<title>JACK2</title>
<!--
<background file="@CURDIR@/package-background.png" mime-type="image/png" alignment="bottomleft" scaling="proportional" />
<background-darkAqua file="@CURDIR@/package-background.png" mime-type="image/png" alignment="bottomleft" scaling="proportional" />
-->
<choice id="org.jackaudio.jack2" title="JACK2" visible="false">
<pkg-ref id="org.jackaudio.jack2" version="0">jack2-osx-root.pkg</pkg-ref>
</choice>
<choices-outline>
<line choice="org.jackaudio.jack2" />
</choices-outline>
<domains enable_anywhere="false" enable_currentUserHome="false" enable_localSystem="true" />
<license file="@CURDIR@/../COPYING" mime-type="text/plain" />
<options customize="never" hostArchitectures="x86_64" require-scripts="false" rootVolumeOnly="true" />
<pkg-ref id="org.jackaudio.jack2" />
<welcome file="@CURDIR@/package-welcome.txt" mime-type="text/plain" />
</installer-gui-script>

+ 1
- 1
posix/JackFifo.cpp View File

@@ -132,7 +132,7 @@ bool JackFifo::Allocate(const char* name, const char* server_name, int value)
if (stat(fName, &statbuf) < 0) { if (stat(fName, &statbuf) < 0) {
if (errno == ENOENT || errno == EPERM) { if (errno == ENOENT || errno == EPERM) {
if (mkfifo(fName, 0666) < 0) { if (mkfifo(fName, 0666) < 0) {
jack_error("Cannot create inter-client FIFO name = %s err = %s", name, strerror(errno));
jack_error("Cannot create inter-client FIFO name = %s err = %s", fName, strerror(errno));
return false; return false;
} }
} else { } else {


+ 1
- 1
posix/JackFifo.h View File

@@ -44,7 +44,7 @@ class SERVER_EXPORT JackFifo : public detail::JackSynchro


protected: protected:


void BuildName(const char* name, const char* server_name, char* res);
void BuildName(const char* name, const char* server_name, char* res, int size);


public: public:




+ 1
- 0
posix/JackNetUnixSocket.cpp View File

@@ -22,6 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
#include <sys/time.h>


using namespace std; using namespace std;




+ 2
- 11
posix/JackPosixSemaphore.cpp View File

@@ -17,6 +17,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


*/ */


#define _POSIX_C_SOURCE 200112L

#include "JackPosixSemaphore.h" #include "JackPosixSemaphore.h"
#include "JackTools.h" #include "JackTools.h"
#include "JackConstants.h" #include "JackConstants.h"
@@ -111,8 +113,6 @@ bool JackPosixSemaphore::Wait()
return (res == 0); return (res == 0);
} }


#if (_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600) // glibc feature test

bool JackPosixSemaphore::TimedWait(long usec) bool JackPosixSemaphore::TimedWait(long usec)
{ {
int res; int res;
@@ -140,15 +140,6 @@ bool JackPosixSemaphore::TimedWait(long usec)
return (res == 0); return (res == 0);
} }


#else
#warning "JackPosixSemaphore::TimedWait is not supported: Jack in SYNC mode with JackPosixSemaphore will not run properly !!"

bool JackPosixSemaphore::TimedWait(long usec)
{
return Wait();
}
#endif

// Server side : publish the semaphore in the global namespace // Server side : publish the semaphore in the global namespace
bool JackPosixSemaphore::Allocate(const char* name, const char* server_name, int value) bool JackPosixSemaphore::Allocate(const char* name, const char* server_name, int value)
{ {


+ 0
- 2
posix/JackSocketServerChannel.cpp View File

@@ -22,7 +22,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackServer.h" #include "JackServer.h"
#include "JackLockedEngine.h" #include "JackLockedEngine.h"
#include "JackGlobals.h" #include "JackGlobals.h"
#include "JackServerGlobals.h"
#include "JackClient.h" #include "JackClient.h"
#include "JackTools.h" #include "JackTools.h"
#include "JackNotification.h" #include "JackNotification.h"
@@ -230,7 +229,6 @@ bool JackSocketServerChannel::Execute()
// Poll all clients // Poll all clients
for (unsigned int i = 1; i < fSocketTable.size() + 1; i++) { for (unsigned int i = 1; i < fSocketTable.size() + 1; i++) {
int fd = fPollTable[i].fd; int fd = fPollTable[i].fd;
jack_log("JackSocketServerChannel::Execute : fPollTable i = %ld fd = %ld", i, fd);
if (fPollTable[i].revents & ~POLLIN) { if (fPollTable[i].revents & ~POLLIN) {
jack_log("JackSocketServerChannel::Execute : poll client error err = %s", strerror(errno)); jack_log("JackSocketServerChannel::Execute : poll client error err = %s", strerror(errno));
ClientKill(fd); ClientKill(fd);


+ 0
- 1
posix/JackSocketServerNotifyChannel.cpp View File

@@ -22,7 +22,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#include "JackRequest.h" #include "JackRequest.h"
#include "JackConstants.h" #include "JackConstants.h"
#include "JackNotification.h" #include "JackNotification.h"
#include "JackServerGlobals.h"


namespace Jack namespace Jack
{ {


+ 3
- 0
windows/JackMMCSS.h View File

@@ -24,6 +24,9 @@
#include "JackSystemDeps.h" #include "JackSystemDeps.h"
#include "JackCompilerDeps.h" #include "JackCompilerDeps.h"
#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>
#include <map> #include <map>


+ 5
- 0
windows/JackPlatformPlug_os.h View File

@@ -30,6 +30,11 @@
#define ADDON_DIR "jack" #define ADDON_DIR "jack"
#endif #endif


#define MAKE_WIDECHAR_CONSTANT2(Quote) L##Quote
#define MAKE_WIDECHAR_CONSTANT(Quote) MAKE_WIDECHAR_CONSTANT2(Quote)
#define ADDON_DIRW MAKE_WIDECHAR_CONSTANT(ADDON_DIR)


namespace Jack namespace Jack
{ {
struct JackRequest; struct JackRequest;


+ 4
- 1
windows/JackRouter/JackRouter.h View File

@@ -37,10 +37,13 @@ static int kNumOutputs = 4;
#include "jack.h" #include "jack.h"
#include "rpc.h" #include "rpc.h"
#include "rpcndr.h" #include "rpcndr.h"
#ifndef COM_NO_WINDOWS_H #ifndef COM_NO_WINDOWS_H
#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>
#include "ole2.h" #include "ole2.h"
#endif #endif
#include "combase.h" #include "combase.h"


+ 25
- 0
windows/JackRouter/JackRouter_MinGW_deps.sln View File

@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2018
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "JackRouter_MinGW_deps", "JackRouter_MinGW_deps.vcxproj", "{08E8BE85-76F9-4070-B85E-0CA6A38BCBB4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{08E8BE85-76F9-4070-B85E-0CA6A38BCBB4}.Debug|x64.ActiveCfg = Debug|x64
{08E8BE85-76F9-4070-B85E-0CA6A38BCBB4}.Debug|x64.Build.0 = Debug|x64
{08E8BE85-76F9-4070-B85E-0CA6A38BCBB4}.Release|x64.ActiveCfg = Release|x64
{08E8BE85-76F9-4070-B85E-0CA6A38BCBB4}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {14794710-1A0E-40AE-99C4-98C59280F0C3}
EndGlobalSection
EndGlobal

+ 287
- 0
windows/JackRouter/JackRouter_MinGW_deps.vcxproj View File

@@ -0,0 +1,287 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<SccProjectName />
<SccLocalPath />
<ProjectGuid>{08E8BE85-76F9-4070-B85E-0CA6A38BCBB4}</ProjectGuid>
<WindowsTargetPlatformVersion>10.0.17134.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<PlatformToolset>v141</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<OutDir>.\Debug\</OutDir>
<IntDir>.\Debug\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<OutDir>.\Debug\</OutDir>
<IntDir>.\Debug\</IntDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<OutDir>.\Release\</OutDir>
<IntDir>.\Release\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutDir>.\Release64\</OutDir>
<IntDir>.\Release64\</IntDir>
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
<FunctionLevelLinking>false</FunctionLevelLinking>
<Optimization>Disabled</Optimization>
<SuppressStartupBanner>true</SuppressStartupBanner>
<WarningLevel>Level3</WarningLevel>
<MinimalRebuild>true</MinimalRebuild>
<AdditionalIncludeDirectories>c:\msys64\opt\asiosdk\common;..\..\common;..\..\common\jack;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_STDINT_H;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
<BrowseInformation>true</BrowseInformation>
<PrecompiledHeaderOutputFile>.\Debug\JackRouter.pch</PrecompiledHeaderOutputFile>
<ObjectFileName>.\Debug\</ObjectFileName>
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Midl>
<SuppressStartupBanner>true</SuppressStartupBanner>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<TypeLibraryName>.\Debug\JackRouter.tlb</TypeLibraryName>
<MkTypLibCompatible>true</MkTypLibCompatible>
<TargetEnvironment>Win32</TargetEnvironment>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>.\Debug\JackRouter.bsc</OutputFile>
</Bscmake>
<Link>
<SuppressStartupBanner>true</SuppressStartupBanner>
<LinkDLL>true</LinkDLL>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OutputFile>Debug/JackRouter_debug.dll</OutputFile>
<ImportLibrary>.\Debug\JackRouter_debug.lib</ImportLibrary>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\JackRouter.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
<FunctionLevelLinking>false</FunctionLevelLinking>
<Optimization>Disabled</Optimization>
<SuppressStartupBanner>true</SuppressStartupBanner>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>c:\msys64\opt\asiosdk\common;..\..\common;..\..\common\jack;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_STDINT_H;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
<BrowseInformation>true</BrowseInformation>
<PrecompiledHeaderOutputFile>.\Debug\JackRouter.pch</PrecompiledHeaderOutputFile>
<ObjectFileName>.\Debug\</ObjectFileName>
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
</ClCompile>
<Midl>
<SuppressStartupBanner>true</SuppressStartupBanner>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<TypeLibraryName>.\Debug\JackRouter.tlb</TypeLibraryName>
<MkTypLibCompatible>true</MkTypLibCompatible>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>.\Debug\JackRouter.bsc</OutputFile>
</Bscmake>
<Link>
<SuppressStartupBanner>true</SuppressStartupBanner>
<LinkDLL>true</LinkDLL>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<OutputFile>Debug/JackRouter_debug.dll</OutputFile>
<ImportLibrary>.\Debug\JackRouter_debug.lib</ImportLibrary>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\JackRouter.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<StringPooling>true</StringPooling>
<FunctionLevelLinking>true</FunctionLevelLinking>
<Optimization>MaxSpeed</Optimization>
<SuppressStartupBanner>true</SuppressStartupBanner>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>c:\msys64\opt\asiosdk\common;..\..\common;..\..\common\jack;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_STDINT_H;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
<BrowseInformation>true</BrowseInformation>
<PrecompiledHeaderOutputFile>.\Release\JackRouter.pch</PrecompiledHeaderOutputFile>
<ObjectFileName>.\Release\</ObjectFileName>
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
</ClCompile>
<Midl>
<SuppressStartupBanner>true</SuppressStartupBanner>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<TypeLibraryName>.\Release\JackRouter.tlb</TypeLibraryName>
<MkTypLibCompatible>true</MkTypLibCompatible>
<TargetEnvironment>Win32</TargetEnvironment>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>.\Release\JackRouter.bsc</OutputFile>
</Bscmake>
<Link>
<SuppressStartupBanner>true</SuppressStartupBanner>
<LinkDLL>true</LinkDLL>
<SubSystem>Windows</SubSystem>
<OutputFile>.\Release\JackRouter.dll</OutputFile>
<ImportLibrary>.\Release\JackRouter.lib</ImportLibrary>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\JackRouter.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<StringPooling>true</StringPooling>
<FunctionLevelLinking>true</FunctionLevelLinking>
<Optimization>MaxSpeed</Optimization>
<SuppressStartupBanner>true</SuppressStartupBanner>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>c:\msys64\opt\asiosdk\common;..\..\common;..\..\common\jack;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_STDINT_H;WIN32;NDEBUG;_WINDOWS;PSAPI_VERSION=2;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
<BrowseInformation>true</BrowseInformation>
<PrecompiledHeaderOutputFile>.\Release\JackRouter.pch</PrecompiledHeaderOutputFile>
<ObjectFileName>.\Release\</ObjectFileName>
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
<IgnoreStandardIncludePath>false</IgnoreStandardIncludePath>
<ForcedIncludeFiles>stdint.h</ForcedIncludeFiles>
</ClCompile>
<Midl>
<SuppressStartupBanner>true</SuppressStartupBanner>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<TypeLibraryName>.\Release\JackRouter.tlb</TypeLibraryName>
<MkTypLibCompatible>true</MkTypLibCompatible>
</Midl>
<ResourceCompile>
<Culture>0x0409</Culture>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner>
<OutputFile>.\Release\JackRouter64.bsc</OutputFile>
</Bscmake>
<Link>
<SuppressStartupBanner>true</SuppressStartupBanner>
<LinkDLL>true</LinkDLL>
<SubSystem>Windows</SubSystem>
<OutputFile>.\Release64\JackRouter.dll</OutputFile>
<ImportLibrary>.\Release\JackRouter64.lib</ImportLibrary>
<AdditionalDependencies>odbc32.lib;odbccp32.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ModuleDefinitionFile>.\JackRouter.def</ModuleDefinitionFile>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="c:\msys64\opt\asiosdk\common\combase.cpp" />
<ClCompile Include="c:\msys64\opt\asiosdk\common\dllentry.cpp" />
<ClCompile Include="JackRouter.cpp" />
<ClCompile Include="profport.cpp" />
<ClCompile Include="c:\msys64\opt\asiosdk\common\register.cpp" />
</ItemGroup>
<ItemGroup>
<CustomBuild Include="JackRouter.def" />
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="resource.rc" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\..\common\asio.h" />
<ClInclude Include="..\..\Common\Asiodrvr.h" />
<ClInclude Include="..\asiosmpl.h" />
<ClInclude Include="..\..\..\common\asiosys.h" />
<ClInclude Include="..\..\..\common\combase.h" />
<ClInclude Include="..\..\..\common\iasiodrv.h" />
</ItemGroup>
<ItemGroup>
<Library Include="c:\msys64\opt\jack\bin\jack.dll.a" />
<Library Include="Psapi.Lib" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

+ 3
- 0
windows/JackShmMem_os.h View File

@@ -20,6 +20,9 @@
#ifndef __JackShmMem_WIN32__ #ifndef __JackShmMem_WIN32__
#define __JackShmMem_WIN32__ #define __JackShmMem_WIN32__


#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>


inline bool CHECK_MLOCK(void* ptr, size_t size) inline bool CHECK_MLOCK(void* ptr, size_t size)


+ 6
- 1
windows/JackSystemDeps_os.h View File

@@ -21,6 +21,9 @@
#ifndef __JackSystemDeps_WIN32__ #ifndef __JackSystemDeps_WIN32__
#define __JackSystemDeps_WIN32__ #define __JackSystemDeps_WIN32__


#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>
#include "JackCompilerDeps.h" #include "JackCompilerDeps.h"


@@ -28,10 +31,12 @@
#define PATH_MAX 512 #define PATH_MAX 512
#endif #endif


#ifndef UINT32_MAX
#define UINT32_MAX 4294967295U #define UINT32_MAX 4294967295U
#endif


#define DRIVER_HANDLE HINSTANCE #define DRIVER_HANDLE HINSTANCE
#define LoadDriverModule(name) LoadLibrary((name))
#define LoadDriverModule(name) LoadLibraryW((name))
#define UnloadDriverModule(handle) (FreeLibrary(((HMODULE)handle))) #define UnloadDriverModule(handle) (FreeLibrary(((HMODULE)handle)))
#define GetDriverProc(handle, name) GetProcAddress(((HMODULE)handle), (name)) #define GetDriverProc(handle, name) GetProcAddress(((HMODULE)handle), (name))




+ 9
- 2
windows/JackTypes_os.h View File

@@ -21,12 +21,19 @@
#ifndef __JackTypes_WIN32__ #ifndef __JackTypes_WIN32__
#define __JackTypes_WIN32__ #define __JackTypes_WIN32__


#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>


typedef ULONGLONG UInt64;
typedef ULONGLONG UInt64;
typedef UInt64 uint64_t; typedef UInt64 uint64_t;
typedef unsigned short uint16_t; typedef unsigned short uint16_t;
typedef DWORD jack_tls_key;
typedef DWORD jack_tls_key;

#if defined(__MINGW32__)
#define PRIu64 "llu"
#endif


#endif #endif



+ 4
- 0
windows/JackWinEvent.h View File

@@ -21,6 +21,10 @@
#define __JackWinEvent__ #define __JackWinEvent__


#include "JackSynchro.h" #include "JackSynchro.h"

#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>


namespace Jack namespace Jack


+ 7
- 4
windows/JackWinMutex.h View File

@@ -23,6 +23,9 @@


#include "JackCompilerDeps.h" #include "JackCompilerDeps.h"
#include "JackException.h" #include "JackException.h"
#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>
#include <stdio.h> #include <stdio.h>


@@ -71,13 +74,13 @@ class SERVER_EXPORT JackWinMutex


JackWinMutex(const char* name = NULL) JackWinMutex(const char* name = NULL)
{ {
// In recursive mode by default
// In recursive mode by default
if (name) { if (name) {
char buffer[MAX_PATH]; char buffer[MAX_PATH];
snprintf(buffer, sizeof(buffer), "%s_%s", "JackWinMutex", name); snprintf(buffer, sizeof(buffer), "%s_%s", "JackWinMutex", name);
fMutex = CreateMutex(NULL, FALSE, buffer);
} else {
fMutex = CreateMutex(NULL, FALSE, NULL);
fMutex = CreateMutex(NULL, FALSE, buffer);
} else {
fMutex = CreateMutex(NULL, FALSE, NULL);
} }


ThrowIf((fMutex == 0), JackException("JackWinMutex: could not init the mutex")); ThrowIf((fMutex == 0), JackException("JackWinMutex: could not init the mutex"));


+ 3
- 0
windows/JackWinNamedPipe.h View File

@@ -21,6 +21,9 @@
#ifndef __JackWinNamedPipe__ #ifndef __JackWinNamedPipe__
#define __JackWinNamedPipe__ #define __JackWinNamedPipe__


#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>


#include "JackChannel.h" #include "JackChannel.h"


+ 3
- 0
windows/JackWinSemaphore.h View File

@@ -22,6 +22,9 @@
#define __JackWinSemaphore__ #define __JackWinSemaphore__


#include "JackSynchro.h" #include "JackSynchro.h"
#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>
#include <assert.h> #include <assert.h>




+ 3
- 0
windows/JackWinThread.h View File

@@ -24,6 +24,9 @@
#include "JackMMCSS.h" #include "JackMMCSS.h"
#include "JackCompilerDeps.h" #include "JackCompilerDeps.h"
#include "JackSystemDeps.h" #include "JackSystemDeps.h"
#ifdef __MINGW32__
#include <winsock2.h>
#endif
#include <windows.h> #include <windows.h>


namespace Jack namespace Jack


+ 270
- 0
windows/README_MINGW View File

@@ -0,0 +1,270 @@
HOW TO COMPILE JACK USING WAF AND MINGW
=======================================

Rev. 1 - 2019-09-01 - First version
Rev. 2 - 2019-09-18 - Include contributions from @Schroedingers-Cat
Rev. 3 - 2019-12-14 - Include contributions from @Schroedingers-Cat



Introduction
------------

This guide contains detailed instructions for building JACK on a modern MinGW
installation. It was conceived as the starting point for unifying the JACK build
process across all platforms.

As this is work in progress, there are still a couple of caveats:

- Asynchronous mode is unusable with low latencies
- JackRouter still builds using a Visual Studio project
- Lots of real world testing is needed



Creating the development environment
------------------------------------

This guide uses MSYS2 as the toolchain, it can be found at https://www.msys2.org/
It comes as a handy installer called msys2-x86_64-{version}.exe. Once installed:

- Open "MSYS2 MinGW 64-bit terminal" from the MSYS2 start menu shortcuts

- Upgrade base MSYS2 packages

pacman -Suy

It is possible pacman ends with the following banner:

warning: terminate MSYS2 without returning to shell and check for updates again
warning: for example close your terminal window instead of calling exit

In such case close the MSYS2 window, re-open, and run pacman -Suy again.

- Install required packages

pacman -S mingw-w64-x86_64-toolchain patch autoconf make \
gettext-devel automake libtool pkgconfig p7zip unzip git python

- Replace the GCC compiler with a version configured for SJLJ exceptions, as
instructed by the original Windows build instructions (windows/README)

Prebuilt binaries can be found at
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/

Look for "x86_64-posix-sjlj" under "MinGW-W64 GCC-{version}", the file should be
called x86_64-{version}-release-posix-sjlj-rt_v6-rev0.7z

Or just download from a direct link (GCC 8.1.0):

wget https://downloads.sourceforge.net/project/mingw-w64/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/sjlj/x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z

Once downloaded:

p7zip -d x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0.7z

That will decompress to a folder called mingw64 in the working directory.
Now replace the files from the previous mingw-w64-x86_64-toolchain package
installation:

mv /mingw64 /mingw64.bak -> backup original
rm /mingw64 -> see explanation below
mv mingw64 / -> sjlj toolchain

The first step results in a new file called mingw64 file being created in /. The
file is not visible to the Windows File Explorer when inspecting C:\msys64, so
it is probably an artifact and safe to delete it in the second step. Otherwise
the last mv step will fail with:

mv: cannot overwrite non-directory '/mingw64' with directory 'mingw64'

An alternate solution consists in closing the MSYS2 window and replicating the
above procedure using the File Explorer. The following assumes the toolchain 7z
file was decompressed to the home directory:

Rename C:\msys64\mingw64 to C:\msys64\mingw64.bak
Move C:\msys64\home\{username}\mingw64 to C:\msys64

Make sure gcc runs and it is the expected version:

$ gcc --version
gcc.exe (x86_64-posix-sjlj-rev0, Built by MinGW-W64 project) {version}



Preparing JACK dependencies
---------------------------

There are prebuilt MinGW binaries for all the libraries that can be installed
using the pacman package manager, but since we are using a compiler that is not
the default version shipped by MinGW, it seems better idea to build from source
to avoid any linker and runtime issues. A good technical explanation and/or
evidence for this statement is currently missing from this guide.

Fortunately there are PKGBUILD files for doing so together with a nice guide at
https://github.com/msys2/MINGW-packages

git clone https://github.com/msys2/MINGW-packages.git

Before building libraries, adjust the includes path:

export C_INCLUDE_PATH=/mingw64/include

The basic procedure for building and installing libraries is:

cd MINGW-packages/mingw-w64-{libname}
MINGW_INSTALLS=mingw64 makepkg-mingw -sLf
pacman -U mingw-w64-{libname}-{suffix}.pkg.tar.xz

Repeat the procedure for each library listed below replacing {libname} with the
appropriate name and {suffix} with whatever the above process creates. Keep the
recommended build order, for example libsamplerate depends on libsndfile, and
libsystre depends on libtre-git. libsystre is a wrapper around libtre that
allows including <regex.h> later.

Some libraries like libsndfile and libsamplerate will ask for installing extra
dependencies, it is ok to do so.

For low latency audio it is recommended to build portaudio with ASIO support, so
the Steinberg ASIO SDK should be manually downloaded beforehand. It can be found
at https://www.steinberg.net/en/company/developers.html. The waf script will
later check if the SDK is present at /opt/asiosdk

wget https://www.steinberg.net/asiosdk -O /tmp/asiosdk.zip
unzip /tmp/asiosdk.zip -d /tmp
mkdir /opt <- MinGW does not create /opt during installation
mv /tmp/asiosdk_{version}_{date} /opt/asiosdk

The description file in portaudio (MINGW-packages/mingw-w64-portaudio/PKGBUILD)
needs to be patched so configure is called with the necessary flags for ASIO:

--with-asiodir=/opt/asiosdk <- new option
--with-winapi=wmme,directx,wasapi,vdmks,asio <- append 'asio' to existing

Both static and shared library versions of portaudio are built. To prevent
errors while building the shared version or recompiling static, also insert the
following lines in PKGBUILD after the first make call (around line 60) and after
second make (around line 70):

find /opt/asiosdk -name "*.lo" -type f -delete
find /opt/asiosdk -name "*.o" -type f -delete

Finally here is the list of libraries to build:

db
libsndfile
libsamplerate
libtre-git
libsystre
portaudio



Compiling JACK
--------------

- Clone repo

git clone https://github.com/jackaudio/jack2

- Build and install

cd jack2
./waf configure --prefix=/opt/jack && ./waf -p install

The resulting files can be found at /c/opt/jack/bin, or C:\msys64\opt\jack\bin



Compiling JackRouter
--------------------

Visual Studio with MFC support is needed to build the included JackRouter VS
project. The project was tested to successfully generate a 64bit version of
JackRouter.dll using Visual Studio 2017 and 2019. MFC support can be added from
the VS installer, by selecting Workloads/Visual C++ build tools/Visual C++ MFC
for x86 and x64 (valid for VS 2017). Once ready, just open and build the project

windows/JackRouter/JackRouter_MinGW_deps.vcxproj

Differences from the original JackRouter.vcxproj:

- Depends on the asiosdk files from the previous MinGW JACK installation (i.e.,
it points to absolute paths starting with C:\msys64\opt)
- Links to the jack.dll.a created by the previous build, instead of libjack.lib
This means JackRouter.dll will currently depend on libjack-0.dll
- Force includes stdint.h and defines _STDINT_H to avoid int8_t, int32_t and
uint32_t basic types redefinition during compilation



Running and distributing
------------------------

An automated installation process should copy files to two destinations. One for
the JACK server binary and standalone tools, and another for the client library.
The latter is needed by JACK enabled applications in order to be able to connect
to the server.

- Create a directory named C:\Program Files\Jack (can be anything else)
- Copy all files in C:\msys64\opt\jack\bin to C:\Program Files\Jack
- Copy the following DLLs from C:\msys64\mingw64\bin to C:\Program Files\Jack,
these are dependencies for the JACK server and tools:

libstdc++-6.dll
libdb-6.0.dll
libsndfile-1.dll
libsamplerate-0.dll
libportaudio-2.dll
libgcc_s_sjlj-1.dll
libwinpthread-1.dll
libtre-5.dll
libsystre-0.dll

- Copy and rename the following files from C:\msys64\opt\jack\bin to C:\Windows
to make libjack available to clients:

libjackserver-0.dll -> libjackserver64.dll
libjack-0.dll -> libjack64.dll

- Copy the following files from C:\msys64\mingw64\bin to C:\Windows, these are
dependencies for libjack. C:\Windows is the directory the current official JACK
1.9.11 binary installer targets, a better solution should be devised to avoid
cluttering the Windows directory:

libgcc_s_sjlj-1.dll
libwinpthread-1.dll
libtre-5.dll
libsystre-0.dll

- Copy JackRouter.dll from windows\JackRouter\Release64 to C:\Program Files\Jack
This allows non-JACK applications to connect to the server through a special
ASIO driver that routes audio to JACK instead of a physical audio device.
Also copy libjack-0.dll from C:\msys64\mingw64\bin to C:\Program Files\Jack
because JackRouter depends on libjack but will check for libjack-0.dll instead
of the system-wide libjack64.dll previously copied to C:\Windows. Once done,
JackRouter needs to be registered:

regsvr32 JackRouter.dll

Tested working clients:
Ardour
Bitwig Studio
QJackCtl
JackRouter

Example of starting the JACK server including MIDI support for a Focusrite USB
audio device using ASIO:
jackd -R -S -X winmme -d portaudio -p 32 -r 48000 -d "ASIO::Focusrite USB ASIO"



Development tools and links
---------------------------

http://www.dependencywalker.com/
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/gflags
https://blogs.msdn.microsoft.com/junfeng/2006/11/20/debugging-loadlibrary-failures/
https://stackoverflow.com/questions/15852677/static-and-dynamic-shared-linking-with-mingw
https://github.com/EddieRingle/portaudio/blob/master/src/hostapi/asio/ASIO-README.txt

BIN
windows/Release/bin/libportaudio_x86.a View File


BIN
windows/Release/bin/libsamplerate_x86.a View File


BIN
windows/Release64/bin/libportaudio_x86_64.a View File


BIN
windows/Release64/bin/libsamplerate_x86_64.a View File


BIN
windows/inno/jack.ico View File

Before After

+ 51
- 0
windows/inno/win32.iss View File

@@ -0,0 +1,51 @@
#include "version.iss"

[Setup]
AppName=JACK2
AppPublisher=jackaudio.org
AppPublisherURL=https://github.com/jackaudio/jack2/
AppSupportURL=https://github.com/jackaudio/jack2/issues/
AppUpdatesURL=https://github.com/jackaudio/jack2-releases/releases/
AppVersion={#VERSION}
DefaultDirName={commonpf32}\JACK2
DisableDirPage=yes
OutputBaseFilename=jack2-win32-v{#VERSION}
OutputDir=.
UsePreviousAppDir=no

[Types]
Name: "full"; Description: "Full installation";
Name: "custom"; Description: "Custom installation"; Flags: iscustom;

[Components]
Name: qjackctl; Description: "QJackCtl application (recommended)"; Types: full;
Name: dev; Description: "Developer resources"; Types: full;

[Files]
; icon
Source: "jack.ico"; DestDir: "{app}";
; jackd and server libs
Source: "win32\bin\jackd.exe"; DestDir: "{app}";
Source: "win32\lib\libjacknet.dll"; DestDir: "{app}";
Source: "win32\lib\libjackserver.dll"; DestDir: "{app}";
; drivers
Source: "win32\lib\jack\*.dll"; DestDir: "{app}\jack";
; tools
Source: "win32\bin\jack_*.exe"; DestDir: "{app}\tools";
; jack client lib (NOTE goes into windir)
Source: "win32\lib\libjack.dll"; DestDir: "{win}";
; qjackctl
Source: "win32\bin\qjackctl.exe"; DestDir: "{app}\qjackctl"; Components: qjackctl;
Source: "Qt5*.dll"; DestDir: "{app}\qjackctl"; Components: qjackctl;
Source: "qwindows.dll"; DestDir: "{app}\qjackctl\platforms"; Components: qjackctl;
; dev
Source: "win32\include\jack\*.h"; DestDir: "{app}\include"; Components: dev;
Source: "win32\lib\*.a"; DestDir: "{app}\lib"; Components: dev;
Source: "win32\lib\jack\*.a"; DestDir: "{app}\lib\jack"; Components: dev;

[Icons]
Name: "{commonprograms}\QJackCtl"; Filename: "{app}\qjackctl\qjackctl.exe"; IconFilename: "{app}\jack.ico"; WorkingDir: "{app}"; Comment: "Graphical Interface for JACK"; Components: qjackctl;

[Registry]
Root: HKLM; Subkey: "Software\JACK"; Flags: deletevalue uninsdeletekeyifempty uninsdeletevalue; ValueType: string; ValueName: "Location"; ValueData: "{app}\jackd.exe"
Root: HKLM; Subkey: "Software\JACK"; Flags: deletevalue uninsdeletekeyifempty uninsdeletevalue; ValueType: string; ValueName: "Version"; ValueData: "{#VERSION}"

+ 52
- 0
windows/inno/win64.iss View File

@@ -0,0 +1,52 @@
#include "version.iss"

[Setup]
ArchitecturesInstallIn64BitMode=x64
AppName=JACK2
AppPublisher=jackaudio.org
AppPublisherURL=https://github.com/jackaudio/jack2/
AppSupportURL=https://github.com/jackaudio/jack2/issues/
AppUpdatesURL=https://github.com/jackaudio/jack2-releases/releases/
AppVersion={#VERSION}
DefaultDirName={commonpf64}\JACK2
DisableDirPage=yes
OutputBaseFilename=jack2-win64-v{#VERSION}
OutputDir=.
UsePreviousAppDir=no

[Types]
Name: "full"; Description: "Full installation";
Name: "custom"; Description: "Custom installation"; Flags: iscustom;

[Components]
Name: qjackctl; Description: "QJackCtl application (recommended)"; Types: full;
Name: dev; Description: "Developer resources"; Types: full;

[Files]
; icon
Source: "jack.ico"; DestDir: "{app}";
; jackd and server libs
Source: "win64\bin\jackd.exe"; DestDir: "{app}";
Source: "win64\lib\libjacknet64.dll"; DestDir: "{app}";
Source: "win64\lib\libjackserver64.dll"; DestDir: "{app}";
; drivers
Source: "win64\lib\jack\*.dll"; DestDir: "{app}\jack";
; tools
Source: "win64\bin\jack_*.exe"; DestDir: "{app}\tools";
; jack client lib (NOTE goes into windir)
Source: "win64\lib\libjack64.dll"; DestDir: "{win}";
; qjackctl
Source: "win64\bin\qjackctl.exe"; DestDir: "{app}\qjackctl"; Components: qjackctl;
Source: "Qt5*.dll"; DestDir: "{app}\qjackctl"; Components: qjackctl;
Source: "qwindows.dll"; DestDir: "{app}\qjackctl\platforms"; Components: qjackctl;
; dev
Source: "win64\include\jack\*.h"; DestDir: "{app}\include"; Components: dev;
Source: "win64\lib\*.a"; DestDir: "{app}\lib"; Components: dev;
Source: "win64\lib\jack\*.a"; DestDir: "{app}\lib\jack"; Components: dev;

[Icons]
Name: "{commonprograms}\QJackCtl"; Filename: "{app}\qjackctl\qjackctl.exe"; IconFilename: "{app}\jack.ico"; WorkingDir: "{app}"; Comment: "Graphical Interface for JACK"; Components: qjackctl;

[Registry]
Root: HKLM; Subkey: "Software\JACK"; Flags: deletevalue uninsdeletekeyifempty uninsdeletevalue; ValueType: string; ValueName: "Location"; ValueData: "{app}\jackd.exe"
Root: HKLM; Subkey: "Software\JACK"; Flags: deletevalue uninsdeletekeyifempty uninsdeletevalue; ValueType: string; ValueName: "Version"; ValueData: "{#VERSION}"

+ 0
- 215
windows/jack_audioadapter.cbp View File

@@ -1,215 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_audioadapter" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack\audioadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-D__SMP__" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
<Add directory="portaudio" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add library="libportaudio_x86_64.a" />
<Add library="libsamplerate_x86_64.a" />
<Add library="winmm" />
<Add library="ole32" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack\audioadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-DBUILD_DLL" />
<Add option="-D__SMP__" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
<Add directory="portaudio" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add library="libportaudio_x86_64.a" />
<Add library="libsamplerate_x86_64.a" />
<Add library="winmm" />
<Add library="ole32" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack\audioadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-D__SMP__" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
<Add directory="portaudio" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add library="libportaudio_x86_64.a" />
<Add library="libsamplerate_x86_64.a" />
<Add library="winmm" />
<Add library="ole32" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack\audioadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-D__SMP__" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
<Add directory="portaudio" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add library="libportaudio_x86.a" />
<Add library="libsamplerate_x86.a" />
<Add library="winmm" />
<Add library="ole32" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jackaudioadapter.res jackaudioadapter.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack\audioadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-D__SMP__" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
<Add directory="portaudio" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add library="libportaudio_x86.a" />
<Add library="libsamplerate_x86.a" />
<Add library="winmm" />
<Add library="ole32" />
<Add directory="Debug\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Debug/jackaudioadapter.res jackaudioadapter.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack\audioadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-D__SMP__" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
<Add directory="portaudio" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add library="libportaudio_x86.a" />
<Add library="libsamplerate_x86.a" />
<Add library="winmm" />
<Add library="ole32" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jackaudioadapter.res jackaudioadapter.rc" />
</ExtraCommands>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\common\JackAudioAdapter.cpp" />
<Unit filename="..\common\JackAudioAdapterFactory.cpp" />
<Unit filename="..\common\JackAudioAdapterInterface.cpp" />
<Unit filename="..\common\JackLibSampleRateResampler.cpp" />
<Unit filename="..\common\JackResampler.cpp" />
<Unit filename="jackaudioadapter.rc">
<Option compilerVar="WINDRES" />
</Unit>
<Unit filename="portaudio\JackPortAudioAdapter.cpp" />
<Unit filename="portaudio\JackPortAudioDevices.cpp" />
<Extensions>
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
<code_completion />
<envvars />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 163
windows/jack_connect.cbp View File

@@ -1,163 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_connect" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack_connect" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_connect" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_connect" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DJACK_MONITOR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack_connect" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_connect" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_connect" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DJACK_MONITOR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\example-clients\connect.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="getopt.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="getopt1.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<debugger />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
<envvars />
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 167
windows/jack_disconnect.cbp View File

@@ -1,167 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_disconnect" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack_disconnect" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_disconnect" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_disconnect" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DJACK_MONITOR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack_disconnect" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_disconnect" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Debug\bin" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_disconnect" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DJACK_MONITOR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\example-clients\connect.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="getopt.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="getopt1.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<debugger />
<envvars />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 173
windows/jack_dummy.cbp View File

@@ -1,173 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_dummy" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack\jack_dummy" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack\jack_dummy" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack\jack_dummy" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack\jack_dummy" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jackdummydriver.res jackdummydriver.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack\jack_dummy" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Debug\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Debug/jackdummydriver.res jackdummydriver.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack\jack_dummy" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jackdummydriver.res jackdummydriver.rc" />
</ExtraCommands>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\common\JackDummyDriver.cpp" />
<Unit filename="jackdummydriver.rc">
<Option compilerVar="WINDRES" />
</Unit>
<Extensions>
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
<code_completion />
<envvars />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 152
windows/jack_latent_client.cbp View File

@@ -1,152 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_latent_client" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack_latent_client" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_latent_client" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_latent_client" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack_latent_client" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_latent_client" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Debug\bin" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_latent_client" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\example-clients\latent_client.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 155
windows/jack_load.cbp View File

@@ -1,155 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_load" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack_load" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_load" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_load" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DJACK_MONITOR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack_load" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_load" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Debug\bin" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_load" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DJACK_MONITOR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjack" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\example-clients\ipload.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 173
windows/jack_loopback.cbp View File

@@ -1,173 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_loopback" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack\jack_loopback" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjackserver64" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack\jack_loopback" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug64\bin" />
<Add library="libjackserver64" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack\jack_loopback" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjackserver64" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack\jack_loopback" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjackserver" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jackloopbackdriver.res jackloopbackdriver.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack\jack_loopback" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Debug\bin" />
<Add library="libjackserver" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Debug/jackloopbackdriver.res jackloopbackdriver.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack\jack_loopback" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add directory="Release\bin" />
<Add library="libjackserver" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jackloopbackdriver.res jackloopbackdriver.rc" />
</ExtraCommands>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="jackloopbackdriver.rc">
<Option compilerVar="WINDRES" />
</Unit>
<Unit filename="..\common\JackLoopbackDriver.cpp" />
<Extensions>
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
<code_completion />
<envvars />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 152
windows/jack_lsp.cbp View File

@@ -1,152 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_lsp" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack_lsp" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_lsp" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_lsp" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack_lsp" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add directory="Release\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_lsp" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add directory="Debug\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_lsp" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add directory="Release\bin" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\example-clients\lsp.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 158
windows/jack_metro.cbp View File

@@ -1,158 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_metro" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack_metro" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_metro" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_metro" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DJACK_MONITOR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjack64" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack_metro" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release\bin" />
<Add option="-m32" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_metro" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug\bin" />
<Add option="-m32" />
<Add library="libjack" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_metro" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DJACK_MONITOR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release\bin" />
<Add option="-m32" />
<Add library="libjack" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\example-clients\metro.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 114
windows/jack_midi_dump.cbp View File

@@ -1,114 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_midi_dump" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_midi_dump" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_midi_dump" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_midi_dump" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add directory="Debug\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_midi_dump" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add directory="Release\bin" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\example-clients\midi_dump.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 152
windows/jack_midi_latency_test.cbp View File

@@ -1,152 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_midi_latency_test" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack_midi_latency_test" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_midi_latency_test" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_midi_latency_test" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack_midi_latency_test" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add directory="Release\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_midi_latency_test" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-g" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add directory="Debug\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_midi_latency_test" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add directory="Release\bin" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\example-clients\midi_latency_test.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 187
windows/jack_netadapter.cbp View File

@@ -1,187 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_netadapter" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack\netadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add library="libsamplerate_x86_64.a" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack\netadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add library="libsamplerate_x86_64.a" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack\netadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add library="libsamplerate_x86_64.a" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack\netadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add library="libsamplerate_x86.a" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jacknetadapter.res jacknetadapter.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack\netadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add library="libsamplerate_x86.a" />
<Add directory="Debug\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Debug/jacknetadapter.res jacknetadapter.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack\netadapter" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add library="libsamplerate_x86.a" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jacknetadapter.res jacknetadapter.rc" />
</ExtraCommands>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-enable-auto-import" />
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
</Linker>
<Unit filename="..\common\JackAudioAdapter.cpp" />
<Unit filename="..\common\JackAudioAdapterInterface.cpp" />
<Unit filename="..\common\JackLibSampleRateResampler.cpp" />
<Unit filename="..\common\JackNetAdapter.cpp" />
<Unit filename="..\common\JackResampler.cpp" />
<Unit filename="jacknetadapter.rc">
<Option compilerVar="WINDRES" />
</Unit>
<Extensions>
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
<code_completion />
<envvars />
<debugger />
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 176
windows/jack_netdriver.cbp View File

@@ -1,176 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_netdriver" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack\jack_net" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack\jack_net" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack\jack_net" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack\jack_net" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jacknetdriver.res jacknetdriver.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack\jack_net" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Debug\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Debug/jacknetdriver.res jacknetdriver.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack\jack_net" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jacknetdriver.res jacknetdriver.rc" />
</ExtraCommands>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add option="-enable-auto-import" />
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
<Add library="ws2_32" />
</Linker>
<Unit filename="..\common\JackNetDriver.cpp" />
<Unit filename="jacknetdriver.rc">
<Option compilerVar="WINDRES" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 169
windows/jack_netmanager.cbp View File

@@ -1,169 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_netmanager" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack\netmanager" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjackserver64" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack\netmanager" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug64\bin" />
<Add library="libjackserver64" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack\netmanager" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release64\bin" />
<Add library="libjackserver64" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack\netmanager" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release\bin" />
<Add option="-m32" />
<Add library="libjackserver" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jacknetmanager.res jacknetmanager.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack\netmanager" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Debug\bin" />
<Add option="-m32" />
<Add library="libjackserver" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Debug/jacknetmanager.res jacknetmanager.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack\netmanager" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add directory="Release\bin" />
<Add option="-m32" />
<Add library="libjackserver" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jacknetmanager.res jacknetmanager.rc" />
</ExtraCommands>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add option="-enable-auto-import" />
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
<Add library="ws2_32" />
</Linker>
<Unit filename="..\common\JackNetManager.cpp" />
<Unit filename="jacknetmanager.rc">
<Option compilerVar="WINDRES" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 182
windows/jack_netonedriver.cbp View File

@@ -1,182 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_netonedriver" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack\jack_netone" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack\jack_netone" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack\jack_netone" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjackserver64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack\jack_netone" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Release/jacknetonedriver.res jacknetonedriver.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack\jack_netone" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Debug\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Debug/jacknetonedriver.res jacknetonedriver.rc" />
</ExtraCommands>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack\jack_netone" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\" />
<Option type="3" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DBUILD_DLL" />
<Add option="-DJACK_MONITOR" />
<Add option="-DSERVER_SIDE" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjackserver" />
<Add directory="Release\bin" />
</Linker>
<ExtraCommands>
<Add before="windres -F pe-i386 -O coff -o Debug/jacknetonedriver.res jacknetonedriver.rc" />
</ExtraCommands>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
</Compiler>
<Linker>
<Add option="-enable-auto-import" />
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
<Add library="ws2_32" />
</Linker>
<Unit filename="..\common\JackNetOneDriver.cpp" />
<Unit filename="..\common\netjack.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\common\netjack_packet.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="jacknetonedriver.rc">
<Option compilerVar="WINDRES" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<lib_finder disable_auto="1" />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

+ 0
- 183
windows/jack_netsource.cbp View File

@@ -1,183 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_project_file>
<FileVersion major="1" minor="6" />
<Project>
<Option title="jack_netsource" />
<Option pch_mode="2" />
<Option compiler="mingw_64" />
<Build>
<Target title="Win32 Release 64bits">
<Option output="Release64\bin\jack_netsource" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\netsource" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DNO_JACK_ERROR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add library="libsamplerate_x86_64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 64bits">
<Option output="Debug64\bin\jack_netsource" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug64\netsource" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-DNO_JACK_ERROR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add library="libsamplerate_x86_64" />
<Add directory="Debug64\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 64bits">
<Option output="Release64\bin\jack_netsource" prefix_auto="1" extension_auto="1" />
<Option object_output="Release64\netsource" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-DJACK_MONITOR" />
<Add option="-DNO_JACK_ERROR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="libjack64" />
<Add library="libsamplerate_x86_64" />
<Add directory="Release64\bin" />
</Linker>
</Target>
<Target title="Win32 Release 32bits">
<Option output="Release\bin\jack_netsource" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\netsource" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DNO_JACK_ERROR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add library="libsamplerate_x86" />
<Add directory="Release\bin" />
</Linker>
</Target>
<Target title="Win32 Debug 32bits">
<Option output="Debug\bin\jack_netsource" prefix_auto="1" extension_auto="1" />
<Option object_output="Debug\netsource" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-Wall" />
<Add option="-g" />
<Add option="-m32" />
<Add option="-DNO_JACK_ERROR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add library="libsamplerate_x86" />
<Add directory="Debug\bin" />
</Linker>
</Target>
<Target title="Win32 Profiling 32bits">
<Option output="Release\bin\jack_netsource" prefix_auto="1" extension_auto="1" />
<Option object_output="Release\netsource" />
<Option type="1" />
<Option compiler="mingw_64" />
<Compiler>
<Add option="-O2" />
<Add option="-Wall" />
<Add option="-m32" />
<Add option="-DJACK_MONITOR" />
<Add option="-DNO_JACK_ERROR" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add option="-m32" />
<Add library="libjack" />
<Add library="libsamplerate_x86" />
<Add directory="Release\bin" />
</Linker>
</Target>
</Build>
<Compiler>
<Add option="-Wall" />
<Add directory="..\example-clients" />
<Add directory="..\windows" />
<Add directory="..\common\jack" />
<Add directory="..\common" />
</Compiler>
<Linker>
<Add library="kernel32" />
<Add library="user32" />
<Add library="gdi32" />
<Add library="winspool" />
<Add library="comdlg32" />
<Add library="advapi32" />
<Add library="shell32" />
<Add library="ole32" />
<Add library="oleaut32" />
<Add library="uuid" />
<Add library="odbc32" />
<Add library="odbccp32" />
<Add library="ws2_32" />
</Linker>
<Unit filename="..\common\netjack_packet.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="..\example-clients\netsource.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="getopt.c">
<Option compilerVar="CC" />
</Unit>
<Unit filename="getopt1.c">
<Option compilerVar="CC" />
</Unit>
<Extensions>
<code_completion />
<envvars />
<debugger />
<AutoVersioning>
<Scheme minor_max="10" build_max="0" rev_max="0" rev_rand_max="10" build_times_to_increment_minor="100" />
<Settings autoincrement="1" date_declarations="1" do_auto_increment="0" ask_to_increment="0" language="C++" svn="0" svn_directory="" header_path="version.h" />
<Changes_Log show_changes_editor="0" app_title="released version %M.%m.%b of %p" changeslog_path="ChangesLog.txt" />
</AutoVersioning>
</Extensions>
</Project>
</CodeBlocks_project_file>

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save