From: Stephane L. <le...@us...> - 2010-05-21 08:22:34
|
Update of /cvsroot/jackosx/jackosx/jackrouter2/Source In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv7916/Source Modified Files: JackRouterDevice.cpp JackRouterDevice.h JackRouterPlugIn.cpp JackRouterPlugIn.h Log Message: Emit kAudioDevicePropertyDeviceIsAlive in JackRouterDevice::Destroy(). Index: JackRouterDevice.h =================================================================== RCS file: /cvsroot/jackosx/jackosx/jackrouter2/Source/JackRouterDevice.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** JackRouterDevice.h 20 Nov 2009 14:03:44 -0000 1.11 --- JackRouterDevice.h 21 May 2010 08:22:26 -0000 1.12 *************** *** 122,126 **** virtual void Finalize(); ! virtual void CreateForHAL(AudioDeviceID theNewDeviceID); virtual void ReleaseFromHAL(); --- 122,126 ---- virtual void Finalize(); ! //virtual void CreateForHAL(AudioDeviceID theNewDeviceID); virtual void ReleaseFromHAL(); Index: JackRouterPlugIn.cpp =================================================================== RCS file: /cvsroot/jackosx/jackosx/jackrouter2/Source/JackRouterPlugIn.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** JackRouterPlugIn.cpp 26 Mar 2010 09:11:26 -0000 1.19 --- JackRouterPlugIn.cpp 21 May 2010 08:22:26 -0000 1.20 *************** *** 63,67 **** 07-01-09 : Version 0.90 : S Letz: JackFakeRouterDevice device to be used by "coreaudiod" process (do not need to access JACK server). 22-01-09 : Version 0.91 : S Letz: Fix "dirty buffer issue" with Max/MSP: in JackRouterDevice::Process, output buffers are cleared if GetNumberIOProcs > 0 but GetNumberEnabledIOProcs == 0 ! 24-03-10 : Version 0.93 : S Letz: Use of vDSP_vsma for mixing. */ --- 63,67 ---- 07-01-09 : Version 0.90 : S Letz: JackFakeRouterDevice device to be used by "coreaudiod" process (do not need to access JACK server). 22-01-09 : Version 0.91 : S Letz: Fix "dirty buffer issue" with Max/MSP: in JackRouterDevice::Process, output buffers are cleared if GetNumberIOProcs > 0 but GetNumberEnabledIOProcs == 0 ! 24-03-10 : Version 0.93 : S Letz: Use of vDSP_vsma for mixing. Emit kAudioDevicePropertyDeviceIsAlive in JackRouterDevice::Destroy(). */ *************** *** 94,98 **** using namespace std; ! // JACk set<string>* JackRouterPlugIn::fBlackList = NULL; --- 94,98 ---- using namespace std; ! // JACK set<string>* JackRouterPlugIn::fBlackList = NULL; *************** *** 104,110 **** //============================================================================= ! static char* DefaultServerName() { ! char* server_name; if ((server_name = getenv("JACK_DEFAULT_SERVER")) == NULL) server_name = "default"; --- 104,110 ---- //============================================================================= ! static const char* DefaultServerName() { ! const char* server_name; if ((server_name = getenv("JACK_DEFAULT_SERVER")) == NULL) server_name = "default"; *************** *** 180,234 **** } ! void JackRouterPlugIn::InitializeWithObjectID(AudioObjectID inObjectID) { ! //printf("JackRouterPlugIn::InitializeWithObjectID1\n"); ! JackRouterPlugIn::fPlugInRef = inObjectID; ! ! // initialize the super class ! HP_HardwarePlugIn::InitializeWithObjectID(inObjectID); ! bool prefOK = ReadPref(); ! ! char* id_name = bequite_getNameFromPid((int)getpid()); ! //printf("Initialize inSelf = %ld name = %s\n", inObjectID, id_name); ! // Reject "blacklisted" clients if (fBlackList->find(id_name) != fBlackList->end()) { JARLog("Rejected client = %s\n", id_name); ! throw CAException(kAudioHardwareIllegalOperationError); } - - jack_client_t* client; - const char** ports; - int i; - - if ((client = CheckServer(inObjectID))) { ! if (!prefOK) { ! ! // Input ports ! i = 0; ! if ((ports = jack_get_ports(client, NULL, NULL, JackPortIsPhysical | JackPortIsOutput)) != NULL) { ! while (ports[i]) i++; ! } ! JackRouterDevice::fInputChannels = max(2, i); // At least 2 channels ! // Output ports ! i = 0; ! if ((ports = jack_get_ports(client, NULL, NULL, JackPortIsPhysical | JackPortIsInput)) != NULL) { ! while (ports[i]) i++; ! } ! JackRouterDevice::fOutputChannels = max(2, i); // At least 2 channels ! } ! ! JARLog("fInputChannels = %ld \n", JackRouterDevice::fInputChannels); ! JARLog("fOutputChannels = %ld \n", JackRouterDevice::fOutputChannels); ! jack_client_close(client); ! } else { ! JARLog("jack server not running?\n"); throw CAException(kAudioHardwareIllegalOperationError); ! } ! // instantiate a new AudioDevice object in the HAL AudioDeviceID theNewDeviceID = 0; #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4) --- 180,242 ---- } ! bool JackRouterPlugIn::GetServerParameters(AudioObjectID inObjectID) { ! jack_client_t* client; ! const char** ports; ! int i; ! ! bool prefOK = ReadPref(); ! char* id_name = bequite_getNameFromPid((int)getpid()); ! // Reject "blacklisted" clients if (fBlackList->find(id_name) != fBlackList->end()) { JARLog("Rejected client = %s\n", id_name); ! return false; } ! if ((client = CheckServer(inObjectID))) { ! ! if (!prefOK) { ! ! // Input ports ! i = 0; ! if ((ports = jack_get_ports(client, NULL, NULL, JackPortIsPhysical | JackPortIsOutput)) != NULL) { ! while (ports[i]) i++; ! } ! JackRouterDevice::fInputChannels = max(2, i); // At least 2 ports ! ! // Output ports ! i = 0; ! if ((ports = jack_get_ports(client, NULL, NULL, JackPortIsPhysical | JackPortIsInput)) != NULL) { ! while (ports[i]) i++; ! } ! JackRouterDevice::fOutputChannels = max(2, i); // At least 2 ports ! } ! ! JARLog("fInputChannels = %ld \n", JackRouterDevice::fInputChannels); ! JARLog("fOutputChannels = %ld \n", JackRouterDevice::fOutputChannels); ! jack_client_close(client); ! return true; ! ! } else { ! return false; ! } ! } ! #define DEFAULT_ID 100 ! void JackRouterPlugIn::InitializeWithObjectID(AudioObjectID inObjectID) ! { ! JackRouterPlugIn::fPlugInRef = inObjectID; ! ! // initialize the super class ! HP_HardwarePlugIn::InitializeWithObjectID(inObjectID); ! ! if (!GetServerParameters(inObjectID)) { ! JARLog("jack server not running or rejected client\n"); throw CAException(kAudioHardwareIllegalOperationError); ! } ! // instantiate a new AudioDevice object in the HAL AudioDeviceID theNewDeviceID = 0; #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4) *************** *** 243,251 **** ThrowIfError(theError, CAException(theError), "JackRouterPlugIn::InitializeWithObjectID: couldn't instantiate the AudioDevice object"); ! // make a device object mDevice = new JackRouterDevice(theNewDeviceID, this); mDevice->Initialize(); ! // restore it's settings if necessary UInt32 isMaster = 0; UInt32 theSize = sizeof(UInt32); --- 251,259 ---- ThrowIfError(theError, CAException(theError), "JackRouterPlugIn::InitializeWithObjectID: couldn't instantiate the AudioDevice object"); ! // make a device object mDevice = new JackRouterDevice(theNewDeviceID, this); mDevice->Initialize(); ! // restore it's settings if necessary UInt32 isMaster = 0; UInt32 theSize = sizeof(UInt32); *************** *** 255,262 **** } ! // set the object state mutex HP_Object::SetObjectStateMutexForID(theNewDeviceID, mDevice->GetObjectStateMutex()); ! // tell the HAL about the device #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4) theError = AudioHardwareDevicesCreated(GetInterface(), 1, &theNewDeviceID); --- 263,270 ---- } ! // set the object state mutex HP_Object::SetObjectStateMutexForID(theNewDeviceID, mDevice->GetObjectStateMutex()); ! // tell the HAL about the device #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4) theError = AudioHardwareDevicesCreated(GetInterface(), 1, &theNewDeviceID); *************** *** 269,272 **** --- 277,282 ---- void JackRouterPlugIn::Teardown() { + JARLog("JackRouterPlugIn::Teardown \n"); + // first figure out if this is being done as part of the process being torn down UInt32 isInitingOrExiting = 0; *************** *** 291,294 **** --- 301,306 ---- CAPropertyAddress theIsAliveAddress(kAudioDevicePropertyDeviceIsAlive); mDevice->PropertiesChanged(1, &theIsAliveAddress); + + JARLog("JackRouterPlugIn::Teardown kAudioDevicePropertyDeviceIsAlive \n"); // save it's settings if necessary *************** *** 339,342 **** --- 351,363 ---- return; } + + /* + JARLog("JackRouterPlugIn::AddForHAL\n"); + + if (!GetServerParameters(DEFAULT_ID)) { + JARLog("jack server not running or rejected client\n"); + return; + } + */ // instantiate a new AudioDevice object in the HAL *************** *** 356,359 **** --- 377,381 ---- // check loading process... + //char* id_name = bequite_getNameFromPid((int)getpid()); if (strcmp("coreaudiod", id_name) == 0) { mDevice = new JackFakeRouterDevice(theNewDeviceID, this); *************** *** 387,390 **** --- 409,413 ---- void JackRouterPlugIn::ReleaseFromHAL() { + JARLog("JackRouterPlugIn::ReleaseFromHAL\n"); if (mDevice) mDevice->ReleaseFromHAL(); *************** *** 499,520 **** int nullo; int input, output, autoconnect, debug, default_input, default_output, default_system; ! fscanf( ! prefFile, "\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%s", ! &input, ! &nullo, ! &output, ! &nullo, ! &autoconnect, ! &nullo, ! &default_input, ! &nullo, ! &default_output, ! &nullo, ! &default_system, ! &nullo, ! &debug, ! &nullo, ! JackRouterDevice::fCoreAudioDriverUID ! ); printf("fCoreAudioDriverUID %s\n", JackRouterDevice::fCoreAudioDriverUID); --- 522,541 ---- int nullo; int input, output, autoconnect, debug, default_input, default_output, default_system; ! fscanf(prefFile, "\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%s", ! &input, ! &nullo, ! &output, ! &nullo, ! &autoconnect, ! &nullo, ! &default_input, ! &nullo, ! &default_output, ! &nullo, ! &default_system, ! &nullo, ! &debug, ! &nullo, ! JackRouterDevice::fCoreAudioDriverUID); printf("fCoreAudioDriverUID %s\n", JackRouterDevice::fCoreAudioDriverUID); Index: JackRouterDevice.cpp =================================================================== RCS file: /cvsroot/jackosx/jackosx/jackrouter2/Source/JackRouterDevice.cpp,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** JackRouterDevice.cpp 26 Mar 2010 09:11:26 -0000 1.19 --- JackRouterDevice.cpp 21 May 2010 08:22:26 -0000 1.20 *************** *** 1031,1034 **** --- 1031,1035 ---- } + /* void JackRouterDevice::CreateForHAL(AudioDeviceID theNewDeviceID) { *************** *** 1037,1040 **** --- 1038,1042 ---- CreateStreams(); } + */ void JackRouterDevice::ReleaseStreams() *************** *** 1080,1091 **** void JackRouterDevice::ReleaseFromHAL() { ! AudioObjectID theObjectID = GetObjectID(); #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4) ! OSStatus theError = AudioHardwareDevicesDied(mSHPPlugIn->GetInterface(), 1, &theObjectID); #else ! OSStatus theError = AudioObjectsPublishedAndDied(mSHPPlugIn->GetInterface(), kAudioObjectSystemObject, 0, NULL, 1, &theObjectID); #endif ! AssertNoError(theError, "JackRouterPlugIn::Teardown: got an error telling the HAL a device died"); ! Destroy(); } --- 1082,1094 ---- void JackRouterDevice::ReleaseFromHAL() { ! JARLog("JackRouterDevice::ReleaseFromHAL\n"); ! AudioObjectID theObjectID = GetObjectID(); #if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_4) ! OSStatus theError = AudioHardwareDevicesDied(mSHPPlugIn->GetInterface(), 1, &theObjectID); #else ! OSStatus theError = AudioObjectsPublishedAndDied(mSHPPlugIn->GetInterface(), kAudioObjectSystemObject, 0, NULL, 1, &theObjectID); #endif ! AssertNoError(theError, "JackRouterPlugIn::Teardown: got an error telling the HAL a device died"); ! Destroy(); } *************** *** 1664,1668 **** void JackRouterDevice::Close() { ! JARLog("Close\n"); if (fClient) { --- 1667,1671 ---- void JackRouterDevice::Close() { ! JARLog("JackRouterDevice::Close\n"); if (fClient) { *************** *** 1677,1681 **** void JackRouterDevice::Destroy() { ! JARLog("Close\n"); if (fClient) { --- 1680,1687 ---- void JackRouterDevice::Destroy() { ! JARLog("JackRouterDevice::Destroy\n"); ! ! CAPropertyAddress theIsAliveAddress(kAudioDevicePropertyDeviceIsAlive); ! PropertiesChanged(1, &theIsAliveAddress); if (fClient) { Index: JackRouterPlugIn.h =================================================================== RCS file: /cvsroot/jackosx/jackosx/jackrouter2/Source/JackRouterPlugIn.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** JackRouterPlugIn.h 9 Jan 2009 10:13:06 -0000 1.3 --- JackRouterPlugIn.h 21 May 2010 08:22:26 -0000 1.4 *************** *** 99,103 **** // SHP_SingleDevice Support private: ! JackRouterDeviceInterface* mDevice; // JACK --- 99,103 ---- // SHP_SingleDevice Support private: ! JackRouterDeviceInterface* mDevice; // JACK *************** *** 106,109 **** --- 106,110 ---- bool ReadPref(); jack_client_t* CheckServer(AudioObjectID inSelf); + bool GetServerParameters(AudioObjectID inSelf); }; |