Browse Source

New JackWaitThreadedDriver class to better handle JackNetDriver

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2489 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.90
sletz 17 years ago
parent
commit
3f5b7ab9b8
13 changed files with 237 additions and 15 deletions
  1. +14
    -1
      common/JackAudioDriver.cpp
  2. +1
    -0
      common/JackAudioDriver.h
  3. +6
    -0
      common/JackDriver.h
  4. +1
    -1
      common/JackDummyDriver.h
  5. +14
    -2
      common/JackNetDriver.cpp
  6. +9
    -5
      common/JackNetDriver.h
  7. +1
    -1
      common/JackThreadedDriver.cpp
  8. +6
    -2
      common/JackThreadedDriver.h
  9. +85
    -0
      common/JackWaitThreadedDriver.cpp
  10. +86
    -0
      common/JackWaitThreadedDriver.h
  11. +5
    -2
      example-clients/lsp.c
  12. +1
    -1
      example-clients/metro.c
  13. +8
    -0
      macosx/Jackdmp.xcodeproj/project.pbxproj

+ 14
- 1
common/JackAudioDriver.cpp View File

@@ -180,7 +180,20 @@ int JackAudioDriver::Write()


int JackAudioDriver::Process() int JackAudioDriver::Process()
{ {
return (fEngineControl->fSyncMode) ? ProcessSync() : ProcessAsync();
return (fEngineControl->fSyncMode) ? ProcessSync() : ProcessAsync();
}

int JackAudioDriver::ProcessNull()
{
JackDriver::CycleTakeTime();
if (!fEngine->Process(fLastWaitUst)) // fLastWaitUst is set in the "low level" layer
jack_error("JackAudioDriver::ProcessNull Process error");
fGraphManager->ResumeRefNum(fClientControl, fSynchroTable);
if (ProcessSlaves() < 0)
jack_error("JackAudioDriver::ProcessNull ProcessSlaves error");
return 0;
} }


/* /*


+ 1
- 0
common/JackAudioDriver.h View File

@@ -61,6 +61,7 @@ class EXPORT JackAudioDriver : public JackDriver
virtual ~JackAudioDriver(); virtual ~JackAudioDriver();


virtual int Process(); virtual int Process();
virtual int ProcessNull();


virtual int Open(jack_nframes_t nframes, virtual int Open(jack_nframes_t nframes,
jack_nframes_t samplerate, jack_nframes_t samplerate,


+ 6
- 0
common/JackDriver.h View File

@@ -75,6 +75,7 @@ class EXPORT JackDriverInterface
virtual int SetSampleRate(jack_nframes_t sample_rate) = 0; virtual int SetSampleRate(jack_nframes_t sample_rate) = 0;
virtual int Process() = 0; virtual int Process() = 0;
virtual int ProcessNull() = 0;
virtual void SetMaster(bool onoff) = 0; virtual void SetMaster(bool onoff) = 0;
virtual bool GetMaster() = 0; virtual bool GetMaster() = 0;
@@ -188,6 +189,11 @@ class EXPORT JackDriver : public JackDriverClient
return 0; return 0;
} }
virtual int ProcessNull()
{
return 0;
}
virtual int Attach() virtual int Attach()
{ {
return 0; return 0;


+ 1
- 1
common/JackDummyDriver.h View File

@@ -30,7 +30,7 @@ namespace Jack
\brief The dummy driver. \brief The dummy driver.
*/ */


class JackDummyDriver : public JackAudioDriver
class EXPORT JackDummyDriver : public JackAudioDriver
{ {
private: private:




+ 14
- 2
common/JackNetDriver.cpp View File

@@ -25,10 +25,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "driver_interface.h" #include "driver_interface.h"
#include "JackDriverLoader.h" #include "JackDriverLoader.h"
#include "JackThreadedDriver.h" #include "JackThreadedDriver.h"
#include "JackWaitThreadedDriver.h"
#include "JackException.h" #include "JackException.h"
#include "JackExports.h" #include "JackExports.h"


#define DEFAULT_MULTICAST_IP "225.3.19.154"
//#define DEFAULT_MULTICAST_IP "225.3.19.154"
#define DEFAULT_MULTICAST_IP "225.3.19.155"
#define DEFAULT_PORT 19000 #define DEFAULT_PORT 19000


namespace Jack namespace Jack
@@ -85,6 +87,12 @@ namespace Jack
{ {
return 0; return 0;
} }
int JackNetDriver::ProcessNull()
{
usleep(10 * 1000);
return JackAudioDriver::ProcessNull();
}


bool JackNetDriver::Init() bool JackNetDriver::Init()
{ {
@@ -250,7 +258,6 @@ namespace Jack
fMidiPlaybackPortList = NULL; fMidiPlaybackPortList = NULL;
} }



int JackNetDriver::SetParams() int JackNetDriver::SetParams()
{ {
fNSubProcess = fParams.fPeriodSize / fParams.fFramesPerPacket; fNSubProcess = fParams.fPeriodSize / fParams.fFramesPerPacket;
@@ -681,8 +688,13 @@ namespace Jack
strncpy ( name, param->value.str, JACK_CLIENT_NAME_SIZE ); strncpy ( name, param->value.str, JACK_CLIENT_NAME_SIZE );
} }
} }
/*
Jack::JackDriverClientInterface* driver = new Jack::JackRestartThreadedDriver ( Jack::JackDriverClientInterface* driver = new Jack::JackRestartThreadedDriver (
new Jack::JackNetDriver ( "system", "net_pcm", engine, table, multicast_ip, udp_port, midi_input_ports, midi_output_ports, name ) ); new Jack::JackNetDriver ( "system", "net_pcm", engine, table, multicast_ip, udp_port, midi_input_ports, midi_output_ports, name ) );
*/
Jack::JackDriverClientInterface* driver = new Jack::JackWaitThreadedDriver (
new Jack::JackNetDriver ( "system", "net_pcm", engine, table, multicast_ip, udp_port, midi_input_ports, midi_output_ports, name ) );
if ( driver->Open ( period_size, sample_rate, 1, 1, audio_capture_ports, audio_playback_ports, if ( driver->Open ( period_size, sample_rate, 1, 1, audio_capture_ports, audio_playback_ports,
monitor, "from_master_", "to_master_", 0, 0 ) == 0 ) monitor, "from_master_", "to_master_", 0, 0 ) == 0 )
return driver; return driver;


+ 9
- 5
common/JackNetDriver.h View File

@@ -56,9 +56,6 @@ namespace Jack
int fAudioRxLen; int fAudioRxLen;
int fAudioTxLen; int fAudioTxLen;


int Attach();
int Detach();

bool Init(); bool Init();
net_status_t GetNetMaster(); net_status_t GetNetMaster();
net_status_t SendMasterStartSync(); net_status_t SendMasterStartSync();
@@ -72,8 +69,7 @@ namespace Jack


int Recv ( size_t size, int flags ); int Recv ( size_t size, int flags );
int Send ( size_t size, int flags ); int Send ( size_t size, int flags );
int Read();
int Write();
public: public:
JackNetDriver ( const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table, JackNetDriver ( const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table,
const char* ip, size_t port, int midi_input_ports, int midi_output_ports, const char* master_name ); const char* ip, size_t port, int midi_input_ports, int midi_output_ports, const char* master_name );
@@ -82,6 +78,14 @@ namespace Jack
int Open ( jack_nframes_t frames_per_cycle, jack_nframes_t rate, bool capturing, bool playing, int Open ( jack_nframes_t frames_per_cycle, jack_nframes_t rate, bool capturing, bool playing,
int inchannels, int outchannels, bool monitor, const char* capture_driver_name, int inchannels, int outchannels, bool monitor, const char* capture_driver_name,
const char* playback_driver_name, jack_nframes_t capture_latency, jack_nframes_t playback_latency ); const char* playback_driver_name, jack_nframes_t capture_latency, jack_nframes_t playback_latency );
int ProcessNull();
int Attach();
int Detach();
int Read();
int Write();
}; };
} }




+ 1
- 1
common/JackThreadedDriver.cpp View File

@@ -142,6 +142,6 @@ bool JackRestartThreadedDriver::Execute()
return false; return false;
} }
} }
}
}


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

+ 6
- 2
common/JackThreadedDriver.h View File

@@ -73,6 +73,11 @@ class EXPORT JackThreadedDriver : public JackDriverClientInterface, public JackR
{ {
return fDriver->Process(); return fDriver->Process();
} }
int ProcessNull()
{
return fDriver->ProcessNull();
}


int Attach() int Attach()
{ {
@@ -150,7 +155,7 @@ class EXPORT JackThreadedDriver : public JackDriverClientInterface, public JackR


class EXPORT JackRestartThreadedDriver : public JackThreadedDriver class EXPORT JackRestartThreadedDriver : public JackThreadedDriver
{ {
public:
public:


JackRestartThreadedDriver(JackDriverClient* driver):JackThreadedDriver(driver) JackRestartThreadedDriver(JackDriverClient* driver):JackThreadedDriver(driver)
{} {}
@@ -161,7 +166,6 @@ class EXPORT JackRestartThreadedDriver : public JackThreadedDriver
virtual bool Execute(); virtual bool Execute();
}; };



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






+ 85
- 0
common/JackWaitThreadedDriver.cpp View File

@@ -0,0 +1,85 @@
/*
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 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.

*/

#if defined(HAVE_CONFIG_H)
#include "config.h"
#endif

#ifdef WIN32
#pragma warning (disable : 4786)
#endif

#include "JackWaitThreadedDriver.h"
#include "JackGlobals.h"
#include "JackClient.h"
#include "JackEngineControl.h"
#include "JackException.h"
#include "JackError.h"

namespace Jack
{

bool JackWaitThreadedDriver::Init()
{
return (fStarter.Start() == 0);
}

bool JackWaitThreadedDriver::Execute()
{
try {
// Process a null cycle until NetDriver has started
while (!fStarter.fRunning && fThread.GetStatus() == JackThread::kRunning) {
fDriver->ProcessNull();
}
// Set RT
if (fDriver->IsRealTime()) {
jack_log("JackWaitThreadedDriver::Init IsRealTime");
// Will do "something" on OSX only...
fThread.SetParams(GetEngineControl()->fPeriod, GetEngineControl()->fComputation, GetEngineControl()->fConstraint);
if (fThread.AcquireRealTime(GetEngineControl()->fPriority) < 0) {
jack_error("AcquireRealTime error");
} else {
set_threaded_log_function();
}
}
// Switch to keep running even in case of error
while (fThread.GetStatus() == JackThread::kRunning) {
fDriver->Process();
}
return false;
} catch (JackDriverException e) {
e.PrintMessage();
jack_log("Driver is restarted");
fThread.DropRealTime();
// Thread in kIniting status again...
fThread.SetStatus(JackThread::kIniting);
if (Init()) {
// Thread in kRunning status again...
fThread.SetStatus(JackThread::kRunning);
return true;
} else {
return false;
}
}
}

} // end of namespace

+ 86
- 0
common/JackWaitThreadedDriver.h View File

@@ -0,0 +1,86 @@
/*
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 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 __JackWaitThreadedDriver__
#define __JackWaitThreadedDriver__

#include "JackThreadedDriver.h"
#include "JackAudioDriver.h"

namespace Jack
{
class EXPORT JackWaitThreadedDriver : public JackThreadedDriver
{
private:
struct EXPORT JackDriverStarter : public JackRunnableInterface
{
JackDriverClient* fDriver;
JackThread fThread;
bool fRunning;
JackDriverStarter(JackDriverClient* driver)
:fDriver(driver),fThread(this),fRunning(false)
{}
~JackDriverStarter()
{
fThread.Kill();
}
int Start()
{
fRunning = false;
return fThread.Start();
}
// JackRunnableInterface interface
bool Execute()
{
// Blocks until driver is started...
fDriver->Init();
fRunning = true;
return false;
}
};
JackDriverStarter fStarter;
public:

JackWaitThreadedDriver(JackDriverClient* netdriver)
:JackThreadedDriver(netdriver),fStarter(netdriver)
{}
virtual ~JackWaitThreadedDriver()
{}
// JackRunnableInterface interface
bool Init();
bool Execute();
};


} // end of namespace


#endif

+ 5
- 2
example-clients/lsp.c View File

@@ -143,6 +143,8 @@ main (int argc, char *argv[])
} }


ports = jack_get_ports (client, NULL, NULL, 0); ports = jack_get_ports (client, NULL, NULL, 0);
if (!ports)
goto error;


for (i = 0; ports[i]; ++i) { for (i = 0; ports[i]; ++i) {
// skip over any that don't match ALL of the strings presented at command line // skip over any that don't match ALL of the strings presented at command line
@@ -152,10 +154,9 @@ main (int argc, char *argv[])
skip_port = 1; skip_port = 1;
} }
} }
if(skip_port) continue;
if (skip_port) continue;


printf ("%s\n", ports[i]); printf ("%s\n", ports[i]);

port = jack_port_by_name (client, ports[i]); port = jack_port_by_name (client, ports[i]);


if (show_aliases) { if (show_aliases) {
@@ -218,6 +219,8 @@ main (int argc, char *argv[])
} }
} }
} }
error:
jack_client_close (client); jack_client_close (client);
exit (0); exit (0);
} }

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

@@ -259,7 +259,7 @@ main (int argc, char *argv[])
} }


if (jack_activate (client)) { if (jack_activate (client)) {
fprintf (stderr, "cannot activate client");
fprintf (stderr, "cannot activate client\n");
return 1; return 1;
} }


+ 8
- 0
macosx/Jackdmp.xcodeproj/project.pbxproj View File

@@ -518,6 +518,8 @@
4BAB95BB0B9E20B800A0C723 /* JackPortType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAB95B70B9E20B800A0C723 /* JackPortType.h */; }; 4BAB95BB0B9E20B800A0C723 /* JackPortType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BAB95B70B9E20B800A0C723 /* JackPortType.h */; };
4BAB95ED0B9E21A500A0C723 /* JackAudioPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB95EC0B9E21A500A0C723 /* JackAudioPort.cpp */; }; 4BAB95ED0B9E21A500A0C723 /* JackAudioPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB95EC0B9E21A500A0C723 /* JackAudioPort.cpp */; };
4BAB95EE0B9E21A500A0C723 /* JackAudioPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB95EC0B9E21A500A0C723 /* JackAudioPort.cpp */; }; 4BAB95EE0B9E21A500A0C723 /* JackAudioPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BAB95EC0B9E21A500A0C723 /* JackAudioPort.cpp */; };
4BBC93BA0DF9736C002DF220 /* JackWaitThreadedDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BBC93B80DF9736C002DF220 /* JackWaitThreadedDriver.cpp */; };
4BBC93BB0DF9736C002DF220 /* JackWaitThreadedDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBC93B90DF9736C002DF220 /* JackWaitThreadedDriver.h */; };
4BC216850A444BAD00BDA09F /* JackServerAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1F50834EFB000C94B91 /* JackServerAPI.cpp */; }; 4BC216850A444BAD00BDA09F /* JackServerAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BF8D1F50834EFB000C94B91 /* JackServerAPI.cpp */; };
4BC216890A444BDE00BDA09F /* JackServerGlobals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC216880A444BDE00BDA09F /* JackServerGlobals.cpp */; }; 4BC216890A444BDE00BDA09F /* JackServerGlobals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC216880A444BDE00BDA09F /* JackServerGlobals.cpp */; };
4BC2168E0A444BED00BDA09F /* JackServerGlobals.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC2168D0A444BED00BDA09F /* JackServerGlobals.h */; }; 4BC2168E0A444BED00BDA09F /* JackServerGlobals.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC2168D0A444BED00BDA09F /* JackServerGlobals.h */; };
@@ -1267,6 +1269,8 @@
4BAB95B70B9E20B800A0C723 /* JackPortType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackPortType.h; path = ../common/JackPortType.h; sourceTree = SOURCE_ROOT; }; 4BAB95B70B9E20B800A0C723 /* JackPortType.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackPortType.h; path = ../common/JackPortType.h; sourceTree = SOURCE_ROOT; };
4BAB95EC0B9E21A500A0C723 /* JackAudioPort.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackAudioPort.cpp; path = ../common/JackAudioPort.cpp; sourceTree = SOURCE_ROOT; }; 4BAB95EC0B9E21A500A0C723 /* JackAudioPort.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackAudioPort.cpp; path = ../common/JackAudioPort.cpp; sourceTree = SOURCE_ROOT; };
4BB371D40C1AD85A0050C1E4 /* JackNotification.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackNotification.h; path = ../common/JackNotification.h; sourceTree = SOURCE_ROOT; }; 4BB371D40C1AD85A0050C1E4 /* JackNotification.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackNotification.h; path = ../common/JackNotification.h; sourceTree = SOURCE_ROOT; };
4BBC93B80DF9736C002DF220 /* JackWaitThreadedDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JackWaitThreadedDriver.cpp; path = ../common/JackWaitThreadedDriver.cpp; sourceTree = SOURCE_ROOT; };
4BBC93B90DF9736C002DF220 /* JackWaitThreadedDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JackWaitThreadedDriver.h; path = ../common/JackWaitThreadedDriver.h; sourceTree = SOURCE_ROOT; };
4BBD13CC08C71EB40079F7FF /* testSynchroServerClient.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = testSynchroServerClient.cpp; path = ../tests/testSynchroServerClient.cpp; sourceTree = SOURCE_ROOT; }; 4BBD13CC08C71EB40079F7FF /* testSynchroServerClient.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = testSynchroServerClient.cpp; path = ../tests/testSynchroServerClient.cpp; sourceTree = SOURCE_ROOT; };
4BC216880A444BDE00BDA09F /* JackServerGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackServerGlobals.cpp; path = ../common/JackServerGlobals.cpp; sourceTree = SOURCE_ROOT; }; 4BC216880A444BDE00BDA09F /* JackServerGlobals.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackServerGlobals.cpp; path = ../common/JackServerGlobals.cpp; sourceTree = SOURCE_ROOT; };
4BC2168D0A444BED00BDA09F /* JackServerGlobals.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackServerGlobals.h; path = ../common/JackServerGlobals.h; sourceTree = SOURCE_ROOT; }; 4BC2168D0A444BED00BDA09F /* JackServerGlobals.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackServerGlobals.h; path = ../common/JackServerGlobals.h; sourceTree = SOURCE_ROOT; };
@@ -2478,6 +2482,8 @@
4BD56D8707968982006D44F9 /* Threaded */ = { 4BD56D8707968982006D44F9 /* Threaded */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
4BBC93B90DF9736C002DF220 /* JackWaitThreadedDriver.h */,
4BBC93B80DF9736C002DF220 /* JackWaitThreadedDriver.cpp */,
4BF8D1BD0834EEFC00C94B91 /* JackThreadedDriver.h */, 4BF8D1BD0834EEFC00C94B91 /* JackThreadedDriver.h */,
4BF8D1BE0834EEFC00C94B91 /* JackThreadedDriver.cpp */, 4BF8D1BE0834EEFC00C94B91 /* JackThreadedDriver.cpp */,
4BF8D1B90834EEF100C94B91 /* JackFreewheelDriver.h */, 4BF8D1B90834EEF100C94B91 /* JackFreewheelDriver.h */,
@@ -3017,6 +3023,7 @@
4B9A26020DBF8584006E9FBC /* jslist.h in Headers */, 4B9A26020DBF8584006E9FBC /* jslist.h in Headers */,
4B4F9C8D0DC20C0400706CB0 /* JackMessageBuffer.h in Headers */, 4B4F9C8D0DC20C0400706CB0 /* JackMessageBuffer.h in Headers */,
4B5F253E0DEE9B8F0041E486 /* JackLockedEngine.h in Headers */, 4B5F253E0DEE9B8F0041E486 /* JackLockedEngine.h in Headers */,
4BBC93BB0DF9736C002DF220 /* JackWaitThreadedDriver.h in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -5611,6 +5618,7 @@
4B9A25B60DBF8330006E9FBC /* JackError.cpp in Sources */, 4B9A25B60DBF8330006E9FBC /* JackError.cpp in Sources */,
4B02069E0DC0BAB400319AF1 /* JackProcessSync.cpp in Sources */, 4B02069E0DC0BAB400319AF1 /* JackProcessSync.cpp in Sources */,
4B4F9C8C0DC20C0400706CB0 /* JackMessageBuffer.cpp in Sources */, 4B4F9C8C0DC20C0400706CB0 /* JackMessageBuffer.cpp in Sources */,
4BBC93BA0DF9736C002DF220 /* JackWaitThreadedDriver.cpp in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };


Loading…
Cancel
Save