Browse Source

Restore a working version using loopbackdriver.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3506 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/v1.9.3
sletz 16 years ago
parent
commit
9f5bbdbd88
2 changed files with 28 additions and 10 deletions
  1. +26
    -9
      common/JackServer.cpp
  2. +2
    -1
      common/JackServer.h

+ 26
- 9
common/JackServer.cpp View File

@@ -22,6 +22,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackServerGlobals.h" #include "JackServerGlobals.h"
#include "JackTime.h" #include "JackTime.h"
#include "JackFreewheelDriver.h" #include "JackFreewheelDriver.h"
#include "JackLoopbackDriver.h"
#include "JackThreadedDriver.h" #include "JackThreadedDriver.h"
#include "JackGlobals.h" #include "JackGlobals.h"
#include "JackLockedEngine.h" #include "JackLockedEngine.h"
@@ -30,7 +31,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackClientControl.h" #include "JackClientControl.h"
#include "JackEngineControl.h" #include "JackEngineControl.h"
#include "JackGraphManager.h" #include "JackGraphManager.h"
#include "JackMidiDriver.h"
#include "JackInternalClient.h" #include "JackInternalClient.h"
#include "JackError.h" #include "JackError.h"
#include "JackMessageBuffer.h" #include "JackMessageBuffer.h"
@@ -50,9 +50,10 @@ JackServer::JackServer(bool sync, bool temporary, long timeout, bool rt, long pr
fEngineControl = new JackEngineControl(sync, temporary, timeout, rt, priority, verbose, server_name); fEngineControl = new JackEngineControl(sync, temporary, timeout, rt, priority, verbose, server_name);
fEngine = new JackLockedEngine(fGraphManager, GetSynchroTable(), fEngineControl); fEngine = new JackLockedEngine(fGraphManager, GetSynchroTable(), fEngineControl);
fFreewheelDriver = new JackThreadedDriver(new JackFreewheelDriver(fEngine, GetSynchroTable())); fFreewheelDriver = new JackThreadedDriver(new JackFreewheelDriver(fEngine, GetSynchroTable()));
fGenericMidiDriver = new JackMidiDriver("midi_system", "", fEngine, GetSynchroTable()); // TEMPORARY
fLoopbackDriver = new JackLoopbackDriver(fEngine, GetSynchroTable());
fAudioDriver = NULL; fAudioDriver = NULL;
fFreewheel = false; fFreewheel = false;
fLoopback = loopback;
JackServerGlobals::fInstance = this; // Unique instance JackServerGlobals::fInstance = this; // Unique instance
JackServerGlobals::fUserCount = 1; // One user JackServerGlobals::fUserCount = 1; // One user
jack_verbose = verbose; jack_verbose = verbose;
@@ -62,8 +63,8 @@ JackServer::~JackServer()
{ {
delete fGraphManager; delete fGraphManager;
delete fAudioDriver; delete fAudioDriver;
delete fGenericMidiDriver; // TEMPORARY
delete fFreewheelDriver; delete fFreewheelDriver;
delete fLoopbackDriver;
delete fEngine; delete fEngine;
delete fEngineControl; delete fEngineControl;
} }
@@ -87,27 +88,41 @@ int JackServer::Open(jack_driver_desc_t* driver_desc, JSList* driver_params)
jack_error("Cannot initialize driver"); jack_error("Cannot initialize driver");
goto fail_close3; goto fail_close3;
} }
fGenericMidiDriver->Open(1, 1, 0, 0, 0, "", "", 0, 0); // TEMPORARY
if (fFreewheelDriver->Open() != 0) { // before engine open if (fFreewheelDriver->Open() != 0) { // before engine open
jack_error("Cannot open driver"); jack_error("Cannot open driver");
goto fail_close4; goto fail_close4;
} }
if (fLoopbackDriver->Open(fEngineControl->fBufferSize, fEngineControl->fSampleRate, 1, 1, fLoopback, fLoopback, false, "loopback", "loopback", 0, 0) != 0) {
jack_error("Cannot open driver");
goto fail_close5;
}

if (fAudioDriver->Attach() != 0) { if (fAudioDriver->Attach() != 0) {
jack_error("Cannot attach audio driver"); jack_error("Cannot attach audio driver");
goto fail_close5;
goto fail_close6;
}
if (fLoopback > 0 && fLoopbackDriver->Attach() != 0) {
jack_error("Cannot attach loopback driver");
goto fail_close7;
} }
fFreewheelDriver->SetMaster(false); fFreewheelDriver->SetMaster(false);
fGenericMidiDriver->SetMaster(false); // TEMPORARY
fAudioDriver->SetMaster(true); fAudioDriver->SetMaster(true);
if (fLoopback > 0)
fAudioDriver->AddSlave(fLoopbackDriver);
fAudioDriver->AddSlave(fFreewheelDriver); // After ??? fAudioDriver->AddSlave(fFreewheelDriver); // After ???
fAudioDriver->AddSlave(fGenericMidiDriver); // TEMPORARY
InitTime(); InitTime();
return 0; return 0;

fail_close7:
fAudioDriver->Detach();
fail_close6:
fLoopbackDriver->Close();

fail_close5: fail_close5:
fFreewheelDriver->Close(); fFreewheelDriver->Close();


@@ -130,9 +145,11 @@ int JackServer::Close()
jack_log("JackServer::Close"); jack_log("JackServer::Close");
fChannel.Close(); fChannel.Close();
fAudioDriver->Detach(); fAudioDriver->Detach();
if (fLoopback > 0)
fLoopbackDriver->Detach();
fAudioDriver->Close(); fAudioDriver->Close();
fFreewheelDriver->Close(); fFreewheelDriver->Close();
fGenericMidiDriver->Close(); // TEMPORARY
fLoopbackDriver->Close();
fEngine->Close(); fEngine->Close();
// TODO: move that in reworked JackServerGlobals::Destroy() // TODO: move that in reworked JackServerGlobals::Destroy()
JackMessageBuffer::Destroy(); JackMessageBuffer::Destroy();


+ 2
- 1
common/JackServer.h View File

@@ -50,7 +50,7 @@ class SERVER_EXPORT JackServer
JackDriverInfo fDriverInfo; JackDriverInfo fDriverInfo;
JackDriverClientInterface* fAudioDriver; JackDriverClientInterface* fAudioDriver;
JackDriverClientInterface* fFreewheelDriver; JackDriverClientInterface* fFreewheelDriver;
JackDriverClientInterface* fGenericMidiDriver;
JackDriverClientInterface* fLoopbackDriver;
JackLockedEngine* fEngine; JackLockedEngine* fEngine;
JackEngineControl* fEngineControl; JackEngineControl* fEngineControl;
JackGraphManager* fGraphManager; JackGraphManager* fGraphManager;
@@ -58,6 +58,7 @@ class SERVER_EXPORT JackServer
JackConnectionManager fConnectionState; JackConnectionManager fConnectionState;
JackSynchro fSynchroTable[CLIENT_NUM]; JackSynchro fSynchroTable[CLIENT_NUM];
bool fFreewheel; bool fFreewheel;
long fLoopback;
int InternalClientLoadAux(JackLoadableInternalClient* client, const char* so_name, const char* client_name, int options, int* int_ref, int* status); int InternalClientLoadAux(JackLoadableInternalClient* client, const char* so_name, const char* client_name, int options, int* int_ref, int* status);




Loading…
Cancel
Save