git-svn-id: http://subversion.jackaudio.org/jack/jack2/branches/libjacknet@3967 0c269be4-1314-0410-8aa9-9f06e86f4224tags/1.9.8
@@ -19,202 +19,226 @@ Romain Moret | |||
Florian Faber | |||
Michael Voigt | |||
Torben Hohn | |||
Paul Davis | |||
Peter L Jones | |||
Devin Anderson | |||
Josh Green | |||
Paul Davis | |||
Peter L Jones | |||
Devin Anderson | |||
Josh Green | |||
Mario Lang | |||
Arnold Krille | |||
--------------------------- | |||
Jackdmp changes log | |||
--------------------------- | |||
--------------------------- | |||
2010-03-24 Stephane Letz <letz@grame.fr> | |||
* On Windows, now use TRE library for regexp (BSD license instead of GPL license). | |||
2010-03-19 Stephane Letz <letz@grame.fr> | |||
* Fix some file header to have library side code use LGPL. | |||
* Apply srcfactor.diff patch for ticket #162. | |||
2010-03-06 Stephane Letz <letz@grame.fr> | |||
* Arnold Krille firewire patch. | |||
* Raise JACK_DRIVER_PARAM_STRING_MAX and JACK_PARAM_STRING_MAX to 127 otherwise some audio drivers cannot be loaded on OSX. | |||
2010-03-04 Stephane Letz <letz@grame.fr> | |||
* Correct JackMachServerChannel::Execute : keep running even in error cases. | |||
* Raise JACK_PROTOCOL_VERSION number. | |||
2010-03-03 Stephane Letz <letz@grame.fr> | |||
* Correct JackGraphManager::DeactivatePort. | |||
2010-03-02 Stephane Letz <letz@grame.fr> | |||
* Improve JackCoreAudioDriver and JackCoreAudioAdapter : when no devices are described, takes default input and output and aggregate them. | |||
* Improve JackCoreAudioDriver and JackCoreAudioAdapter : when no devices are described, takes default input and output and aggregate them. | |||
2010-02-15 Stephane Letz <letz@grame.fr> | |||
* Version 1.9.6 started. | |||
* Version 1.9.6 started. | |||
2010-01-29 Gabriel M. Beddingfield <gabriel@teuton.org> | |||
* Change JackEngineProfiling and JackAudioAdapterInterface gnuplot scripts to output SVG instead of PDF. | |||
* Change JackEngineProfiling and JackAudioAdapterInterface gnuplot scripts to output SVG instead of PDF. | |||
2009-12-15 Stephane Letz <letz@grame.fr> | |||
* Shared memory manager was calling abort in case of fatal error, now return an error in caller. | |||
* Shared memory manager was calling abort in case of fatal error, now return an error in caller. | |||
2009-12-13 Stephane Letz <letz@grame.fr> | |||
* Mario Lang alsa_io time calculation overflow patch. | |||
* Mario Lang alsa_io time calculation overflow patch. | |||
2009-12-10 Stephane Letz <letz@grame.fr> | |||
* Use a QUIT notification to properly quit the server channel, the server channel thread can then be 'stopped' instead of 'canceled'. | |||
* Use a QUIT notification to properly quit the server channel, the server channel thread can then be 'stopped' instead of 'canceled'. | |||
2009-12-09 Stephane Letz <letz@grame.fr> | |||
* When threads are cancelled, the exception has to be rethrown. | |||
* When threads are cancelled, the exception has to be rethrown. | |||
2009-12-08 Stephane Letz <letz@grame.fr> | |||
* Josh Green ALSA driver capture only patch. | |||
* Josh Green ALSA driver capture only patch. | |||
2009-12-03 Stephane Letz <letz@grame.fr> | |||
* Fix JackCoreMidiDriver::ReadProcAux when ring buffer is full (thanks Devin Anderson). | |||
* Fix JackCoreMidiDriver::ReadProcAux when ring buffer is full (thanks Devin Anderson). | |||
2009-12-02 Stephane Letz <letz@grame.fr> | |||
* Special code in JackCoreAudio driver to handle completely buggy Digidesign CoreAudio user-land driver. | |||
* Ensure that client-side message buffer thread calls thread_init callback if/when it is set by the client (backport of JACK1 rev 3838). | |||
* Check dynamic port-max value. | |||
* Special code in JackCoreAudio driver to handle completely buggy Digidesign CoreAudio user-land driver. | |||
* Ensure that client-side message buffer thread calls thread_init callback if/when it is set by the client (backport of JACK1 rev 3838). | |||
* Check dynamic port-max value. | |||
2009-12-01 Stephane Letz <letz@grame.fr> | |||
* Fix port_rename callback : now both old name and new name are given as parameters. | |||
* Fix port_rename callback : now both old name and new name are given as parameters. | |||
2009-11-30 Stephane Letz <letz@grame.fr> | |||
* Devin Anderson patch for Jack FFADO driver issues with lost MIDI bytes between periods (and more). | |||
* Devin Anderson patch for Jack FFADO driver issues with lost MIDI bytes between periods (and more). | |||
2009-11-29 Stephane Letz <letz@grame.fr> | |||
* More robust sample rate change handling code in JackCoreAudioDriver. | |||
* More robust sample rate change handling code in JackCoreAudioDriver. | |||
2009-11-24 Stephane Letz <letz@grame.fr> | |||
* Dynamic choice of maximum port number. | |||
* Dynamic choice of maximum port number. | |||
2009-11-23 Stephane Letz <letz@grame.fr> | |||
* Peter L Jones patch for NetJack1 compilation on Windows. | |||
* Peter L Jones patch for NetJack1 compilation on Windows. | |||
2009-11-20 Stephane Letz <letz@grame.fr> | |||
* Version 1.9.5 started. | |||
* Client debugging code improved. | |||
* Version 1.9.5 started. | |||
* Client debugging code improved. | |||
2009-11-18 Stephane Letz <letz@grame.fr> | |||
* Sync JackCoreAudioAdapter code with JackCoreAudioDriver. | |||
* Sync JackCoreAudioAdapter code with JackCoreAudioDriver. | |||
2009-11-17 Stephane Letz <letz@grame.fr> | |||
* In JackCoreAudio driver, clock drift compensation in aggregated devices working. | |||
* In JackCoreAudio driver, clock drift compensation semantic changed a bit : when on, does not activate if not needed (same clock domain). | |||
* In JackCoreAudio driver, clock drift compensation in aggregated devices working. | |||
* In JackCoreAudio driver, clock drift compensation semantic changed a bit : when on, does not activate if not needed (same clock domain). | |||
2009-11-16 Stephane Letz <letz@grame.fr> | |||
* In JackCoreAudio driver, (possibly) clock drift compensation when needed in aggregated devices. | |||
* In JackCoreAudio driver, (possibly) clock drift compensation when needed in aggregated devices. | |||
2009-11-14 Stephane Letz <letz@grame.fr> | |||
* Sync with JACK1 : -r parameter now used for no-realtime, realtime (-R) is now default, usable backend given vie platform. | |||
* Sync with JACK1 : -r parameter now used for no-realtime, realtime (-R) is now default, usable backend given vie platform. | |||
2009-11-13 Stephane Letz <letz@grame.fr> | |||
* Better memory allocation error checking in ringbuffer.c, weak import improvements. | |||
* Memory allocation error checking for jack_client_new and jack_client_open (server and client side). | |||
* Memory allocation error checking in server for RPC. | |||
* Simplify server temporary mode : now use a JackTemporaryException. | |||
* Lock/Unlock shared memory segments (to test...). | |||
* Better memory allocation error checking in ringbuffer.c, weak import improvements. | |||
* Memory allocation error checking for jack_client_new and jack_client_open (server and client side). | |||
* Memory allocation error checking in server for RPC. | |||
* Simplify server temporary mode : now use a JackTemporaryException. | |||
* Lock/Unlock shared memory segments (to test...). | |||
2009-11-12 Stephane Letz <letz@grame.fr> | |||
* Better memory allocation error checking on client (library) side. | |||
* Better memory allocation error checking on client (library) side. | |||
2009-11-11 Stephane Letz <letz@grame.fr> | |||
* Correct JackCoreAudio driver when empty strings are given as -C, -P or -d parameter. | |||
* Correct JackCoreAudio driver when empty strings are given as -C, -P or -d parameter. | |||
2009-11-10 Stephane Letz <letz@grame.fr> | |||
* Correct JackInfoShutdownCallback prototype, two new JackClientProcessFailure and JackClientZombie JackStatus code. | |||
* Correct JackInfoShutdownCallback prototype, two new JackClientProcessFailure and JackClientZombie JackStatus code. | |||
2009-11-09 Stephane Letz <letz@grame.fr> | |||
* Correct JackGraphManager::GetBuffer for the "client loop with one connection" case : buffer must be copied. | |||
* Correct JackGraphManager::GetBuffer for the "client loop with one connection" case : buffer must be copied. | |||
2009-11-07 Stephane Letz <letz@grame.fr> | |||
* Fix AcquireRealTime and DropRealTime: now distinguish when called from another thread (AcquireRealTime/DropRealTime) and from the thread itself (AcquireSelfRealTime/DropSelfRealTime). | |||
* Correct JackPosixThread::StartImp : thread priority setting now done in the RT case only. | |||
* Fix AcquireRealTime and DropRealTime: now distinguish when called from another thread (AcquireRealTime/DropRealTime) and from the thread itself (AcquireSelfRealTime/DropSelfRealTime). | |||
* Correct JackPosixThread::StartImp : thread priority setting now done in the RT case only. | |||
2009-11-06 Stephane Letz <letz@grame.fr> | |||
* Correctly save and restore RT mode state in freewheel mode. | |||
* Correct freewheel code on client side. | |||
* Correctly save and restore RT mode state in freewheel mode. | |||
* Correct freewheel code on client side. | |||
2009-11-05 Stephane Letz <letz@grame.fr> | |||
* No reason to make jack_on_shutdown deprecated, so revert the incorrect change. | |||
* Thread AcquireRealTime and DropRealTime were (incorrectly) using fThread field. Use pthread_self()) (or GetCurrentThread() on Windows) to get the calling thread. | |||
* No reason to make jack_on_shutdown deprecated, so revert the incorrect change. | |||
* Thread AcquireRealTime and DropRealTime were (incorrectly) using fThread field. Use pthread_self()) (or GetCurrentThread() on Windows) to get the calling thread. | |||
2009-10-30 Stephane Letz <letz@grame.fr> | |||
* In JackCoreAudioDriver, improve management of input/output channels: -1 is now used internally to indicate a wanted max value. | |||
* In JackCoreAudioDriver::OpenAUHAL, correct stream format setup and cleanup. | |||
* Correct crash bug in JackAudioAdapterInterface when not input is used in adapter (temporary fix...) | |||
* Sync JackCoreAudioAdapter code on JackCoreAudioDriver one. | |||
* JACK_SCHED_POLICY switched to SCHED_FIFO. | |||
* Now can aggregate device that are themselves AD. | |||
* In JackCoreAudioDriver, improve management of input/output channels: -1 is now used internally to indicate a wanted max value. | |||
* In JackCoreAudioDriver::OpenAUHAL, correct stream format setup and cleanup. | |||
* Correct crash bug in JackAudioAdapterInterface when not input is used in adapter (temporary fix...) | |||
* Sync JackCoreAudioAdapter code on JackCoreAudioDriver one. | |||
* JACK_SCHED_POLICY switched to SCHED_FIFO. | |||
* Now can aggregate device that are themselves AD. | |||
2009-10-29 Stephane Letz <letz@grame.fr> | |||
* In JackCoreAudioDriver::Start, wait for the audio driver to effectively start (use the MeasureCallback). | |||
* In JackCoreAudioDriver::Start, wait for the audio driver to effectively start (use the MeasureCallback). | |||
2009-10-28 Stephane Letz <letz@grame.fr> | |||
* In JackCoreAudioDriver, force the SR value to the wanted one *before* creating aggregate device (otherwise creation will fail). | |||
* In JackCoreAudioDriver, better cleanup of AD when intermediate open failure. | |||
* In JackCoreAudioDriver, force the SR value to the wanted one *before* creating aggregate device (otherwise creation will fail). | |||
* In JackCoreAudioDriver, better cleanup of AD when intermediate open failure. | |||
2009-10-27 Stephane Letz <letz@grame.fr> | |||
* Dynamic system version detection in JackCoreAudioDriver to either create public or private aggregate device. | |||
* Dynamic system version detection in JackCoreAudioDriver to either create public or private aggregate device. | |||
2009-10-26 Stephane Letz <letz@grame.fr> | |||
* Implement "hog mode" (exclusive access of the audio device) in JackCoreAudioDriver. | |||
* Fix jack_set_sample_rate_callback to have he same behavior as in JACK1. | |||
* Implement "hog mode" (exclusive access of the audio device) in JackCoreAudioDriver. | |||
* Fix jack_set_sample_rate_callback to have he same behavior as in JACK1. | |||
2009-10-25 Stephane Letz <letz@grame.fr> | |||
* Improve aggregate device management in JackCoreAudioDriver : now a "private" device only and cleanup properly. | |||
* Aggregate device code added to JackCoreAudioAdapter. | |||
* Improve aggregate device management in JackCoreAudioDriver : now a "private" device only and cleanup properly. | |||
* Aggregate device code added to JackCoreAudioAdapter. | |||
2009-10-23 Stephane Letz <letz@grame.fr> | |||
* Correct JackProcessSync::LockedTimedWait. | |||
* Correct JACK_MESSAGE_SIZE value, particularly in OSX RPC code. | |||
* Now start server channel thread only when backend has been started (so in JackServer::Start). Should solve race conditions at start time. | |||
* jack_verbose moved to JackGlobals class. | |||
* Correct JackProcessSync::LockedTimedWait. | |||
* Correct JACK_MESSAGE_SIZE value, particularly in OSX RPC code. | |||
* Now start server channel thread only when backend has been started (so in JackServer::Start). Should solve race conditions at start time. | |||
* jack_verbose moved to JackGlobals class. | |||
2009-10-22 Stephane Letz <letz@grame.fr> | |||
* Correct jackdmp.cpp (failures case were not correct..). Improve JackCoreAudioDriver code. Raise default port number to 2048. | |||
* Correct jackdmp.cpp (failures case were not correct..). Improve JackCoreAudioDriver code. Raise default port number to 2048. | |||
2009-10-20 Stephane Letz <letz@grame.fr> | |||
* Add a string parameter to server ==> client notification, add a new JackInfoShutdownCallback type. | |||
* CoreAudio backend now issue a JackInfoShutdownCallback when an unrecoverable error is detected (sampling rate change, stream configuration changeÉ) | |||
* Add a string parameter to server ==> client notification, add a new JackInfoShutdownCallback type. | |||
* CoreAudio backend now issue a JackInfoShutdownCallback when an unrecoverable error is detected (sampling rate change, stream configuration changeÉ) | |||
2009-10-17 Stephane Letz <letz@grame.fr> | |||
* Correct server temporary mode : now set a global and quit after server/client message handling is finished. | |||
* Correct server temporary mode : now set a global and quit after server/client message handling is finished. | |||
2009-10-15 Stephane Letz <letz@grame.fr> | |||
* Change CoreAudio notification thread setup for OSX Snow Leopard. | |||
* Change CoreAudio notification thread setup for OSX Snow Leopard. | |||
2009-09-18 Stephane Letz <letz@grame.fr> | |||
* Simplify transport in NetJack2: master only can control transport. | |||
* Simplify transport in NetJack2: master only can control transport. | |||
2009-09-15 Stephane Letz <letz@grame.fr> | |||
* Correct CPU timing in JackNetDriver, now take cycle begin time after Read. | |||
* Correct CPU timing in JackNetDriver, now take cycle begin time after Read. | |||
* Fix issues in JackNetDriver::DecodeTransportData and JackNetDriver::Initialize. | |||
2009-08-28 Stephane Letz <letz@grame.fr> | |||
@@ -570,7 +594,7 @@ Mario Lang | |||
2008-11-21 Stephane Letz <letz@grame.fr> | |||
* Report ringbuffer.c fixes from JACK1. | |||
* Better isolation of server and clients system resources to allow starting the server in several user account at the same time. | |||
* Better isolation of server and clients system resources to allow starting the server in several user account at the same time. | |||
* Correct ressource cleanup in case of driver open failure. | |||
2008-11-19 Stephane Letz <letz@grame.fr> | |||
@@ -1,21 +1,21 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackAtomicArrayState__ | |||
#define __JackAtomicArrayState__ | |||
@@ -88,7 +88,7 @@ | |||
#define ALL_CLIENTS -1 // for notification | |||
#define JACK_PROTOCOL_VERSION 7 | |||
#define JACK_PROTOCOL_VERSION 8 | |||
#define SOCKET_TIME_OUT 5 // in sec | |||
#define DRIVER_OPEN_TIMEOUT 5 // in sec | |||
@@ -47,7 +47,7 @@ typedef enum | |||
#define JACK_PARAM_MAX (JackParamBool + 1) | |||
/** @brief Max length of string parameter value, excluding terminating nul char */ | |||
#define JACK_PARAM_STRING_MAX 63 | |||
#define JACK_PARAM_STRING_MAX 127 | |||
/** @brief Type for parameter value */ | |||
/* intentionally similar to jack_driver_param_value_t */ | |||
@@ -1,23 +1,23 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2008 Grame | |||
Copyright (C) 2008 Nedko Arnaudov | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2008 Grame | |||
Copyright (C) 2008 Nedko Arnaudov | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include <stdarg.h> | |||
#include <stdio.h> | |||
@@ -1,22 +1,21 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2008 Grame | |||
Copyright (C) 2008 Nedko Arnaudov | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2008 Grame | |||
Copyright (C) 2008 Nedko Arnaudov | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
@@ -385,7 +385,7 @@ void JackGraphManager::ActivatePort(jack_port_id_t port_index) | |||
void JackGraphManager::DeactivatePort(jack_port_id_t port_index) | |||
{ | |||
JackPort* port = GetPort(port_index); | |||
port->fFlags = (JackPortFlags)(port->fFlags | ~JackPortIsActive); | |||
port->fFlags = (JackPortFlags)(port->fFlags & ~JackPortIsActive); | |||
} | |||
void JackGraphManager::GetInputPorts(int refnum, jack_int_t* res) | |||
@@ -1,22 +1,21 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2009 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include "JackError.h" | |||
#include "JackShmMem.h" | |||
@@ -1,22 +1,21 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2009 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackShmMem__ | |||
#define __JackShmMem__ | |||
@@ -194,7 +194,7 @@ namespace Jack { | |||
} | |||
if (fgets(buf, sizeof(buf), in) == NULL) { | |||
fclose(in); | |||
pclose(in); | |||
return -1; | |||
} | |||
@@ -202,7 +202,7 @@ namespace Jack { | |||
if (buf[len - 1] != '\n') { | |||
/* didn't get a whole line */ | |||
fclose(in); | |||
pclose(in); | |||
return -1; | |||
} | |||
@@ -210,7 +210,7 @@ namespace Jack { | |||
memcpy(jack_tmpdir, buf, len - 1); | |||
jack_tmpdir[len - 1] = '\0'; | |||
fclose(in); | |||
pclose(in); | |||
return 0; | |||
} | |||
#endif | |||
@@ -1,33 +1,36 @@ | |||
/* | |||
Copyright (C) 2009 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
//============================================================================= | |||
// MuseScore | |||
// Linux Music Score Editor | |||
// $Id: | |||
// | |||
// jackWeakAPI based on code from Stéphane Letz (Grame) | |||
// partly based on Julien Pommier (PianoTeq : http://www.pianoteq.com/) code. | |||
// | |||
// Copyright (C) 2002-2007 Werner Schweer and others | |||
// Copyright (C) 2009 Grame | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
// This program is free software; you can redistribute it and/or modify | |||
// it under the terms of the GNU Lesser General Public License as published by | |||
// the Free Software Foundation; either version 2.1 of the License, or | |||
// (at your option) any later version. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
// This program is distributed in the hope that it will be useful, | |||
// but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
// GNU Lesser General Public License for more details. | |||
*/ | |||
/* | |||
Completed from Julien Pommier (PianoTeq : http://www.pianoteq.com/) code. | |||
*/ | |||
// You should have received a copy of the GNU Lesser General Public License | |||
// along with this program; if not, write to the Free Software | |||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
#include <jack/jack.h> | |||
#include <jack/thread.h> | |||
#include <jack/midiport.h> | |||
#include <math.h> | |||
#ifndef WIN32 | |||
#include <dlfcn.h> | |||
#endif | |||
#include <stdlib.h> | |||
#include <cassert> | |||
#include <iostream> | |||
/* dynamically load libjack and forward all registered calls to libjack | |||
@@ -40,13 +43,21 @@ typedef void *(*thread_routine)(void*); | |||
using std::cerr; | |||
int libjack_is_present = 0; // public symbol, similar to what relaytool does. | |||
#ifdef WIN32 | |||
HMODULE libjack_handle = 0; | |||
#else | |||
static void *libjack_handle = 0; | |||
#endif | |||
static void __attribute__((constructor)) tryload_libjack() | |||
{ | |||
if (getenv("SKIP_LIBJACK") == 0) { // just in case libjack is causing troubles.. | |||
#ifdef __APPLE__ | |||
libjack_handle = dlopen("libjack.0.dylib", RTLD_LAZY); | |||
#elif defined(WIN32) | |||
libjack_handle = LoadLibrary("libjack.dll"); | |||
#else | |||
libjack_handle = dlopen("libjack.so.0", RTLD_LAZY); | |||
#endif | |||
@@ -59,12 +70,22 @@ void *load_jack_function(const char *fn_name) | |||
{ | |||
void *fn = 0; | |||
if (!libjack_handle) { | |||
std::cerr << "libjack not found, so do not try to load " << fn_name << " ffs !\n"; | |||
fprintf (stderr, "libjack not found, so do not try to load %s ffs !\n", fn_name); | |||
return 0; | |||
} | |||
#ifdef WIN32 | |||
fn = (void*)GetProcAddress(libjack_handle, fn_name); | |||
#else | |||
fn = dlsym(libjack_handle, fn_name); | |||
#endif | |||
if (!fn) { | |||
std::cerr << "could not dlsym(" << libjack_handle << "), " << dlerror() << "\n"; | |||
#ifdef WIN32 | |||
char* lpMsgBuf; | |||
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,NULL,GetLastError(),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf,0,NULL ); | |||
fprintf (stderr, "could not GetProcAddress( %s ), %s \n", fn_name, lpMsgBuf) ; | |||
#else | |||
fprintf (stderr, "could not dlsym( %s ), %s \n", fn_name, dlerror()) ; | |||
#endif | |||
} | |||
return fn; | |||
} | |||
@@ -78,6 +99,15 @@ void *load_jack_function(const char *fn_name) | |||
else return (return_type)-1; \ | |||
} | |||
#define DECL_FUNCTION_NULL(return_type, fn_name, arguments_types, arguments) \ | |||
typedef return_type (*fn_name##_ptr_t)arguments_types; \ | |||
return_type fn_name arguments_types { \ | |||
static fn_name##_ptr_t fn = 0; \ | |||
if (fn == 0) { fn = (fn_name##_ptr_t)load_jack_function(#fn_name); } \ | |||
if (fn) return (*fn)arguments; \ | |||
else return (return_type)0; \ | |||
} | |||
#define DECL_VOID_FUNCTION(fn_name, arguments_types, arguments) \ | |||
typedef void (*fn_name##_ptr_t)arguments_types; \ | |||
void fn_name arguments_types { \ | |||
@@ -86,14 +116,15 @@ void *load_jack_function(const char *fn_name) | |||
if (fn) (*fn)arguments; \ | |||
} | |||
DECL_VOID_FUNCTION(jack_get_version, (int *major_ptr, int *minor_ptr, int *micro_ptr, int *proto_ptr), (major_ptr, minor_ptr, micro_ptr, proto_ptr)); | |||
DECL_FUNCTION(const char *, jack_get_version_string, (), ()); | |||
DECL_FUNCTION(jack_client_t *, jack_client_open, (const char *client_name, jack_options_t options, jack_status_t *status, ...), | |||
DECL_FUNCTION_NULL(const char *, jack_get_version_string, (), ()); | |||
DECL_FUNCTION_NULL(jack_client_t *, jack_client_open, (const char *client_name, jack_options_t options, jack_status_t *status, ...), | |||
(client_name, options, status)); | |||
DECL_FUNCTION(int, jack_client_close, (jack_client_t *client), (client)); | |||
DECL_FUNCTION(jack_client_t *, jack_client_new, (const char *client_name), (client_name)); | |||
DECL_FUNCTION_NULL(jack_client_t *, jack_client_new, (const char *client_name), (client_name)); | |||
DECL_FUNCTION(int, jack_client_name_size, (), ()); | |||
DECL_FUNCTION(char*, jack_get_client_name, (jack_client_t *client), (client)); | |||
DECL_FUNCTION_NULL(char*, jack_get_client_name, (jack_client_t *client), (client)); | |||
DECL_FUNCTION(int, jack_internal_client_new, (const char *client_name, | |||
const char *load_name, | |||
const char *load_init), (client_name, load_name, load_init)); | |||
@@ -146,21 +177,21 @@ DECL_FUNCTION(int, jack_set_xrun_callback, (jack_client_t *client, | |||
void *arg), (client, xrun_callback, arg)); | |||
DECL_FUNCTION(int, jack_activate, (jack_client_t *client), (client)); | |||
DECL_FUNCTION(int, jack_deactivate, (jack_client_t *client), (client)); | |||
DECL_FUNCTION(jack_port_t *, jack_port_register, (jack_client_t *client, const char *port_name, const char *port_type, | |||
DECL_FUNCTION_NULL(jack_port_t *, jack_port_register, (jack_client_t *client, const char *port_name, const char *port_type, | |||
unsigned long flags, unsigned long buffer_size), | |||
(client, port_name, port_type, flags, buffer_size)); | |||
DECL_FUNCTION(int, jack_port_unregister, (jack_client_t *client, jack_port_t* port), (client, port)); | |||
DECL_FUNCTION(void *, jack_port_get_buffer, (jack_port_t *port, jack_nframes_t nframes), (port, nframes)); | |||
DECL_FUNCTION(const char*, jack_port_name, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION(const char*, jack_port_short_name, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION_NULL(void *, jack_port_get_buffer, (jack_port_t *port, jack_nframes_t nframes), (port, nframes)); | |||
DECL_FUNCTION_NULL(const char*, jack_port_name, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION_NULL(const char*, jack_port_short_name, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION(int, jack_port_flags, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION(const char*, jack_port_type, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION_NULL(const char*, jack_port_type, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION(jack_port_type_id_t, jack_port_type_id, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION(int, jack_port_is_mine, (const jack_client_t *client, const jack_port_t* port), (client, port)); | |||
DECL_FUNCTION(int, jack_port_connected, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION(int, jack_port_connected_to, (const jack_port_t *port, const char *port_name), (port, port_name)); | |||
DECL_FUNCTION(const char**, jack_port_get_connections, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION(const char**, jack_port_get_all_connections, (const jack_client_t *client,const jack_port_t *port), (client, port)); | |||
DECL_FUNCTION_NULL(const char**, jack_port_get_connections, (const jack_port_t *port), (port)); | |||
DECL_FUNCTION_NULL(const char**, jack_port_get_all_connections, (const jack_client_t *client,const jack_port_t *port), (client, port)); | |||
DECL_FUNCTION(int, jack_port_tie, (jack_port_t *src, jack_port_t *dst), (src, dst)); | |||
DECL_FUNCTION(int, jack_port_untie, (jack_port_t *port), (port)); | |||
DECL_FUNCTION(jack_nframes_t, jack_port_get_latency, (jack_port_t *port), (port)); | |||
@@ -185,10 +216,10 @@ DECL_FUNCTION(int, jack_port_type_size,(),()); | |||
DECL_FUNCTION(jack_nframes_t, jack_get_sample_rate, (jack_client_t *client), (client)); | |||
DECL_FUNCTION(jack_nframes_t, jack_get_buffer_size, (jack_client_t *client), (client)); | |||
DECL_FUNCTION(const char**, jack_get_ports, (jack_client_t *client, const char *port_name_pattern, const char * type_name_pattern, | |||
DECL_FUNCTION_NULL(const char**, jack_get_ports, (jack_client_t *client, const char *port_name_pattern, const char * type_name_pattern, | |||
unsigned long flags), (client, port_name_pattern, type_name_pattern, flags)); | |||
DECL_FUNCTION(jack_port_t *, jack_port_by_name, (jack_client_t * client, const char *port_name), (client, port_name)); | |||
DECL_FUNCTION(jack_port_t *, jack_port_by_id, (jack_client_t *client, jack_port_id_t port_id), (client, port_id)); | |||
DECL_FUNCTION_NULL(jack_port_t *, jack_port_by_name, (jack_client_t * client, const char *port_name), (client, port_name)); | |||
DECL_FUNCTION_NULL(jack_port_t *, jack_port_by_id, (jack_client_t *client, jack_port_id_t port_id), (client, port_id)); | |||
DECL_FUNCTION(int, jack_engine_takeover_timebase, (jack_client_t * client), (client)); | |||
DECL_FUNCTION(jack_nframes_t, jack_frames_since_cycle_start, (const jack_client_t * client), (client)); | |||
@@ -198,7 +229,7 @@ DECL_FUNCTION(jack_time_t, jack_frames_to_time, (const jack_client_t *client, ja | |||
DECL_FUNCTION(jack_nframes_t, jack_frame_time, (const jack_client_t *client), (client)); | |||
DECL_FUNCTION(jack_nframes_t, jack_last_frame_time, (const jack_client_t *client), (client)); | |||
DECL_FUNCTION(float, jack_cpu_load, (jack_client_t *client), (client)); | |||
DECL_FUNCTION(pthread_t, jack_client_thread_id, (jack_client_t *client), (client)); | |||
DECL_FUNCTION_NULL(pthread_t, jack_client_thread_id, (jack_client_t *client), (client)); | |||
DECL_VOID_FUNCTION(jack_set_error_function, (print_function fun), (fun)); | |||
DECL_VOID_FUNCTION(jack_set_info_function, (print_function fun), (fun)); | |||
@@ -256,6 +287,6 @@ DECL_FUNCTION(jack_nframes_t, jack_midi_get_event_count, (void* port_buffer), (p | |||
DECL_FUNCTION(int, jack_midi_event_get, (jack_midi_event_t* event, void* port_buffer, jack_nframes_t event_index), (event, port_buffer, event_index)) ; | |||
DECL_VOID_FUNCTION(jack_midi_clear_buffer, (void* port_buffer), (port_buffer)); | |||
DECL_FUNCTION(size_t, jack_midi_max_event_size, (void* port_buffer), (port_buffer)); | |||
DECL_FUNCTION(jack_midi_data_t*, jack_midi_event_reserve, (void* port_buffer, jack_nframes_t time, size_t data_size), (port_buffer, time, data_size)); | |||
DECL_FUNCTION_NULL(jack_midi_data_t*, jack_midi_event_reserve, (void* port_buffer, jack_nframes_t time, size_t data_size), (port_buffer, time, data_size)); | |||
DECL_FUNCTION(int, jack_midi_event_write, (void* port_buffer, jack_nframes_t time, const jack_midi_data_t* data, size_t data_size), (port_buffer, time, data, data_size)); | |||
DECL_FUNCTION(jack_nframes_t, jack_midi_get_lost_event_count, (void* port_buffer), (port_buffer)); |
@@ -33,7 +33,7 @@ extern "C" | |||
#define JACK_DRIVER_NAME_MAX 15 | |||
#define JACK_DRIVER_PARAM_NAME_MAX 15 | |||
#define JACK_DRIVER_PARAM_STRING_MAX 63 | |||
#define JACK_DRIVER_PARAM_STRING_MAX 127 | |||
#define JACK_DRIVER_PARAM_DESC 255 | |||
#define JACK_PATH_MAX 511 | |||
@@ -48,8 +48,8 @@ typedef enum | |||
/** @brief Max value that jackctl_param_type_t type can have */ | |||
#define JACK_PARAM_MAX (JackParamBool + 1) | |||
/** @brief Max length of string parameter value, excluding terminating nul char */ | |||
#define JACK_PARAM_STRING_MAX 63 | |||
/** @brief Max length of string parameter value, excluding terminating null char */ | |||
#define JACK_PARAM_STRING_MAX 127 | |||
/** @brief Type for parameter value */ | |||
/* intentionally similar to jack_driver_param_value_t */ | |||
@@ -1,24 +1,3 @@ | |||
/* | |||
* Copyright (C) 2003 Paul Davis | |||
* Copyright (C) 2004 Jack O'Quin | |||
* Copyright (C) 2006-2007 Grame | |||
* | |||
* This program is free software; you can redistribute it and/or modify | |||
* it under the terms of the GNU General Public License as published by | |||
* the Free Software Foundation; either version 2 of the License, or | |||
* (at your option) any later version. | |||
* | |||
* This program is distributed in the hope that it will be useful, | |||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
* GNU General Public License for more details. | |||
* | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
* | |||
*/ | |||
/* This module provides a set of abstract shared memory interfaces | |||
* with support using both System V and POSIX shared memory | |||
* implementations. The code is divided into three sections: | |||
@@ -31,6 +10,25 @@ | |||
* set in the ./configure step. | |||
*/ | |||
/* | |||
Copyright (C) 2001-2003 Paul Davis | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include "JackConstants.h" | |||
#ifdef WIN32 | |||
@@ -148,7 +146,7 @@ static int semid = -1; | |||
static int | |||
semaphore_init () {return 0;} | |||
static int | |||
static int | |||
semaphore_add (int value) {return 0;} | |||
#else | |||
@@ -534,7 +532,7 @@ jack_unregister_server (const char *server_name /* unused */) | |||
} | |||
} | |||
jack_shm_unlock_registry (); | |||
jack_shm_unlock_registry (); | |||
return 0; | |||
} | |||
@@ -87,34 +87,31 @@ jack_control_run_method( | |||
{ | |||
if (!jack_controller_start_server(controller_ptr, call)) | |||
{ | |||
jack_error ("Failed to start server"); | |||
} | |||
else | |||
{ | |||
jack_controller_control_send_signal_server_started(); | |||
jack_dbus_error(call, JACK_DBUS_ERROR_GENERIC, "Failed to start server"); | |||
return true; | |||
} | |||
jack_controller_control_send_signal_server_started(); | |||
} | |||
else if (strcmp (call->method_name, "StopServer") == 0) | |||
{ | |||
if (!jack_controller_stop_server(controller_ptr, call)) | |||
{ | |||
jack_error ("Failed to stop server"); | |||
} | |||
else | |||
{ | |||
jack_controller_control_send_signal_server_stopped(); | |||
jack_dbus_error(call, JACK_DBUS_ERROR_GENERIC, "Failed to stop server"); | |||
return true; | |||
} | |||
jack_controller_control_send_signal_server_stopped(); | |||
} | |||
else if (strcmp (call->method_name, "SwitchMaster") == 0) | |||
{ | |||
if (!jack_controller_switch_master(controller_ptr, call)) | |||
{ | |||
jack_error ("Failed to switch master"); | |||
} | |||
else | |||
{ | |||
jack_controller_control_send_signal_server_stopped(); | |||
jack_dbus_error(call, JACK_DBUS_ERROR_GENERIC, "Failed to switch master"); | |||
return true; | |||
} | |||
jack_controller_control_send_signal_server_stopped(); | |||
} | |||
else if (strcmp (call->method_name, "GetLoad") == 0) | |||
{ | |||
@@ -38,6 +38,8 @@ int jack_buffer_size; | |||
int quit = 0; | |||
double resample_mean = 1.0; | |||
double static_resample_factor = 1.0; | |||
double resample_lower_limit = 0.25; | |||
double resample_upper_limit = 4.0; | |||
double *offset_array; | |||
double *window_array; | |||
@@ -388,8 +390,8 @@ int process (jack_nframes_t nframes, void *arg) { | |||
output_offset = (float) offset; | |||
// Clamp a bit. | |||
if( current_resample_factor < 0.25 ) current_resample_factor = 0.25; | |||
if( current_resample_factor > 4 ) current_resample_factor = 4; | |||
if( current_resample_factor < resample_lower_limit ) current_resample_factor = resample_lower_limit; | |||
if( current_resample_factor > resample_upper_limit ) current_resample_factor = resample_upper_limit; | |||
// Now Calculate how many samples we need. | |||
rlen = ceil( ((double)nframes) / current_resample_factor )+2; | |||
@@ -675,6 +677,8 @@ int main (int argc, char *argv[]) { | |||
printf( "selected sample format: %s\n", formats[format].name ); | |||
static_resample_factor = (double) jack_sample_rate / (double) sample_rate; | |||
resample_lower_limit = static_resample_factor * 0.25; | |||
resample_upper_limit = static_resample_factor * 4.0; | |||
resample_mean = static_resample_factor; | |||
offset_array = malloc( sizeof(double) * smooth_size ); | |||
@@ -37,6 +37,8 @@ int jack_buffer_size; | |||
double resample_mean = 1.0; | |||
double static_resample_factor = 1.0; | |||
double resample_lower_limit = 0.25; | |||
double resample_upper_limit = 4.0; | |||
double *offset_array; | |||
double *window_array; | |||
@@ -395,8 +397,8 @@ int process (jack_nframes_t nframes, void *arg) { | |||
output_offset = (float) offset; | |||
// Clamp a bit. | |||
if( current_resample_factor < 0.25 ) current_resample_factor = 0.25; | |||
if( current_resample_factor > 4 ) current_resample_factor = 4; | |||
if( current_resample_factor < resample_lower_limit ) current_resample_factor = resample_lower_limit; | |||
if( current_resample_factor > resample_upper_limit ) current_resample_factor = resample_upper_limit; | |||
// Now Calculate how many samples we need. | |||
rlen = ceil( ((double)nframes) * current_resample_factor )+2; | |||
@@ -666,6 +668,8 @@ int main (int argc, char *argv[]) { | |||
sample_rate = jack_sample_rate; | |||
static_resample_factor = (double) sample_rate / (double) jack_sample_rate; | |||
resample_lower_limit = static_resample_factor * 0.25; | |||
resample_upper_limit = static_resample_factor * 4.0; | |||
resample_mean = static_resample_factor; | |||
offset_array = malloc( sizeof(double) * smooth_size ); | |||
@@ -46,7 +46,6 @@ InternalMetro::InternalMetro(int freq, double max_amp, int dur_arg, int bpm, cha | |||
{ | |||
sample_t scale; | |||
int i, attack_length, decay_length; | |||
double *amp; | |||
int attack_percent = 1, decay_percent = 10; | |||
const char *bpm_string = "bpm"; | |||
@@ -59,7 +58,7 @@ InternalMetro::InternalMetro(int freq, double max_amp, int dur_arg, int bpm, cha | |||
} | |||
if ((client = jack_client_open (client_name, JackNullOption, NULL)) == 0) { | |||
fprintf (stderr, "jack server not running?\n"); | |||
return ; | |||
return; | |||
} | |||
jack_set_process_callback (client, process_audio, this); | |||
@@ -81,11 +80,11 @@ InternalMetro::InternalMetro(int freq, double max_amp, int dur_arg, int bpm, cha | |||
", wave length = %" PRIu32 "\n", tone_length, | |||
wave_length); | |||
*/ | |||
return ; | |||
return; | |||
} | |||
if (attack_length + decay_length > (int)tone_length) { | |||
fprintf (stderr, "invalid attack/decay\n"); | |||
return ; | |||
return; | |||
} | |||
/* Build the wave table */ | |||
@@ -110,7 +109,6 @@ InternalMetro::InternalMetro(int freq, double max_amp, int dur_arg, int bpm, cha | |||
if (jack_activate (client)) { | |||
fprintf(stderr, "cannot activate client"); | |||
return; | |||
} | |||
} | |||
@@ -120,4 +118,6 @@ InternalMetro::~InternalMetro() | |||
jack_port_unregister(client, input_port); | |||
jack_port_unregister(client, output_port); | |||
jack_client_close(client); | |||
free(amp); | |||
free(wave); | |||
} |
@@ -53,6 +53,7 @@ extern "C" | |||
int bpm; | |||
jack_nframes_t tone_length, wave_length; | |||
sample_t *wave; | |||
double *amp; | |||
long offset ; | |||
InternalMetro(int freq, double max_amp, int dur_arg, int bpm, char* client_name); | |||
@@ -257,7 +257,7 @@ main (int argc, char *argv[]) | |||
if (jack_activate (client)) { | |||
fprintf (stderr, "cannot activate client\n"); | |||
return 1; | |||
goto error; | |||
} | |||
/* install a signal handler to properly quits jack client */ | |||
@@ -282,5 +282,9 @@ main (int argc, char *argv[]) | |||
}; | |||
jack_client_close(client); | |||
error: | |||
free(amp); | |||
free(wave); | |||
exit (0); | |||
} |
@@ -753,12 +753,20 @@ extern "C" | |||
strcpy (desc->name, "firewire"); // size MUST be less then JACK_DRIVER_NAME_MAX + 1 | |||
strcpy(desc->desc, "Linux FFADO API based audio backend"); // size MUST be less then JACK_DRIVER_PARAM_DESC + 1 | |||
desc->nparams = 11; | |||
desc->nparams = 12; | |||
params = (jack_driver_param_desc_t *)calloc (desc->nparams, sizeof (jack_driver_param_desc_t)); | |||
desc->params = params; | |||
i = 0; | |||
strcpy (params[i].name, "device"); | |||
params[i].character = 'd'; | |||
params[i].type = JackDriverParamString; | |||
strcpy (params[i].value.str, "hw:0"); | |||
strcpy (params[i].short_desc, "The FireWire device to use."); | |||
strcpy (params[i].long_desc, "The FireWire device to use. Please consult the FFADO documentation for more info."); | |||
i++; | |||
strcpy (params[i].name, "period"); | |||
params[i].character = 'p'; | |||
params[i].type = JackDriverParamUInt; | |||
@@ -881,7 +889,7 @@ extern "C" | |||
switch (param->character) { | |||
case 'd': | |||
device_name = strdup (param->value.str); | |||
device_name = const_cast<char*>(param->value.str); | |||
break; | |||
case 'p': | |||
cmlparams.period_size = param->value.ui; | |||
@@ -159,7 +159,7 @@ bool JackMachServerChannel::Execute() | |||
kern_return_t res; | |||
if ((res = mach_msg_server(MessageHandler, 1024, fServerPort.GetPortSet(), 0)) != KERN_SUCCESS) { | |||
jack_log("JackMachServerChannel::Execute: err = %s", mach_error_string(res)); | |||
return false; | |||
// A recoverable error, so keep running... | |||
} | |||
return true; | |||
@@ -2002,8 +2002,8 @@ extern "C" | |||
switch (param->character) { | |||
case 'd': | |||
capture_driver_uid = strdup(param->value.str); | |||
playback_driver_uid = strdup(param->value.str); | |||
capture_driver_uid = param->value.str; | |||
playback_driver_uid = param->value.str; | |||
break; | |||
case 'D': | |||
@@ -2026,14 +2026,14 @@ extern "C" | |||
case 'C': | |||
capture = true; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
capture_driver_uid = strdup(param->value.str); | |||
capture_driver_uid = param->value.str; | |||
} | |||
break; | |||
case 'P': | |||
playback = true; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
playback_driver_uid = strdup(param->value.str); | |||
playback_driver_uid = param->value.str; | |||
} | |||
break; | |||
@@ -985,20 +985,20 @@ EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine | |||
case 'C': | |||
capture = true; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
capture_pcm_name = strdup(param->value.str); | |||
capture_pcm_name = param->value.str; | |||
} | |||
break; | |||
case 'P': | |||
playback = true; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
playback_pcm_name = strdup(param->value.str); | |||
playback_pcm_name = param->value.str; | |||
} | |||
break; | |||
case 'd': | |||
playback_pcm_name = strdup (param->value.str); | |||
capture_pcm_name = strdup (param->value.str); | |||
playback_pcm_name = param->value.str; | |||
capture_pcm_name = param->value.str; | |||
break; | |||
case 'e': | |||
@@ -904,20 +904,20 @@ EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine | |||
case 'C': | |||
capture = true; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
capture_pcm_name = strdup(param->value.str); | |||
capture_pcm_name = param->value.str; | |||
} | |||
break; | |||
case 'P': | |||
playback = true; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
playback_pcm_name = strdup(param->value.str); | |||
playback_pcm_name = param->value.str; | |||
} | |||
break; | |||
case 'd': | |||
playback_pcm_name = strdup (param->value.str); | |||
capture_pcm_name = strdup (param->value.str); | |||
playback_pcm_name = param->value.str; | |||
capture_pcm_name = param->value.str; | |||
break; | |||
case 'b': | |||
@@ -60,7 +60,6 @@ ExternalMetro::ExternalMetro(int freq, double max_amp, int dur_arg, int bpm, con | |||
{ | |||
sample_t scale; | |||
int i, attack_length, decay_length; | |||
double *amp; | |||
int attack_percent = 1, decay_percent = 10; | |||
const char *bpm_string = "bpm"; | |||
jack_options_t options = JackNullOption; | |||
@@ -131,6 +130,8 @@ ExternalMetro::~ExternalMetro() | |||
jack_port_unregister(client, input_port); | |||
jack_port_unregister(client, output_port); | |||
jack_client_close(client); | |||
free(amp); | |||
free(wave); | |||
} | |||
int main (int argc, char *argv[]) | |||
@@ -53,6 +53,7 @@ extern "C" | |||
int bpm; | |||
jack_nframes_t tone_length, wave_length; | |||
sample_t *wave; | |||
double *amp; | |||
long offset ; | |||
ExternalMetro(int freq, double max_amp, int dur_arg, int bpm, const char* client_name = "metro"); | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2005 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackCompilerDeps_WIN32__ | |||
#define __JackCompilerDeps_WIN32__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackNetWinSocket.h" | |||
@@ -1,21 +1,21 @@ | |||
/* | |||
Copyright (C) 2008 Romain Moret at Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackNetWinSocket__ | |||
#define __JackNetWinSocket__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2008 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackPlatformPlug_WIN32__ | |||
#define __JackPlatformPlug_WIN32__ | |||
@@ -1,28 +1,28 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2008 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackShmMem_WIN32__ | |||
#define __JackShmMem_WIN32__ | |||
#include <windows.h> | |||
#include <windows.h> | |||
// See GetProcessWorkingSetSize and SetProcessWorkingSetSize | |||
#define CHECK_MLOCK(ptr, size) (VirtualLock((ptr), (size)) != 0) | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackSystemDeps_WIN32__ | |||
#define __JackSystemDeps_WIN32__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackTypes_WIN32__ | |||
#define __JackTypes_WIN32__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2005 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackWinEvent.h" | |||
#include "JackTools.h" | |||
@@ -1,21 +1,21 @@ | |||
/* | |||
Copyright (C) 2004-2005 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackWinEvent__ | |||
#define __JackWinEvent__ | |||
@@ -1,23 +1,22 @@ | |||
/* | |||
Copyright (C) 2006 Grame | |||
This library is free software; you can redistribute it and/or | |||
modify it under the terms of the GNU Lesser General Public | |||
License as published by the Free Software Foundation; either | |||
version 2.1 of the License, or (at your option) any later version. | |||
This library is distributed in the hope that it will be useful, | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
You should have received a copy of the GNU Lesser General Public | |||
License along with this library; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |||
Grame Research Laboratory, 9 rue du Garet, 69001 Lyon - France | |||
grame@grame.fr | |||
*/ | |||
#ifndef __JackWinMutex__ | |||
#define __JackWinMutex__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackWinNamedPipe.h" | |||
#include "JackError.h" | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackWinNamedPipe__ | |||
#define __JackWinNamedPipe__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include "JackWinNamedPipeClientChannel.h" | |||
#include "JackRequest.h" | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackWinNamedPipeClientChannel__ | |||
#define __JackWinNamedPipeClientChannel__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include "JackRequest.h" | |||
#include "JackWinNamedPipeNotifyChannel.h" | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackWinNamedPipeNotifyChannel__ | |||
#define __JackWinNamedPipeNotifyChannel__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
*/ | |||
#include "JackWinNamedPipeServerChannel.h" | |||
#include "JackNotification.h" | |||
@@ -73,7 +74,7 @@ void JackClientPipeThread::Close() // Close the Server/Client connection | |||
all ressources will be desallocated at the end. | |||
*/ | |||
fThread.Stop(); | |||
fThread.Kill(); | |||
fPipe->Close(); | |||
fRefNum = -1; | |||
} | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackWinNamedPipeServerChannel__ | |||
#define __JackWinNamedPipeServerChannel__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef __JackWinNamedPipeServerNotifyChannel__ | |||
#define __JackWinNamedPipeServerNotifyChannel__ | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackWinProcessSync.h" | |||
#include "JackError.h" | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackWinProcessSync__ | |||
#define __JackWinProcessSync__ | |||
@@ -1,21 +1,21 @@ | |||
/* | |||
Copyright (C) 2004-2005 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include "JackWinSemaphore.h" | |||
#include "JackConstants.h" | |||
@@ -1,21 +1,22 @@ | |||
/* | |||
Copyright (C) 2004-2005 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackWinSemaphore__ | |||
#define __JackWinSemaphore__ | |||
@@ -1,22 +1,22 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#include "JackWinThread.h" | |||
#include "JackError.h" | |||
@@ -1,22 +1,22 @@ | |||
/* | |||
Copyright (C) 2001 Paul Davis | |||
Copyright (C) 2004-2006 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
*/ | |||
#ifndef __JackWinThread__ | |||
@@ -1,22 +1,22 @@ | |||
/* | |||
Copyright (C) 2001-2003 Paul Davis | |||
Copyright (C) 2004-2008 Grame | |||
Copyright (C) 2004-2008 Grame | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU Lesser General Public License as published by | |||
the Free Software Foundation; either version 2.1 of the License, or | |||
(at your option) any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include "JackTime.h" | |||
@@ -1,32 +1,35 @@ | |||
------------------------------- | |||
Jackmp on Windows | |||
JACK2 on Windows | |||
------------------------------- | |||
This folder contains all the windows specific sources. | |||
You will also find two sets of files : | |||
- VisualC++6 workspace and project files, in order to compile Jack with MSVC | |||
- Code::Blocks (8.02) workspace and project files, in order to compile Jack with MingW | |||
- VisualC++6 workspace and project files, in order to compile JACK with MSVC | |||
- Code::Blocks (8.02) workspace and project files, in order to compile JACK with MingW | |||
The built binaries will be located in '/Release/bin' (or '/Debug/bin' if you build the Debug target). Once compiled, you'll find there everything you need : | |||
- the two 'libjackmp.dll' and 'libjackservermp.dll', client and server jack libraries | |||
- the 'jackdmp.exe', main application : the jack server | |||
- the 'jackdmp.exe', main application : the JACK server | |||
- the 'jack_xxx.exe' utilities and examples | |||
- in the jackmp directory, you'll find the driver's DLL's ('jack_portaudio.dll' and 'jack_netdriver.dll') and some tools ( 'netmanager.dll', 'audioadapter.dll', 'netadapter.dll' for example ) | |||
- in the jackmp directory, you'll find the driver's DLL's ('jack_portaudio.dll' and 'jack_netdriver.dll') and some tools ('netmanager.dll', 'audioadapter.dll', 'netadapter.dll' for example) | |||
In Code::Blocks all the projects are automatically built in a correct order (dll's then apps) by doing 'build->build workspace'. | |||
In VC6, you'll have to build the projects one by one. | |||
The needed regexp library TRE can be found here http://laurikari.net/tre/. Unzip and place the "tre-0.8.0" folder into the "windows" folder. | |||
Then edit and comment "#define snprintf sprintf_s" at the end off the "tre-0.8.0/win32/config.h" file before building the JACK project. | |||
------------------------------- | |||
Notes about VC and GCC versions | |||
------------------------------- | |||
The Visual Studio workspace is limited to VC6. Jack will not compile on most recent MSVC's. The fact is recent compilers (MSVC7, 8 or 9) don't agree with some of the Jack sources. | |||
But now you can compile Jack using GCC, with MingW. | |||
The Visual Studio workspace is limited to VC6. JACK will not compile on most recent MSVC's. The fact is recent compilers (MSVC7, 8 or 9) don't agree with some of the JACK sources. | |||
But now you can compile JACK using GCC, with MingW. | |||
The project is actually organized in a Code::Blocks workspace. This is a simple and efficient way to compile the whole project. | |||
But for some reasons, you need to compile Jack using a SJLJ version of G++ (available on MingW website). | |||
But for some reasons, you need to compile JACK using a SJLJ version of G++ (available on MingW website). | |||
Current GCC/G++ version (3.4.5) doesn't includes SJLJ so you'll have to use another one. | |||
Jack needs the use of SJLJ exceptions instead of DW2 because exceptions are exchanged between DLL's, and DW2 does not allow to throw an exception out of a DLL, so it wouldn't be cought. | |||
JACK needs the use of SJLJ exceptions instead of DW2 because exceptions are exchanged between DLL's, and DW2 does not allow to throw an exception out of a DLL, so it wouldn't be cought. | |||
The ressources files has been created with ResEdit (ANSI build). VisualStudio uses 'ressource.rc' and 'ressource_vc.h'. The other files are used by MingW. | |||
@@ -34,20 +37,19 @@ You can make a small installer ('setup.exe') with CreateInstallFree, a little fr | |||
A binary version of qjackctl is also included. | |||
------------------------------- | |||
Running Jack on Windows | |||
Running JACK on Windows | |||
------------------------------- | |||
You can use two drivers : PortAudio and NetDriver. | |||
The PortAudio backend allow the use of many soundcards, using ASIO, DirectSound or WMME drivers (any ASIO driver can be seen by PortAudio). | |||
The NetDriver allow you to use NetJack2 on windows. Thus you can easily exchange midi and audio streams bitween computers (Linux, MacOSX or Windows). | |||
In both cases, you have to use the minimalist : | |||
'jackd -R -d ...' | |||
command. With PortAudio, you can have a list of supported drivers with : | |||
'jackd -R -d ...' command. With PortAudio, you can have a list of supported drivers with : | |||
'jackd -R -S -d portaudio -l' | |||
Other options still stay the same. | |||
You can also pick a binary of Qjackctl, but this is still in development. | |||
You can also pick a binary of Qjackctl, but this is still in development. | |||
------------------------------- | |||
Running Jack on windows | |||
------------------------------- | |||
@@ -55,4 +57,4 @@ Running Jack on windows | |||
More information at : 'http://www.grame.fr/~letz/jackdmp.html'. | |||
For any question or suggestion, you can refer to the mailing list 'jack-devel@jackaudio.org' | |||
Enjoy Jack on windows... ;-) | |||
Enjoy JACK on windows... ;-) |
@@ -20,7 +20,7 @@ | |||
<Project filename="jack_netmanager.cbp"> | |||
<Depends filename="libjackserver.cbp" /> | |||
</Project> | |||
<Project filename="jack_audioadapter.cbp"> | |||
<Project filename="jack_audioadapter.cbp" active="1"> | |||
<Depends filename="libjackserver.cbp" /> | |||
</Project> | |||
<Project filename="jack_netadapter.cbp"> | |||
@@ -36,7 +36,7 @@ | |||
<Project filename="jack_lsp.cbp"> | |||
<Depends filename="libjack.cbp" /> | |||
</Project> | |||
<Project filename="jack_netsource.cbp" active="1"> | |||
<Project filename="jack_netsource.cbp"> | |||
<Depends filename="libjack.cbp" /> | |||
<Depends filename="jack_netonedriver.cbp" /> | |||
</Project> | |||
@@ -25,10 +25,13 @@ | |||
<Add option="-DREGEX_MALLOC" /> | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-D__SMP__" /> | |||
<Add option="-DHAVE_CONFIG_H" /> | |||
<Add directory="." /> | |||
<Add directory="..\windows" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\common" /> | |||
<Add directory="tre-0.8.0\win32" /> | |||
<Add directory="tre-0.8.0\lib" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
@@ -64,10 +67,13 @@ | |||
<Add option="-DREGEX_MALLOC" /> | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-D__SMP__" /> | |||
<Add option="-DHAVE_CONFIG_H" /> | |||
<Add directory="." /> | |||
<Add directory="..\windows" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\common" /> | |||
<Add directory="tre-0.8.0\win32" /> | |||
<Add directory="tre-0.8.0\lib" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
@@ -104,10 +110,13 @@ | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-D__SMP__" /> | |||
<Add option="-DJACK_MONITOR" /> | |||
<Add option="-DHAVE_CONFIG_H" /> | |||
<Add directory="." /> | |||
<Add directory="..\windows" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\common" /> | |||
<Add directory="tre-0.8.0\win32" /> | |||
<Add directory="tre-0.8.0\lib" /> | |||
</Compiler> | |||
<Linker> | |||
<Add library="kernel32" /> | |||
@@ -180,9 +189,52 @@ | |||
<Unit filename="libjack.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Unit filename="regex.c"> | |||
<Unit filename="tre-0.8.0\lib\regcomp.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\regerror.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\regex.h" /> | |||
<Unit filename="tre-0.8.0\lib\regexec.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-ast.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-ast.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-compile.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-compile.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-internal.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-match-approx.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-match-backtrack.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-match-parallel.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-match-utils.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-mem.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-mem.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-parse.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-parse.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-stack.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-stack.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre.h" /> | |||
<Unit filename="tre-0.8.0\lib\xmalloc.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\xmalloc.h" /> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
@@ -26,10 +26,13 @@ | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-DSERVER_SIDE" /> | |||
<Add option="-D__SMP__" /> | |||
<Add option="-DHAVE_CONFIG_H" /> | |||
<Add directory="." /> | |||
<Add directory="..\windows" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\common" /> | |||
<Add directory="tre-0.8.0\win32" /> | |||
<Add directory="tre-0.8.0\lib" /> | |||
</Compiler> | |||
<Linker> | |||
<Add directory="Release\bin" /> | |||
@@ -55,10 +58,13 @@ | |||
<Add option="-DSTDC_HEADERS" /> | |||
<Add option="-DSERVER_SIDE" /> | |||
<Add option="-D__SMP__" /> | |||
<Add option="-DHAVE_CONFIG_H" /> | |||
<Add directory="." /> | |||
<Add directory="..\windows" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\common" /> | |||
<Add directory="tre-0.8.0\win32" /> | |||
<Add directory="tre-0.8.0\lib" /> | |||
</Compiler> | |||
<Linker> | |||
<Add directory="Debug\bin" /> | |||
@@ -85,10 +91,13 @@ | |||
<Add option="-DSERVER_SIDE" /> | |||
<Add option="-D__SMP__" /> | |||
<Add option="-DJACK_MONITOR" /> | |||
<Add option="-DHAVE_CONFIG_H" /> | |||
<Add directory="." /> | |||
<Add directory="..\windows" /> | |||
<Add directory="..\common\jack" /> | |||
<Add directory="..\common" /> | |||
<Add directory="tre-0.8.0\win32" /> | |||
<Add directory="tre-0.8.0\lib" /> | |||
</Compiler> | |||
<Linker> | |||
<Add directory="Release\bin" /> | |||
@@ -145,6 +154,8 @@ | |||
<Unit filename="..\common\JackMidiPort.cpp" /> | |||
<Unit filename="..\common\JackNetInterface.cpp" /> | |||
<Unit filename="..\common\JackNetTool.cpp" /> | |||
<Unit filename="..\common\JackPhysicalMidiInput.cpp" /> | |||
<Unit filename="..\common\JackPhysicalMidiOutput.cpp" /> | |||
<Unit filename="..\common\JackPort.cpp" /> | |||
<Unit filename="..\common\JackPortType.cpp" /> | |||
<Unit filename="..\common\JackRestartThreadedDriver.cpp" /> | |||
@@ -156,8 +167,6 @@ | |||
<Unit filename="..\common\JackTools.cpp" /> | |||
<Unit filename="..\common\JackTransportEngine.cpp" /> | |||
<Unit filename="..\common\JackWaitThreadedDriver.cpp" /> | |||
<Unit filename="..\common\JackPhysicalMidiInput.cpp" /> | |||
<Unit filename="..\common\JackPhysicalMidiOutput.cpp" /> | |||
<Unit filename="..\common\ringbuffer.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
@@ -185,9 +194,52 @@ | |||
<Unit filename="libjackserver.rc"> | |||
<Option compilerVar="WINDRES" /> | |||
</Unit> | |||
<Unit filename="regex.c"> | |||
<Unit filename="tre-0.8.0\lib\regcomp.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\regerror.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\regex.h" /> | |||
<Unit filename="tre-0.8.0\lib\regexec.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-ast.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-ast.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-compile.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-compile.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-internal.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-match-approx.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-match-backtrack.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-match-parallel.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-match-utils.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-mem.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-mem.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-parse.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-parse.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre-stack.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\tre-stack.h" /> | |||
<Unit filename="tre-0.8.0\lib\tre.h" /> | |||
<Unit filename="tre-0.8.0\lib\xmalloc.c"> | |||
<Option compilerVar="CC" /> | |||
</Unit> | |||
<Unit filename="tre-0.8.0\lib\xmalloc.h" /> | |||
<Extensions> | |||
<code_completion /> | |||
<envvars /> | |||
@@ -404,8 +404,8 @@ extern "C" | |||
{ | |||
case 'd': | |||
capture_pcm_name = strdup(param->value.str); | |||
playback_pcm_name = strdup(param->value.str); | |||
capture_pcm_name = param->value.str; | |||
playback_pcm_name = param->value.str; | |||
break; | |||
case 'D': | |||
@@ -428,14 +428,14 @@ extern "C" | |||
case 'C': | |||
capture = true; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
capture_pcm_name = strdup(param->value.str); | |||
capture_pcm_name = param->value.str; | |||
} | |||
break; | |||
case 'P': | |||
playback = TRUE; | |||
if (strcmp(param->value.str, "none") != 0) { | |||
playback_pcm_name = strdup(param->value.str); | |||
playback_pcm_name = param->value.str; | |||
} | |||
break; | |||
@@ -1,506 +0,0 @@ | |||
/* Definitions for data structures and routines for the regular | |||
expression library, version 0.12. | |||
Copyright (C) 1985, 1989, 1990, 1991, 1992, 1993 Free Software Foundation, Inc. | |||
This program is free software; you can redistribute it and/or modify | |||
it under the terms of the GNU General Public License as published by | |||
the Free Software Foundation; either version 2, or (at your option) | |||
any later version. | |||
This program is distributed in the hope that it will be useful, | |||
but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
GNU General Public License for more details. | |||
You should have received a copy of the GNU General Public License | |||
along with this program; if not, write to the Free Software | |||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ | |||
#ifndef __REGEXP_LIBRARY_H__ | |||
#define __REGEXP_LIBRARY_H__ | |||
#ifdef __cplusplus | |||
extern "C" | |||
{ | |||
#endif | |||
/* POSIX says that <sys/types.h> must be included (by the caller) before | |||
<regex.h>. */ | |||
#ifdef VMS | |||
/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it | |||
should be there. */ | |||
#include <stddef.h> | |||
#endif | |||
/* The following bits are used to determine the regexp syntax we | |||
recognize. The set/not-set meanings are chosen so that Emacs syntax | |||
remains the value 0. The bits are given in alphabetical order, and | |||
the definitions shifted by one from the previous bit; thus, when we | |||
add or remove a bit, only one other definition need change. */ | |||
typedef unsigned reg_syntax_t; | |||
/* If this bit is not set, then \ inside a bracket expression is literal. | |||
If set, then such a \ quotes the following character. */ | |||
#define RE_BACKSLASH_ESCAPE_IN_LISTS (1) | |||
/* If this bit is not set, then + and ? are operators, and \+ and \? are | |||
literals. | |||
If set, then \+ and \? are operators and + and ? are literals. */ | |||
#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1) | |||
/* If this bit is set, then character classes are supported. They are: | |||
[:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:], | |||
[:space:], [:print:], [:punct:], [:graph:], and [:cntrl:]. | |||
If not set, then character classes are not supported. */ | |||
#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1) | |||
/* If this bit is set, then ^ and $ are always anchors (outside bracket | |||
expressions, of course). | |||
If this bit is not set, then it depends: | |||
^ is an anchor if it is at the beginning of a regular | |||
expression or after an open-group or an alternation operator; | |||
$ is an anchor if it is at the end of a regular expression, or | |||
before a close-group or an alternation operator. | |||
This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because | |||
POSIX draft 11.2 says that * etc. in leading positions is undefined. | |||
We already implemented a previous draft which made those constructs | |||
invalid, though, so we haven't changed the code back. */ | |||
#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1) | |||
/* If this bit is set, then special characters are always special | |||
regardless of where they are in the pattern. | |||
If this bit is not set, then special characters are special only in | |||
some contexts; otherwise they are ordinary. Specifically, | |||
* + ? and intervals are only special when not after the beginning, | |||
open-group, or alternation operator. */ | |||
#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1) | |||
/* If this bit is set, then *, +, ?, and { cannot be first in an re or | |||
immediately after an alternation or begin-group operator. */ | |||
#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1) | |||
/* If this bit is set, then . matches newline. | |||
If not set, then it doesn't. */ | |||
#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1) | |||
/* If this bit is set, then . doesn't match NUL. | |||
If not set, then it does. */ | |||
#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1) | |||
/* If this bit is set, nonmatching lists [^...] do not match newline. | |||
If not set, they do. */ | |||
#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1) | |||
/* If this bit is set, either \{...\} or {...} defines an | |||
interval, depending on RE_NO_BK_BRACES. | |||
If not set, \{, \}, {, and } are literals. */ | |||
#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1) | |||
/* If this bit is set, +, ? and | aren't recognized as operators. | |||
If not set, they are. */ | |||
#define RE_LIMITED_OPS (RE_INTERVALS << 1) | |||
/* If this bit is set, newline is an alternation operator. | |||
If not set, newline is literal. */ | |||
#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1) | |||
/* If this bit is set, then `{...}' defines an interval, and \{ and \} | |||
are literals. | |||
If not set, then `\{...\}' defines an interval. */ | |||
#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1) | |||
/* If this bit is set, (...) defines a group, and \( and \) are literals. | |||
If not set, \(...\) defines a group, and ( and ) are literals. */ | |||
#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1) | |||
/* If this bit is set, then \<digit> matches <digit>. | |||
If not set, then \<digit> is a back-reference. */ | |||
#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1) | |||
/* If this bit is set, then | is an alternation operator, and \| is literal. | |||
If not set, then \| is an alternation operator, and | is literal. */ | |||
#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1) | |||
/* If this bit is set, then an ending range point collating higher | |||
than the starting range point, as in [z-a], is invalid. | |||
If not set, then when ending range point collates higher than the | |||
starting range point, the range is ignored. */ | |||
#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1) | |||
/* If this bit is set, then an unmatched ) is ordinary. | |||
If not set, then an unmatched ) is invalid. */ | |||
#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1) | |||
/* This global variable defines the particular regexp syntax to use (for | |||
some interfaces). When a regexp is compiled, the syntax used is | |||
stored in the pattern buffer, so changing this does not affect | |||
already-compiled regexps. */ | |||
extern reg_syntax_t re_syntax_options; | |||
/* Define combinations of the above bits for the standard possibilities. | |||
(The [[[ comments delimit what gets put into the Texinfo file, so | |||
don't delete them!) */ | |||
/* [[[begin syntaxes]]] */ | |||
#define RE_SYNTAX_EMACS 0 | |||
#define RE_SYNTAX_AWK \ | |||
(RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \ | |||
| RE_NO_BK_PARENS | RE_NO_BK_REFS \ | |||
| RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \ | |||
| RE_UNMATCHED_RIGHT_PAREN_ORD) | |||
#define RE_SYNTAX_POSIX_AWK \ | |||
(RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS) | |||
#define RE_SYNTAX_GREP \ | |||
(RE_BK_PLUS_QM | RE_CHAR_CLASSES \ | |||
| RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \ | |||
| RE_NEWLINE_ALT) | |||
#define RE_SYNTAX_EGREP \ | |||
(RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \ | |||
| RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \ | |||
| RE_NEWLINE_ALT | RE_NO_BK_PARENS \ | |||
| RE_NO_BK_VBAR) | |||
#define RE_SYNTAX_POSIX_EGREP \ | |||
(RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES) | |||
/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */ | |||
#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC | |||
#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC | |||
/* Syntax bits common to both basic and extended POSIX regex syntax. */ | |||
#define _RE_SYNTAX_POSIX_COMMON \ | |||
(RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \ | |||
| RE_INTERVALS | RE_NO_EMPTY_RANGES) | |||
#define RE_SYNTAX_POSIX_BASIC \ | |||
(_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM) | |||
/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes | |||
RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this | |||
isn't minimal, since other operators, such as \`, aren't disabled. */ | |||
#define RE_SYNTAX_POSIX_MINIMAL_BASIC \ | |||
(_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS) | |||
#define RE_SYNTAX_POSIX_EXTENDED \ | |||
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \ | |||
| RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \ | |||
| RE_NO_BK_PARENS | RE_NO_BK_VBAR \ | |||
| RE_UNMATCHED_RIGHT_PAREN_ORD) | |||
/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS | |||
replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */ | |||
#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \ | |||
(_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \ | |||
| RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \ | |||
| RE_NO_BK_PARENS | RE_NO_BK_REFS \ | |||
| RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD) | |||
/* [[[end syntaxes]]] */ | |||
/* Maximum number of duplicates an interval can allow. Some systems | |||
(erroneously) define this in other header files, but we want our | |||
value, so remove any previous define. */ | |||
#ifdef RE_DUP_MAX | |||
#undef RE_DUP_MAX | |||
#endif | |||
#define RE_DUP_MAX ((1 << 15) - 1) | |||
/* POSIX `cflags' bits (i.e., information for `regcomp'). */ | |||
/* If this bit is set, then use extended regular expression syntax. | |||
If not set, then use basic regular expression syntax. */ | |||
#define REG_EXTENDED 1 | |||
/* If this bit is set, then ignore case when matching. | |||
If not set, then case is significant. */ | |||
#define REG_ICASE (REG_EXTENDED << 1) | |||
/* If this bit is set, then anchors do not match at newline | |||
characters in the string. | |||
If not set, then anchors do match at newlines. */ | |||
#define REG_NEWLINE (REG_ICASE << 1) | |||
/* If this bit is set, then report only success or fail in regexec. | |||
If not set, then returns differ between not matching and errors. */ | |||
#define REG_NOSUB (REG_NEWLINE << 1) | |||
/* POSIX `eflags' bits (i.e., information for regexec). */ | |||
/* If this bit is set, then the beginning-of-line operator doesn't match | |||
the beginning of the string (presumably because it's not the | |||
beginning of a line). | |||
If not set, then the beginning-of-line operator does match the | |||
beginning of the string. */ | |||
#define REG_NOTBOL 1 | |||
/* Like REG_NOTBOL, except for the end-of-line. */ | |||
#define REG_NOTEOL (1 << 1) | |||
/* If any error codes are removed, changed, or added, update the | |||
`re_error_msg' table in regex.c. */ | |||
typedef enum { | |||
REG_NOERROR = 0, /* Success. */ | |||
REG_NOMATCH, /* Didn't find a match (for regexec). */ | |||
/* POSIX regcomp return error codes. (In the order listed in the | |||
standard.) */ | |||
REG_BADPAT, /* Invalid pattern. */ | |||
REG_ECOLLATE, /* Not implemented. */ | |||
REG_ECTYPE, /* Invalid character class name. */ | |||
REG_EESCAPE, /* Trailing backslash. */ | |||
REG_ESUBREG, /* Invalid back reference. */ | |||
REG_EBRACK, /* Unmatched left bracket. */ | |||
REG_EPAREN, /* Parenthesis imbalance. */ | |||
REG_EBRACE, /* Unmatched \{. */ | |||
REG_BADBR, /* Invalid contents of \{\}. */ | |||
REG_ERANGE, /* Invalid range end. */ | |||
REG_ESPACE, /* Ran out of memory. */ | |||
REG_BADRPT, /* No preceding re for repetition op. */ | |||
/* Error codes we've added. */ | |||
REG_EEND, /* Premature end. */ | |||
REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */ | |||
REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */ | |||
} | |||
reg_errcode_t; | |||
/* This data structure represents a compiled pattern. Before calling | |||
the pattern compiler, the fields `buffer', `allocated', `fastmap', | |||
`translate', and `no_sub' can be set. After the pattern has been | |||
compiled, the `re_nsub' field is available. All other fields are | |||
private to the regex routines. */ | |||
struct re_pattern_buffer { | |||
/* [[[begin pattern_buffer]]] */ | |||
/* Space that holds the compiled pattern. It is declared as | |||
`unsigned char *' because its elements are | |||
sometimes used as array indexes. */ | |||
unsigned char *buffer; | |||
/* Number of bytes to which `buffer' points. */ | |||
unsigned long allocated; | |||
/* Number of bytes actually used in `buffer'. */ | |||
unsigned long used; | |||
/* Syntax setting with which the pattern was compiled. */ | |||
reg_syntax_t syntax; | |||
/* Pointer to a fastmap, if any, otherwise zero. re_search uses | |||
the fastmap, if there is one, to skip over impossible | |||
starting points for matches. */ | |||
char *fastmap; | |||
/* Either a translate table to apply to all characters before | |||
comparing them, or zero for no translation. The translation | |||
is applied to a pattern when it is compiled and to a string | |||
when it is matched. */ | |||
char *translate; | |||
/* Number of subexpressions found by the compiler. */ | |||
size_t re_nsub; | |||
/* Zero if this pattern cannot match the empty string, one else. | |||
Well, in truth it's used only in `re_search_2', to see | |||
whether or not we should use the fastmap, so we don't set | |||
this absolutely perfectly; see `re_compile_fastmap' (the | |||
`duplicate' case). */ | |||
unsigned can_be_null : | |||
1; | |||
/* If REGS_UNALLOCATED, allocate space in the `regs' structure | |||
for `max (RE_NREGS, re_nsub + 1)' groups. | |||
If REGS_REALLOCATE, reallocate space if necessary. | |||
If REGS_FIXED, use what's there. */ | |||
#define REGS_UNALLOCATED 0 | |||
#define REGS_REALLOCATE 1 | |||
#define REGS_FIXED 2 | |||
unsigned regs_allocated : | |||
2; | |||
/* Set to zero when `regex_compile' compiles a pattern; set to one | |||
by `re_compile_fastmap' if it updates the fastmap. */ | |||
unsigned fastmap_accurate : | |||
1; | |||
/* If set, `re_match_2' does not return information about | |||
subexpressions. */ | |||
unsigned no_sub : | |||
1; | |||
/* If set, a beginning-of-line anchor doesn't match at the | |||
beginning of the string. */ | |||
unsigned not_bol : | |||
1; | |||
/* Similarly for an end-of-line anchor. */ | |||
unsigned not_eol : | |||
1; | |||
/* If true, an anchor at a newline matches. */ | |||
unsigned newline_anchor : | |||
1; | |||
/* [[[end pattern_buffer]]] */ | |||
}; | |||
typedef struct re_pattern_buffer regex_t; | |||
/* search.c (search_buffer) in Emacs needs this one opcode value. It is | |||
defined both in `regex.c' and here. */ | |||
#define RE_EXACTN_VALUE 1 | |||
/* Type for byte offsets within the string. POSIX mandates this. */ | |||
typedef int regoff_t; | |||
/* This is the structure we store register match data in. See | |||
regex.texinfo for a full description of what registers match. */ | |||
struct re_registers { | |||
unsigned num_regs; | |||
regoff_t *start; | |||
regoff_t *end; | |||
}; | |||
/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer, | |||
`re_match_2' returns information about at least this many registers | |||
the first time a `regs' structure is passed. */ | |||
#ifndef RE_NREGS | |||
#define RE_NREGS 30 | |||
#endif | |||
/* POSIX specification for registers. Aside from the different names than | |||
`re_registers', POSIX uses an array of structures, instead of a | |||
structure of arrays. */ | |||
typedef struct { | |||
regoff_t rm_so; /* Byte offset from string's start to substring's start. */ | |||
regoff_t rm_eo; /* Byte offset from string's start to substring's end. */ | |||
} | |||
regmatch_t; | |||
/* Declarations for routines. */ | |||
/* To avoid duplicating every routine declaration -- once with a | |||
prototype (if we are ANSI), and once without (if we aren't) -- we | |||
use the following macro to declare argument types. This | |||
unfortunately clutters up the declarations a bit, but I think it's | |||
worth it. */ | |||
#if __STDC__ | |||
#define _RE_ARGS(args) args | |||
#else /* not __STDC__ */ | |||
#define _RE_ARGS(args) () | |||
#endif /* not __STDC__ */ | |||
/* Sets the current default syntax to SYNTAX, and return the old syntax. | |||
You can also simply assign to the `re_syntax_options' variable. */ | |||
extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax)); | |||
/* Compile the regular expression PATTERN, with length LENGTH | |||
and syntax given by the global `re_syntax_options', into the buffer | |||
BUFFER. Return NULL if successful, and an error string if not. */ | |||
extern const char *re_compile_pattern | |||
_RE_ARGS ((const char *pattern, int length, | |||
struct re_pattern_buffer *buffer)); | |||
/* Compile a fastmap for the compiled pattern in BUFFER; used to | |||
accelerate searches. Return 0 if successful and -2 if was an | |||
internal error. */ | |||
extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer)); | |||
/* Search in the string STRING (with length LENGTH) for the pattern | |||
compiled into BUFFER. Start searching at position START, for RANGE | |||
characters. Return the starting position of the match, -1 for no | |||
match, or -2 for an internal error. Also return register | |||
information in REGS (if REGS and BUFFER->no_sub are nonzero). */ | |||
extern int re_search | |||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, | |||
int length, int start, int range, struct re_registers *regs)); | |||
/* Like `re_search', but search in the concatenation of STRING1 and | |||
STRING2. Also, stop searching at index START + STOP. */ | |||
extern int re_search_2 | |||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, | |||
int length1, const char *string2, int length2, | |||
int start, int range, struct re_registers *regs, int stop)); | |||
/* Like `re_search', but return how many characters in STRING the regexp | |||
in BUFFER matched, starting at position START. */ | |||
extern int re_match | |||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string, | |||
int length, int start, struct re_registers *regs)); | |||
/* Relates to `re_match' as `re_search_2' relates to `re_search'. */ | |||
extern int re_match_2 | |||
_RE_ARGS ((struct re_pattern_buffer *buffer, const char *string1, | |||
int length1, const char *string2, int length2, | |||
int start, struct re_registers *regs, int stop)); | |||
/* Set REGS to hold NUM_REGS registers, storing them in STARTS and | |||
ENDS. Subsequent matches using BUFFER and REGS will use this memory | |||
for recording register information. STARTS and ENDS must be | |||
allocated with malloc, and must each be at least `NUM_REGS * sizeof | |||
(regoff_t)' bytes long. | |||
If NUM_REGS == 0, then subsequent matches should allocate their own | |||
register data. | |||
Unless this function is called, the first search or match using | |||
PATTERN_BUFFER will allocate its own register data, without | |||
freeing the old data. */ | |||
extern void re_set_registers | |||
_RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs, | |||
unsigned num_regs, regoff_t *starts, regoff_t *ends)); | |||
/* 4.2 bsd compatibility. */ | |||
extern char *re_comp _RE_ARGS ((const char *)); | |||
extern int re_exec _RE_ARGS ((const char *)); | |||
/* POSIX compatibility. */ | |||
extern int regcomp _RE_ARGS ((regex_t *preg, const char *pattern, int cflags)); | |||
extern int regexec | |||
_RE_ARGS ((const regex_t *preg, const char *string, size_t nmatch, | |||
regmatch_t pmatch[], int eflags)); | |||
extern size_t regerror | |||
_RE_ARGS ((int errcode, const regex_t *preg, char *errbuf, | |||
size_t errbuf_size)); | |||
extern void regfree _RE_ARGS ((regex_t *preg)); | |||
#endif /* not __REGEXP_LIBRARY_H__ */ | |||
#ifdef __cplusplus | |||
} | |||
#endif | |||
/* | |||
Local variables: | |||
make-backup-files: t | |||
version-control: t | |||
trim-versions-without-asking: nil | |||
End: | |||
*/ |