git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3566 0c269be4-1314-0410-8aa9-9f06e86f4224tags/v1.9.3
| @@ -18,24 +18,24 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||
| */ | |||
| #ifndef __JackCompilerDeps_WIN32__ | |||
| #define __JackCompilerDeps_WIN32__ | |||
| #define __JackCompilerDeps_WIN32__ | |||
| #if __GNUC__ | |||
| #ifndef POST_PACKED_STRUCTURE | |||
| /* POST_PACKED_STRUCTURE needs to be a macro which | |||
| expands into a compiler directive. The directive must | |||
| tell the compiler to arrange the preceding structure | |||
| declaration so that it is packed on byte-boundaries rather | |||
| than use the natural alignment of the processor and/or | |||
| compiler. | |||
| */ | |||
| #if (__GNUC__< 4) /* Does not seem to work with GCC 3.XX serie */ | |||
| #define POST_PACKED_STRUCTURE | |||
| #elif defined(JACK_32_64) | |||
| #define POST_PACKED_STRUCTURE __attribute__((__packed__)) | |||
| #else | |||
| #define POST_PACKED_STRUCTURE | |||
| #endif | |||
| #if __GNUC__ | |||
| #ifndef POST_PACKED_STRUCTURE | |||
| /* POST_PACKED_STRUCTURE needs to be a macro which | |||
| expands into a compiler directive. The directive must | |||
| tell the compiler to arrange the preceding structure | |||
| declaration so that it is packed on byte-boundaries rather | |||
| than use the natural alignment of the processor and/or | |||
| compiler. | |||
| */ | |||
| #if (__GNUC__< 4) /* Does not seem to work with GCC 3.XX serie */ | |||
| #define POST_PACKED_STRUCTURE | |||
| #elif defined(JACK_32_64) | |||
| #define POST_PACKED_STRUCTURE __attribute__((__packed__)) | |||
| #else | |||
| #define POST_PACKED_STRUCTURE | |||
| #endif | |||
| #endif | |||
| #define MEM_ALIGN(x,y) x __attribute__((aligned(y))) | |||
| #define EXPORT __declspec(dllexport) | |||
| @@ -286,12 +286,12 @@ namespace Jack | |||
| //local loop********************************************************************************************************* | |||
| int JackNetWinSocket::SetLocalLoop() | |||
| { | |||
| //char disable = 0; | |||
| /* | |||
| see http://msdn.microsoft.com/en-us/library/aa916098.aspx | |||
| Default value is TRUE. When TRUE, data that is sent from the local interface to the multicast group to | |||
| which the socket is joined, including data sent from the same socket, will be echoed to its receive buffer. | |||
| */ | |||
| //char disable = 0; | |||
| /* | |||
| see http://msdn.microsoft.com/en-us/library/aa916098.aspx | |||
| Default value is TRUE. When TRUE, data that is sent from the local interface to the multicast group to | |||
| which the socket is joined, including data sent from the same socket, will be echoed to its receive buffer. | |||
| */ | |||
| char disable = 1; | |||
| return SetOption ( IPPROTO_IP, IP_MULTICAST_LOOP, &disable, sizeof ( disable ) ); | |||
| } | |||
| @@ -20,7 +20,7 @@ | |||
| #ifndef __JackTypes_WIN32__ | |||
| #define __JackTypes_WIN32__ | |||
| #include <windows.h> | |||
| #include <windows.h> | |||
| #include "types.h" | |||
| typedef ULONGLONG UInt64; | |||
| @@ -32,7 +32,7 @@ void JackWinProcessSync::LockedSignal() | |||
| { | |||
| WaitForSingleObject(fMutex, INFINITE); | |||
| SetEvent(fEvent); | |||
| ReleaseMutex(fMutex); | |||
| ReleaseMutex(fMutex); | |||
| } | |||
| void JackWinProcessSync::SignalAll() | |||
| @@ -44,71 +44,71 @@ void JackWinProcessSync::LockedSignalAll() | |||
| { | |||
| WaitForSingleObject(fMutex, INFINITE); | |||
| SetEvent(fEvent); | |||
| ReleaseMutex(fMutex); | |||
| } | |||
| void JackWinProcessSync::Wait() | |||
| { | |||
| ReleaseMutex(fMutex); | |||
| WaitForSingleObject(fEvent, INFINITE); | |||
| } | |||
| void JackWinProcessSync::LockedWait() | |||
| { | |||
| /* Does it make sense on Windows, use non-locked version for now... */ | |||
| Wait(); | |||
| } | |||
| bool JackWinProcessSync::TimedWait(long usec) | |||
| { | |||
| ReleaseMutex(fMutex); | |||
| DWORD res = WaitForSingleObject(fEvent, usec / 1000); | |||
| return (res == WAIT_OBJECT_0); | |||
| } | |||
| bool JackWinProcessSync::LockedTimedWait(long usec) | |||
| { | |||
| /* Does it make sense on Windows, use non-locked version for now...*/ | |||
| return TimedWait(usec); | |||
| } | |||
| /* | |||
| Code from CAGuard.cpp : does ot sees to work as expected.. | |||
| void JackWinProcessSync::Wait() | |||
| { | |||
| ReleaseMutex(fMutex); | |||
| HANDLE handles[] = { fMutex, fEvent }; | |||
| DWORD res = WaitForMultipleObjects(2, handles, true, INFINITE); | |||
| if ((res != WAIT_OBJECT_0) && (res != WAIT_TIMEOUT)) | |||
| jack_error("Wait error err = %d", GetLastError()); | |||
| ResetEvent(fEvent); | |||
| } | |||
| ReleaseMutex(fMutex); | |||
| } | |||
| void JackWinProcessSync::Wait() | |||
| { | |||
| ReleaseMutex(fMutex); | |||
| WaitForSingleObject(fEvent, INFINITE); | |||
| } | |||
| void JackWinProcessSync::LockedWait() | |||
| { | |||
| WaitForSingleObject(fMutex, INFINITE); | |||
| { | |||
| /* Does it make sense on Windows, use non-locked version for now... */ | |||
| Wait(); | |||
| } | |||
| bool JackWinProcessSync::TimedWait(long usec) | |||
| { | |||
| ReleaseMutex(fMutex); | |||
| DWORD res = WaitForSingleObject(fEvent, usec / 1000); | |||
| return (res == WAIT_OBJECT_0); | |||
| } | |||
| bool JackWinProcessSync::LockedTimedWait(long usec) | |||
| { | |||
| /* Does it make sense on Windows, use non-locked version for now...*/ | |||
| return TimedWait(usec); | |||
| } | |||
| /* | |||
| Code from CAGuard.cpp : does ot sees to work as expected.. | |||
| void JackWinProcessSync::Wait() | |||
| { | |||
| ReleaseMutex(fMutex); | |||
| HANDLE handles[] = { fMutex, fEvent }; | |||
| DWORD res = WaitForMultipleObjects(2, handles, true, INFINITE); | |||
| if ((res != WAIT_OBJECT_0) && (res != WAIT_TIMEOUT)) | |||
| jack_error("Wait error err = %d", GetLastError()); | |||
| ResetEvent(fEvent); | |||
| } | |||
| void JackWinProcessSync::LockedWait() | |||
| { | |||
| WaitForSingleObject(fMutex, INFINITE); | |||
| ReleaseMutex(fMutex); | |||
| HANDLE handles[] = { fMutex, fEvent }; | |||
| DWORD res = WaitForMultipleObjects(2, handles, true, INFINITE); | |||
| if ((res != WAIT_OBJECT_0) && (res != WAIT_TIMEOUT)) | |||
| jack_error("LockedWait error err = %d", GetLastError()); | |||
| ResetEvent(fEvent); | |||
| ResetEvent(fEvent); | |||
| } | |||
| bool JackWinProcessSync::TimedWait(long usec) | |||
| { | |||
| ReleaseMutex(fMutex); | |||
| HANDLE handles[] = { fMutex, fEvent }; | |||
| DWORD res = WaitForMultipleObjects(2, handles, true, usec / 1000); | |||
| if ((res != WAIT_OBJECT_0) && (res != WAIT_TIMEOUT)) | |||
| jack_error("Wait error err = %d", GetLastError()); | |||
| ResetEvent(fEvent); | |||
| bool JackWinProcessSync::TimedWait(long usec) | |||
| { | |||
| ReleaseMutex(fMutex); | |||
| HANDLE handles[] = { fMutex, fEvent }; | |||
| DWORD res = WaitForMultipleObjects(2, handles, true, usec / 1000); | |||
| if ((res != WAIT_OBJECT_0) && (res != WAIT_TIMEOUT)) | |||
| jack_error("Wait error err = %d", GetLastError()); | |||
| ResetEvent(fEvent); | |||
| } | |||
| bool JackWinProcessSync::LockedTimedWait(long usec) | |||
| { | |||
| WaitForSingleObject(fMutex, INFINITE); | |||
| { | |||
| WaitForSingleObject(fMutex, INFINITE); | |||
| ReleaseMutex(fMutex); | |||
| HANDLE handles[] = { fMutex, fEvent }; | |||
| DWORD res = WaitForMultipleObjects(2, handles, true, usec / 1000); | |||
| @@ -1,26 +1,26 @@ | |||
| /* | |||
| Copyright (C) 2001-2003 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. | |||
| */ | |||
| #include "JackServerLaunch.h" | |||
| int try_start_server(jack_varargs_t* va, jack_options_t options, jack_status_t* status) | |||
| { | |||
| return 0; | |||
| } | |||
| /* | |||
| Copyright (C) 2001-2003 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. | |||
| */ | |||
| #include "JackServerLaunch.h" | |||
| int try_start_server(jack_varargs_t* va, jack_options_t options, jack_status_t* status) | |||
| { | |||
| return 0; | |||
| } | |||
| @@ -43,9 +43,9 @@ PortAudioDevices::PortAudioDevices() | |||
| } | |||
| PortAudioDevices::~PortAudioDevices() | |||
| { | |||
| { | |||
| // Desactivate for now: crash the server.. | |||
| //Pa_Terminate(); | |||
| //Pa_Terminate(); | |||
| delete[] fDeviceInfo; | |||
| delete[] fHostName; | |||
| @@ -1,59 +1,59 @@ | |||
| /* | |||
| 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. | |||
| */ | |||
| #ifndef __PortAudioDevices__ | |||
| #define __PortAudioDevices__ | |||
| #include <cstdio> | |||
| #include <string> | |||
| #include "portaudio.h" | |||
| #include "pa_asio.h" | |||
| /*! | |||
| \brief A PortAudio Devices manager. | |||
| */ | |||
| class PortAudioDevices | |||
| { | |||
| private: | |||
| PaHostApiIndex fNumHostApi; //number of hosts | |||
| PaDeviceIndex fNumDevice; //number of devices | |||
| PaDeviceInfo** fDeviceInfo; //array of device info | |||
| std::string* fHostName; //array of host names (matched with host id's) | |||
| public: | |||
| PortAudioDevices(); | |||
| ~PortAudioDevices(); | |||
| PaDeviceIndex GetNumDevice(); | |||
| PaDeviceInfo* GetDeviceInfo(PaDeviceIndex id); | |||
| std::string GetDeviceName(PaDeviceIndex id); | |||
| std::string GetHostFromDevice(PaDeviceInfo* device); | |||
| std::string GetHostFromDevice(PaDeviceIndex id); | |||
| std::string GetFullName(PaDeviceIndex id); | |||
| std::string GetFullName(std::string hostname, std::string devicename); | |||
| PaDeviceInfo* GetDeviceFromFullName(std::string fullname, PaDeviceIndex& id, bool isInput ); | |||
| void PrintSupportedStandardSampleRates(const PaStreamParameters* inputParameters, const PaStreamParameters* outputParameters); | |||
| int GetInputDeviceFromName(const char* name, PaDeviceIndex& device, int& in_max); | |||
| int GetOutputDeviceFromName(const char* name, PaDeviceIndex& device, int& out_max); | |||
| void DisplayDevicesNames(); | |||
| bool IsDuplex ( PaDeviceIndex id ); | |||
| }; | |||
| #endif | |||
| /* | |||
| 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. | |||
| */ | |||
| #ifndef __PortAudioDevices__ | |||
| #define __PortAudioDevices__ | |||
| #include <cstdio> | |||
| #include <string> | |||
| #include "portaudio.h" | |||
| #include "pa_asio.h" | |||
| /*! | |||
| \brief A PortAudio Devices manager. | |||
| */ | |||
| class PortAudioDevices | |||
| { | |||
| private: | |||
| PaHostApiIndex fNumHostApi; //number of hosts | |||
| PaDeviceIndex fNumDevice; //number of devices | |||
| PaDeviceInfo** fDeviceInfo; //array of device info | |||
| std::string* fHostName; //array of host names (matched with host id's) | |||
| public: | |||
| PortAudioDevices(); | |||
| ~PortAudioDevices(); | |||
| PaDeviceIndex GetNumDevice(); | |||
| PaDeviceInfo* GetDeviceInfo(PaDeviceIndex id); | |||
| std::string GetDeviceName(PaDeviceIndex id); | |||
| std::string GetHostFromDevice(PaDeviceInfo* device); | |||
| std::string GetHostFromDevice(PaDeviceIndex id); | |||
| std::string GetFullName(PaDeviceIndex id); | |||
| std::string GetFullName(std::string hostname, std::string devicename); | |||
| PaDeviceInfo* GetDeviceFromFullName(std::string fullname, PaDeviceIndex& id, bool isInput ); | |||
| void PrintSupportedStandardSampleRates(const PaStreamParameters* inputParameters, const PaStreamParameters* outputParameters); | |||
| int GetInputDeviceFromName(const char* name, PaDeviceIndex& device, int& in_max); | |||
| int GetOutputDeviceFromName(const char* name, PaDeviceIndex& device, int& out_max); | |||
| void DisplayDevicesNames(); | |||
| bool IsDuplex ( PaDeviceIndex id ); | |||
| }; | |||
| #endif | |||
| @@ -1,15 +1,15 @@ | |||
| //{{NO_DEPENDENCIES}} | |||
| // Microsoft Developer Studio generated include file. | |||
| // Used by resource.rc | |||
| // | |||
| // Next default values for new objects | |||
| // | |||
| #ifdef APSTUDIO_INVOKED | |||
| #ifndef APSTUDIO_READONLY_SYMBOLS | |||
| #define _APS_NEXT_RESOURCE_VALUE 102 | |||
| #define _APS_NEXT_COMMAND_VALUE 40001 | |||
| #define _APS_NEXT_CONTROL_VALUE 1000 | |||
| #define _APS_NEXT_SYMED_VALUE 101 | |||
| #endif | |||
| #endif | |||
| //{{NO_DEPENDENCIES}} | |||
| // Microsoft Developer Studio generated include file. | |||
| // Used by resource.rc | |||
| // | |||
| // Next default values for new objects | |||
| // | |||
| #ifdef APSTUDIO_INVOKED | |||
| #ifndef APSTUDIO_READONLY_SYMBOLS | |||
| #define _APS_NEXT_RESOURCE_VALUE 102 | |||
| #define _APS_NEXT_COMMAND_VALUE 40001 | |||
| #define _APS_NEXT_CONTROL_VALUE 1000 | |||
| #define _APS_NEXT_SYMED_VALUE 101 | |||
| #endif | |||
| #endif | |||