Changeset 3917
- Timestamp:
- 02/18/10 01:08:09 (5 months ago)
- Files:
-
- jack2/branches/libjacknet/ChangeLog (modified) (1 diff)
- jack2/branches/libjacknet/common/jack/types.h (modified) (1 diff)
- jack2/branches/libjacknet/common/jack/weakmacros.h (modified) (2 diffs)
- jack2/branches/libjacknet/common/JackAudioDriver.cpp (modified) (3 diffs)
- jack2/branches/libjacknet/common/JackClient.cpp (modified) (1 diff)
- jack2/branches/libjacknet/common/JackConstants.h (modified) (1 diff)
- jack2/branches/libjacknet/common/JackDriver.h (modified) (1 diff)
- jack2/branches/libjacknet/common/JackEngine.cpp (modified) (19 diffs)
- jack2/branches/libjacknet/common/JackEngine.h (modified) (3 diffs)
- jack2/branches/libjacknet/common/JackEngineControl.cpp (modified) (1 diff)
- jack2/branches/libjacknet/common/JackEngineControl.h (modified) (1 diff)
- jack2/branches/libjacknet/common/JackGraphManager.cpp (modified) (1 diff)
- jack2/branches/libjacknet/common/JackGraphManager.h (modified) (2 diffs)
- jack2/branches/libjacknet/common/JackLockedEngine.h (modified) (27 diffs)
- jack2/branches/libjacknet/common/JackMidiDriver.cpp (modified) (3 diffs)
- jack2/branches/libjacknet/common/JackMutex.h (modified) (1 diff)
- jack2/branches/libjacknet/common/JackNetOneDriver.cpp (modified) (4 diffs)
- jack2/branches/libjacknet/doxyfile (modified) (1 diff)
- jack2/branches/libjacknet/example-clients/lsp.c (modified) (1 diff)
- jack2/branches/libjacknet/linux/alsa/alsa_rawmidi.c (modified) (1 diff)
- jack2/branches/libjacknet/linux/alsa/alsa_seqmidi.c (modified) (1 diff)
- jack2/branches/libjacknet/linux/alsa/JackAlsaDriver.cpp (modified) (3 diffs)
- jack2/branches/libjacknet/linux/firewire/JackFFADODriver.cpp (modified) (8 diffs)
- jack2/branches/libjacknet/linux/freebob/JackFreebobDriver.cpp (modified) (5 diffs)
- jack2/branches/libjacknet/macosx/coreaudio/JackCoreAudioDriver.cpp (modified) (5 diffs)
- jack2/branches/libjacknet/macosx/coremidi/JackCoreMidiDriver.cpp (modified) (4 diffs)
- jack2/branches/libjacknet/macosx/Jack-Info.plist (modified) (2 diffs)
- jack2/branches/libjacknet/macosx/Jackdmp.xcodeproj/project.pbxproj (modified) (9 diffs)
- jack2/branches/libjacknet/posix/JackNetUnixSocket.cpp (modified) (1 diff)
- jack2/branches/libjacknet/posix/JackPosixMutex.h (modified) (2 diffs)
- jack2/branches/libjacknet/README (modified) (1 diff)
- jack2/branches/libjacknet/tests/test.cpp (modified) (6 diffs)
- jack2/branches/libjacknet/windows/jackaudioadapter.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/jackd.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/jacknetadapter.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/jacknetdriver.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/jacknetmanager.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/jackportaudio.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/JackRouter/resource.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/jackwinmme.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/JackWinMutex.h (modified) (3 diffs)
- jack2/branches/libjacknet/windows/libjack.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/libjackserver.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/resource.rc (modified) (2 diffs)
- jack2/branches/libjacknet/windows/Setup/jack.ci (modified) (2 diffs)
- jack2/branches/libjacknet/windows/Setup/JackRouter.dll (modified) (previous)
- jack2/branches/libjacknet/windows/winmme/JackWinMMEDriver.cpp (modified) (4 diffs)
- jack2/branches/libjacknet/wscript (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
jack2/branches/libjacknet/ChangeLog
r3900 r3917 30 30 --------------------------- 31 31 32 2010-02-15 Gabriel M. Beddingfield <gabriel@teuton.org> 33 34 * Version 1.9.6 started. 35 32 36 2010-01-29 Gabriel M. Beddingfield <gabriel@teuton.org> 33 37 jack2/branches/libjacknet/common/jack/types.h
r3900 r3917 296 296 * their ports. 297 297 */ 298 JackPortIsTerminal = 0x10 298 JackPortIsTerminal = 0x10, 299 300 /** 301 * JackPortIsActive means the port has been registered and the 302 * client is "active", that is jack_activate has been called 303 * 304 * JackPortIsActive is on between jack_activate and jack_deactivate. 305 */ 306 JackPortIsActive = 0x20 299 307 }; 300 308 jack2/branches/libjacknet/common/jack/weakmacros.h
r3900 r3917 44 44 #else 45 45 /* Add other things here for non-gcc platforms */ 46 #define JACK_WEAK_EXPORT 46 47 #endif 47 48 #endif … … 56 57 #else 57 58 /* Add other things here for non-gcc platforms */ 59 #define JACK_OPTIONAL_WEAK_DEPRECATED_EXPORT 58 60 #endif /* __GNUC__ */ 59 61 #endif jack2/branches/libjacknet/common/JackAudioDriver.cpp
r3639 r3917 102 102 char name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 103 103 char alias[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 104 unsigned long port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;105 104 int i; 106 105 … … 110 109 snprintf(alias, sizeof(alias) - 1, "%s:%s:out%d", fAliasName, fCaptureDriverName, i + 1); 111 110 snprintf(name, sizeof(name) - 1, "%s:capture_%d", fClientControl.fName, i + 1); 112 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {111 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, CaptureDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 113 112 jack_error("driver: cannot register port for %s", name); 114 113 return -1; … … 121 120 } 122 121 123 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;124 125 122 for (i = 0; i < fPlaybackChannels; i++) { 126 123 snprintf(alias, sizeof(alias) - 1, "%s:%s:in%d", fAliasName, fPlaybackDriverName, i + 1); 127 124 snprintf(name, sizeof(name) - 1, "%s:playback_%d", fClientControl.fName, i + 1); 128 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {125 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, PlaybackDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 129 126 jack_error("driver: cannot register port for %s", name); 130 127 return -1; jack2/branches/libjacknet/common/JackClient.cpp
r3900 r3917 253 253 254 254 case kPortRenameCallback: 255 jack_log("JackClient::kPortRenameCallback port = %ld" );255 jack_log("JackClient::kPortRenameCallback port = %ld", value1); 256 256 if (fPortRename) { 257 257 fPortRename(value1, message, GetGraphManager()->GetPort(value1)->GetName(), fPortRenameArg); jack2/branches/libjacknet/common/JackConstants.h
r3900 r3917 25 25 #endif 26 26 27 #define VERSION "1.9. 5"27 #define VERSION "1.9.6" 28 28 29 29 #define BUFFER_SIZE_MAX 8192 jack2/branches/libjacknet/common/JackDriver.h
r3685 r3917 110 110 \brief The base class for drivers. 111 111 */ 112 113 #define CaptureDriverFlags static_cast<JackPortFlags>(JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal | JackPortIsActive) 114 #define PlaybackDriverFlags static_cast<JackPortFlags>(JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal | JackPortIsActive) 115 #define MonitorDriverFlags static_cast<JackPortFlags>(JackPortIsOutput | JackPortIsActive) 112 116 113 117 class SERVER_EXPORT JackDriver : public JackDriverClientInterface jack2/branches/libjacknet/common/JackEngine.cpp
r3900 r3917 35 35 namespace Jack 36 36 { 37 38 #define AssertRefnum(ref) assert(ref >= 0 && ref < CLIENT_NUM);39 37 40 38 JackEngine::JackEngine(JackGraphManager* manager, … … 214 212 215 213 // The client may be notified by the RT thread while closing 216 if (!client) { 217 jack_log("JackEngine::NotifyClient: client not available anymore"); 218 } else if (client->GetClientControl()->fCallback[event]) { 219 if (client->ClientNotify(refnum, client->GetClientControl()->fName, event, sync, message, value1, value2) < 0) 220 jack_error("NotifyClient fails name = %s event = %ld val1 = %ld val2 = %ld", client->GetClientControl()->fName, event, value1, value2); 221 } else { 222 jack_log("JackEngine::NotifyClient: no callback for event = %ld", event); 223 } 224 } 225 226 void JackEngine::NotifyClients(int event, int sync, const char* message, int value1, int value2) 214 if (client) { 215 216 if (client && client->GetClientControl()->fCallback[event]) { 217 /* 218 Important for internal clients : unlock before calling the notification callbacks. 219 */ 220 bool res = fMutex.Unlock(); 221 if (client->ClientNotify(refnum, client->GetClientControl()->fName, event, sync, message, value1, value2) < 0) 222 jack_error("NotifyClient fails name = %s event = %ld val1 = %ld val2 = %ld", client->GetClientControl()->fName, event, value1, value2); 223 if (res) 224 fMutex.Lock(); 225 226 } else { 227 jack_log("JackEngine::NotifyClient: no callback for event = %ld", event); 228 } 229 } 230 } 231 232 void JackEngine::NotifyClients(int event, int sync, const char* message, int value1, int value2) 227 233 { 228 234 for (int i = 0; i < CLIENT_NUM; i++) { 229 JackClientInterface* client = fClientTable[i]; 230 if (client) { 231 if (client->GetClientControl()->fCallback[event]) { 232 if (client->ClientNotify(i, client->GetClientControl()->fName, event, sync, message, value1, value2) < 0) 233 jack_error("NotifyClient fails name = %s event = %ld val1 = %ld val2 = %ld", client->GetClientControl()->fName, event, value1, value2); 234 } else { 235 jack_log("JackEngine::NotifyClients: no callback for event = %ld", event); 236 } 237 } 235 NotifyClient(i, event, sync, message, value1, value2); 238 236 } 239 237 } … … 275 273 { 276 274 // Use the audio thread => request thread communication channel 277 fEngineControl->ResetFrameTime(callback_usecs); 278 fEngineControl->NotifyXRun(delayed_usecs); 275 fEngineControl->NotifyXRun(callback_usecs, delayed_usecs); 279 276 fChannel.Notify(ALL_CLIENTS, kXRunCallback, 0); 280 277 } … … 349 346 int JackEngine::GetInternalClientName(int refnum, char* name_res) 350 347 { 351 AssertRefnum(refnum);352 348 JackClientInterface* client = fClientTable[refnum]; 353 if (client) { 354 strncpy(name_res, client->GetClientControl()->fName, JACK_CLIENT_NAME_SIZE); 355 return 0; 356 } else { 357 return -1; 358 } 349 strncpy(name_res, client->GetClientControl()->fName, JACK_CLIENT_NAME_SIZE); 350 return 0; 359 351 } 360 352 … … 379 371 int JackEngine::InternalClientUnload(int refnum, int* status) 380 372 { 381 AssertRefnum(refnum);382 373 JackClientInterface* client = fClientTable[refnum]; 383 374 if (client) { … … 593 584 int JackEngine::ClientExternalClose(int refnum) 594 585 { 595 AssertRefnum(refnum);596 586 JackClientInterface* client = fClientTable[refnum]; 597 598 if (client) { 599 fEngineControl->fTransport.ResetTimebase(refnum); 600 int res = ClientCloseAux(refnum, client, true); 601 client->Close(); 602 delete client; 603 return res; 604 } else { 605 return -1; 606 } 587 fEngineControl->fTransport.ResetTimebase(refnum); 588 int res = ClientCloseAux(refnum, client, true); 589 client->Close(); 590 delete client; 591 return res; 607 592 } 608 593 … … 610 595 int JackEngine::ClientInternalClose(int refnum, bool wait) 611 596 { 612 AssertRefnum(refnum);613 597 JackClientInterface* client = fClientTable[refnum]; 614 return (client) ? ClientCloseAux(refnum, client, wait) : -1;598 return ClientCloseAux(refnum, client, wait); 615 599 } 616 600 … … 657 641 int JackEngine::ClientActivate(int refnum, bool is_real_time) 658 642 { 659 AssertRefnum(refnum);660 643 JackClientInterface* client = fClientTable[refnum]; 661 assert(fClientTable[refnum]);662 663 644 jack_log("JackEngine::ClientActivate ref = %ld name = %s", refnum, client->GetClientControl()->fName); 645 664 646 if (is_real_time) 665 647 fGraphManager->Activate(refnum); … … 670 652 return -1; 671 653 } else { 654 jack_int_t input_ports[PORT_NUM_FOR_CLIENT]; 655 jack_int_t output_ports[PORT_NUM_FOR_CLIENT]; 656 fGraphManager->GetInputPorts(refnum, input_ports); 657 fGraphManager->GetOutputPorts(refnum, output_ports); 658 659 // First add port state to JackPortIsActive 660 for (int i = 0; (i < PORT_NUM_FOR_CLIENT) && (input_ports[i] != EMPTY); i++) { 661 fGraphManager->ActivatePort(input_ports[i]); 662 } 663 for (int i = 0; (i < PORT_NUM_FOR_CLIENT) && (output_ports[i] != EMPTY); i++) { 664 fGraphManager->ActivatePort(output_ports[i]); 665 } 666 667 // Notify client 672 668 NotifyActivate(refnum); 669 670 // Then issue port registration notification 671 for (int i = 0; (i < PORT_NUM_FOR_CLIENT) && (input_ports[i] != EMPTY); i++) { 672 NotifyPortRegistation(input_ports[i], true); 673 } 674 for (int i = 0; (i < PORT_NUM_FOR_CLIENT) && (output_ports[i] != EMPTY); i++) { 675 NotifyPortRegistation(output_ports[i], true); 676 } 677 673 678 return 0; 674 679 } … … 678 683 int JackEngine::ClientDeactivate(int refnum) 679 684 { 680 AssertRefnum(refnum);681 685 JackClientInterface* client = fClientTable[refnum]; 682 if (client == NULL)683 return -1;684 685 686 jack_log("JackEngine::ClientDeactivate ref = %ld name = %s", refnum, client->GetClientControl()->fName); 686 687 687 // Disconnect all ports ==> notifications are sent 688 jack_int_t ports[PORT_NUM_FOR_CLIENT]; 689 int i; 690 691 fGraphManager->GetInputPorts(refnum, ports); 692 for (i = 0; (i < PORT_NUM_FOR_CLIENT) && (ports[i] != EMPTY) ; i++) { 693 PortDisconnect(refnum, ports[i], ALL_PORTS); 694 } 695 696 fGraphManager->GetOutputPorts(refnum, ports); 697 for (i = 0; (i < PORT_NUM_FOR_CLIENT) && (ports[i] != EMPTY) ; i++) { 698 PortDisconnect(refnum, ports[i], ALL_PORTS); 688 jack_int_t input_ports[PORT_NUM_FOR_CLIENT]; 689 jack_int_t output_ports[PORT_NUM_FOR_CLIENT]; 690 fGraphManager->GetInputPorts(refnum, input_ports); 691 fGraphManager->GetOutputPorts(refnum, output_ports); 692 693 // First disconnect all ports and remove their JackPortIsActive state 694 for (int i = 0; (i < PORT_NUM_FOR_CLIENT) && (input_ports[i] != EMPTY); i++) { 695 PortDisconnect(refnum, input_ports[i], ALL_PORTS); 696 fGraphManager->DeactivatePort(input_ports[i]); 697 } 698 for (int i = 0; (i < PORT_NUM_FOR_CLIENT) && (output_ports[i] != EMPTY); i++) { 699 PortDisconnect(refnum, output_ports[i], ALL_PORTS); 700 fGraphManager->DeactivatePort(output_ports[i]); 701 } 702 703 // Then issue port registration notification 704 for (int i = 0; (i < PORT_NUM_FOR_CLIENT) && (input_ports[i] != EMPTY); i++) { 705 NotifyPortRegistation(input_ports[i], false); 706 } 707 for (int i = 0; (i < PORT_NUM_FOR_CLIENT) && (output_ports[i] != EMPTY); i++) { 708 NotifyPortRegistation(output_ports[i], false); 699 709 } 700 710 … … 718 728 { 719 729 jack_log("JackEngine::PortRegister ref = %ld name = %s type = %s flags = %d buffer_size = %d", refnum, name, type, flags, buffer_size); 720 AssertRefnum(refnum); 721 assert(fClientTable[refnum]); 730 JackClientInterface* client = fClientTable[refnum]; 722 731 723 732 // Check if port name already exists … … 729 738 *port_index = fGraphManager->AllocatePort(refnum, name, type, (JackPortFlags)flags, fEngineControl->fBufferSize); 730 739 if (*port_index != NO_PORT) { 731 NotifyPortRegistation(*port_index, true); 740 if (client->GetClientControl()->fActive) 741 NotifyPortRegistation(*port_index, true); 732 742 return 0; 733 743 } else { … … 739 749 { 740 750 jack_log("JackEngine::PortUnRegister ref = %ld port_index = %ld", refnum, port_index); 741 AssertRefnum(refnum); 742 assert(fClientTable[refnum]); 751 JackClientInterface* client = fClientTable[refnum]; 743 752 744 753 // Disconnect port ==> notification is sent … … 746 755 747 756 if (fGraphManager->ReleasePort(refnum, port_index) == 0) { 748 NotifyPortRegistation(port_index, false); 757 if (client->GetClientControl()->fActive) 758 NotifyPortRegistation(port_index, false); 749 759 return 0; 750 760 } else { … … 756 766 { 757 767 jack_log("JackEngine::PortConnect src = %s dst = %s", src, dst); 758 AssertRefnum(refnum);759 768 jack_port_id_t port_src, port_dst; 760 769 … … 767 776 { 768 777 jack_log("JackEngine::PortConnect src = %d dst = %d", src, dst); 769 AssertRefnum(refnum);770 778 JackClientInterface* client; 771 779 int ref; … … 803 811 { 804 812 jack_log("JackEngine::PortDisconnect src = %s dst = %s", src, dst); 805 AssertRefnum(refnum);806 813 jack_port_id_t port_src, port_dst; 807 814 … … 814 821 { 815 822 jack_log("JackEngine::PortDisconnect src = %d dst = %d", src, dst); 816 AssertRefnum(refnum); 817 823 818 824 if (dst == ALL_PORTS) { 819 825 … … 851 857 int JackEngine::PortRename(int refnum, jack_port_id_t port, const char* name) 852 858 { 853 AssertRefnum(refnum);854 859 char old_name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 855 860 strcpy(old_name, fGraphManager->GetPort(port)->GetName()); jack2/branches/libjacknet/common/JackEngine.h
r3900 r3917 24 24 #include "JackGraphManager.h" 25 25 #include "JackSynchro.h" 26 #include "JackMutex.h" 26 27 #include "JackTransportEngine.h" 27 28 #include "JackPlatformPlug.h" … … 38 39 */ 39 40 40 class SERVER_EXPORT JackEngine 41 class SERVER_EXPORT JackEngine : public JackLockAble 41 42 { 43 friend class JackLockedEngine; 44 42 45 private: 43 46 … … 72 75 void NotifyPortRename(jack_port_id_t src, const char* old_name); 73 76 void NotifyActivate(int refnum); 77 78 bool CheckClient(int refnum) 79 { 80 return (refnum >= 0 && refnum < CLIENT_NUM && fClientTable[refnum] != NULL); 81 } 74 82 75 83 public: jack2/branches/libjacknet/common/JackEngineControl.cpp
r3529 r3917 82 82 } 83 83 84 void JackEngineControl::NotifyXRun( float delayed_usecs)84 void JackEngineControl::NotifyXRun(jack_time_t callback_usecs, float delayed_usecs) 85 85 { 86 ResetFrameTime(callback_usecs); 86 87 fXrunDelayedUsecs = delayed_usecs; 87 88 if (delayed_usecs > fMaxDelayedUsecs) jack2/branches/libjacknet/common/JackEngineControl.h
r3814 r3917 163 163 164 164 // XRun 165 void NotifyXRun( float delayed_usecs);165 void NotifyXRun(jack_time_t callback_usecs, float delayed_usecs); 166 166 void ResetXRun() 167 167 { jack2/branches/libjacknet/common/JackGraphManager.cpp
r3900 r3917 377 377 } 378 378 379 void JackGraphManager::ActivatePort(jack_port_id_t port_index) 380 { 381 JackPort* port = GetPort(port_index); 382 port->fFlags = (JackPortFlags)(port->fFlags | JackPortIsActive); 383 } 384 385 void JackGraphManager::DeactivatePort(jack_port_id_t port_index) 386 { 387 JackPort* port = GetPort(port_index); 388 port->fFlags = (JackPortFlags)(port->fFlags | ~JackPortIsActive); 389 } 390 379 391 void JackGraphManager::GetInputPorts(int refnum, jack_int_t* res) 380 392 { jack2/branches/libjacknet/common/JackGraphManager.h
r3900 r3917 66 66 jack_port_id_t AllocatePort(int refnum, const char* port_name, const char* port_type, JackPortFlags flags, jack_nframes_t buffer_size); 67 67 int ReleasePort(int refnum, jack_port_id_t port_index); 68 void ActivatePort(jack_port_id_t port_index); 69 void DeactivatePort(jack_port_id_t port_index); 68 70 void GetInputPorts(int refnum, jack_int_t* res); 69 71 void GetOutputPorts(int refnum, jack_int_t* res); … … 76 78 int ComputeTotalLatencies(); 77 79 int RequestMonitor(jack_port_id_t port_index, bool onoff); 78 80 79 81 // Connections management 80 82 int Connect(jack_port_id_t src_index, jack_port_id_t dst_index); jack2/branches/libjacknet/common/JackLockedEngine.h
r3900 r3917 38 38 // Assuming thread cancellation, must rethrow 39 39 throw; 40 41 40 } 42 41 */ … … 63 62 } \ 64 63 64 65 65 /*! 66 66 \brief Locked Engine, access to methods is serialized using a mutex. 67 67 */ 68 68 69 class SERVER_EXPORT JackLockedEngine : public JackLockAble69 class SERVER_EXPORT JackLockedEngine 70 70 { 71 71 private: … … 100 100 { 101 101 TRY_CALL 102 JackLock lock( this);102 JackLock lock(&fEngine); 103 103 return fEngine.ClientCheck(name, name_res, protocol, options, status); 104 104 CATCH_EXCEPTION_RETURN … … 107 107 { 108 108 TRY_CALL 109 JackLock lock( this);109 JackLock lock(&fEngine); 110 110 return fEngine.ClientExternalOpen(name, pid, ref, shared_engine, shared_client, shared_graph_manager); 111 111 CATCH_EXCEPTION_RETURN … … 114 114 { 115 115 TRY_CALL 116 JackLock lock( this);116 JackLock lock(&fEngine); 117 117 return fEngine.ClientInternalOpen(name, ref, shared_engine, shared_manager, client, wait); 118 118 CATCH_EXCEPTION_RETURN … … 122 122 { 123 123 TRY_CALL 124 JackLock lock( this);125 return fEngine.ClientExternalClose(refnum);124 JackLock lock(&fEngine); 125 return (fEngine.CheckClient(refnum)) ? fEngine.ClientExternalClose(refnum) : - 1; 126 126 CATCH_EXCEPTION_RETURN 127 127 } … … 129 129 { 130 130 TRY_CALL 131 JackLock lock( this);132 return fEngine.ClientInternalClose(refnum, wait);131 JackLock lock(&fEngine); 132 return (fEngine.CheckClient(refnum)) ? fEngine.ClientInternalClose(refnum, wait) : -1; 133 133 CATCH_EXCEPTION_RETURN 134 134 } … … 137 137 { 138 138 TRY_CALL 139 JackLock lock( this);140 return fEngine.ClientActivate(refnum, is_real_time);139 JackLock lock(&fEngine); 140 return (fEngine.CheckClient(refnum)) ? fEngine.ClientActivate(refnum, is_real_time) : -1; 141 141 CATCH_EXCEPTION_RETURN 142 142 } … … 144 144 { 145 145 TRY_CALL 146 JackLock lock( this);147 return fEngine.ClientDeactivate(refnum);146 JackLock lock(&fEngine); 147 return (fEngine.CheckClient(refnum)) ? fEngine.ClientDeactivate(refnum) : -1; 148 148 CATCH_EXCEPTION_RETURN 149 149 } … … 153 153 { 154 154 TRY_CALL 155 JackLock lock( this);155 JackLock lock(&fEngine); 156 156 return fEngine.GetInternalClientName(int_ref, name_res); 157 157 CATCH_EXCEPTION_RETURN … … 160 160 { 161 161 TRY_CALL 162 JackLock lock( this);162 JackLock lock(&fEngine); 163 163 return fEngine.InternalClientHandle(client_name, status, int_ref); 164 164 CATCH_EXCEPTION_RETURN … … 167 167 { 168 168 TRY_CALL 169 JackLock lock(this); 169 JackLock lock(&fEngine); 170 // Client is tested in fEngine.InternalClientUnload 170 171 return fEngine.InternalClientUnload(refnum, status); 171 172 CATCH_EXCEPTION_RETURN … … 176 177 { 177 178 TRY_CALL 178 JackLock lock( this);179 return fEngine.PortRegister(refnum, name, type, flags, buffer_size, port);179 JackLock lock(&fEngine); 180 return (fEngine.CheckClient(refnum)) ? fEngine.PortRegister(refnum, name, type, flags, buffer_size, port) : -1; 180 181 CATCH_EXCEPTION_RETURN 181 182 } … … 183 184 { 184 185 TRY_CALL 185 JackLock lock( this);186 return fEngine.PortUnRegister(refnum, port);186 JackLock lock(&fEngine); 187 return (fEngine.CheckClient(refnum)) ? fEngine.PortUnRegister(refnum, port) : -1; 187 188 CATCH_EXCEPTION_RETURN 188 189 } … … 191 192 { 192 193 TRY_CALL 193 JackLock lock( this);194 return fEngine.PortConnect(refnum, src, dst);194 JackLock lock(&fEngine); 195 return (fEngine.CheckClient(refnum)) ? fEngine.PortConnect(refnum, src, dst) : -1; 195 196 CATCH_EXCEPTION_RETURN 196 197 } … … 198 199 { 199 200 TRY_CALL 200 JackLock lock( this);201 return fEngine.PortDisconnect(refnum, src, dst);201 JackLock lock(&fEngine); 202 return (fEngine.CheckClient(refnum)) ? fEngine.PortDisconnect(refnum, src, dst) : -1; 202 203 CATCH_EXCEPTION_RETURN 203 204 } … … 206 207 { 207 208 TRY_CALL 208 JackLock lock( this);209 return fEngine.PortConnect(refnum, src, dst);209 JackLock lock(&fEngine); 210 return (fEngine.CheckClient(refnum)) ? fEngine.PortConnect(refnum, src, dst) : -1; 210 211 CATCH_EXCEPTION_RETURN 211 212 } … … 213 214 { 214 215 TRY_CALL 215 JackLock lock( this);216 return fEngine.PortDisconnect(refnum, src, dst);216 JackLock lock(&fEngine); 217 return (fEngine.CheckClient(refnum)) ? fEngine.PortDisconnect(refnum, src, dst) : -1; 217 218 CATCH_EXCEPTION_RETURN 218 219 } … … 221 222 { 222 223 TRY_CALL 223 JackLock lock( this);224 return fEngine.PortRename(refnum, port, name);224 JackLock lock(&fEngine); 225 return (fEngine.CheckClient(refnum)) ? fEngine.PortRename(refnum, port, name) : -1; 225 226 CATCH_EXCEPTION_RETURN 226 227 } … … 242 243 void NotifyXRun(int refnum) 243 244 { 244 TRY_CALL 245 JackLock lock(this); 245 // RT : no lock 246 246 fEngine.NotifyXRun(refnum); 247 CATCH_EXCEPTION248 }247 } 248 249 249 void NotifyGraphReorder() 250 250 { 251 251 TRY_CALL 252 JackLock lock( this);252 JackLock lock(&fEngine); 253 253 fEngine.NotifyGraphReorder(); 254 254 CATCH_EXCEPTION … … 257 257 { 258 258 TRY_CALL 259 JackLock lock( this);259 JackLock lock(&fEngine); 260 260 fEngine.NotifyBufferSize(buffer_size); 261 261 CATCH_EXCEPTION … … 264 264 { 265 265 TRY_CALL 266 JackLock lock( this);266 JackLock lock(&fEngine); 267 267 fEngine.NotifySampleRate(sample_rate); 268 268 CATCH_EXCEPTION … … 271 271 { 272 272 TRY_CALL 273 JackLock lock( this);273 JackLock lock(&fEngine); 274 274 fEngine.NotifyFreewheel(onoff); 275 275 CATCH_EXCEPTION … … 279 279 { 280 280 TRY_CALL 281 JackLock lock( this);281 JackLock lock(&fEngine); 282 282 fEngine.NotifyFailure(code, reason); 283 283 CATCH_EXCEPTION … … 287 287 { 288 288 TRY_CALL 289 JackLock lock( this);289 JackLock lock(&fEngine); 290 290 return fEngine.GetClientPID(name); 291 291 CATCH_EXCEPTION_RETURN … … 295 295 { 296 296 TRY_CALL 297 JackLock lock( this);297 JackLock lock(&fEngine); 298 298 return fEngine.GetClientRefNum(name); 299 299 CATCH_EXCEPTION_RETURN … … 303 303 { 304 304 TRY_CALL 305 JackLock lock( this);305 JackLock lock(&fEngine); 306 306 return fEngine.NotifyQuit(); 307 307 CATCH_EXCEPTION jack2/branches/libjacknet/common/JackMidiDriver.cpp
r3503 r3917 75 75 char name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 76 76 char alias[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 77 unsigned long port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;78 77 int i; 79 78 … … 83 82 snprintf(alias, sizeof(alias) - 1, "%s:%s:out%d", fAliasName, fCaptureDriverName, i + 1); 84 83 snprintf(name, sizeof(name) - 1, "%s:capture_%d", fClientControl.fName, i + 1); 85 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {84 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, CaptureDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 86 85 jack_error("driver: cannot register port for %s", name); 87 86 return -1; … … 93 92 } 94 93 95 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;96 97 94 for (i = 0; i < fPlaybackChannels; i++) { 98 95 snprintf(alias, sizeof(alias) - 1, "%s:%s:in%d", fAliasName, fPlaybackDriverName, i + 1); 99 96 snprintf(name, sizeof(name) - 1, "%s:playback_%d", fClientControl.fName, i + 1); 100 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {97 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, PlaybackDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 101 98 jack_error("driver: cannot register port for %s", name); 102 99 return -1; jack2/branches/libjacknet/common/JackMutex.h
r2907 r3917 37 37 { 38 38 39 pr ivate:40 39 protected: 40 41 41 JackMutex fMutex; 42 43 protected:44 42 45 43 JackLockAble() jack2/branches/libjacknet/common/JackNetOneDriver.cpp
r3900 r3917 139 139 char buf[64]; 140 140 unsigned int chn; 141 int port_flags;142 143 141 144 142 //if (netj.handle_transport_sync) 145 143 // jack_set_sync_callback(netj.client, (JackSyncCallback) net_driver_sync_cb, NULL); 146 144 147 port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;148 149 145 for (chn = 0; chn < netj.capture_channels_audio; chn++) { 150 146 snprintf (buf, sizeof(buf) - 1, "system:capture_%u", chn + 1); 151 147 152 148 if ( ( port_id = fGraphManager->AllocatePort ( fClientControl.fRefNum, buf, JACK_DEFAULT_AUDIO_TYPE, 153 static_cast<JackPortFlags> ( port_flags ), fEngineControl->fBufferSize ) ) == NO_PORT )149 CaptureDriverFlags, fEngineControl->fBufferSize ) ) == NO_PORT ) 154 150 { 155 151 jack_error ( "driver: cannot register port for %s", buf ); … … 185 181 186 182 if ( ( port_id = fGraphManager->AllocatePort ( fClientControl.fRefNum, buf, JACK_DEFAULT_MIDI_TYPE, 187 static_cast<JackPortFlags> ( port_flags ), fEngineControl->fBufferSize ) ) == NO_PORT )183 CaptureDriverFlags, fEngineControl->fBufferSize ) ) == NO_PORT ) 188 184 { 189 185 jack_error ( "driver: cannot register port for %s", buf ); … … 196 192 } 197 193 198 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;199 200 194 for (chn = 0; chn < netj.playback_channels_audio; chn++) { 201 195 snprintf (buf, sizeof(buf) - 1, "system:playback_%u", chn + 1); 202 196 203 197 if ( ( port_id = fGraphManager->AllocatePort ( fClientControl.fRefNum, buf, JACK_DEFAULT_AUDIO_TYPE, 204 static_cast<JackPortFlags> ( port_flags ), fEngineControl->fBufferSize ) ) == NO_PORT )198 PlaybackDriverFlags, fEngineControl->fBufferSize ) ) == NO_PORT ) 205 199 { 206 200 jack_error ( "driver: cannot register port for %s", buf ); … … 232 226 233 227 if ( ( port_id = fGraphManager->AllocatePort ( fClientControl.fRefNum, buf, JACK_DEFAULT_MIDI_TYPE, 234 static_cast<JackPortFlags> ( port_flags ), fEngineControl->fBufferSize ) ) == NO_PORT )228 PlaybackDriverFlags, fEngineControl->fBufferSize ) ) == NO_PORT ) 235 229 { 236 230 jack_error ( "driver: cannot register port for %s", buf ); jack2/branches/libjacknet/doxyfile
r3900 r3917 24 24 # if some version control system is used. 25 25 26 PROJECT_NUMBER = 1.9. 526 PROJECT_NUMBER = 1.9.6 27 27 28 28 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) jack2/branches/libjacknet/example-clients/lsp.c
r2489 r3917 209 209 fputs ("terminal,", stdout); 210 210 } 211 212 if (flags & JackPortIsActive) { 213 fputs ("active,", stdout); 214 } else { 215 fputs ("non-active,", stdout); 216 } 211 217 putc ('\n', stdout); 212 218 } jack2/branches/libjacknet/linux/alsa/alsa_rawmidi.c
r3230 r3917 433 433 434 434 port->jack = jack_port_register(midi->client, name, JACK_DEFAULT_MIDI_TYPE, 435 type | JackPortIsPhysical |JackPortIsTerminal, 0);435 type | JackPortIsPhysical | JackPortIsTerminal | JackPortIsActive, 0); 436 436 437 437 if (port->jack) jack2/branches/libjacknet/linux/alsa/alsa_seqmidi.c
r3229 r3917 489 489 490 490 if (snd_seq_port_info_get_type (info) & (SND_SEQ_PORT_TYPE_HARDWARE|SND_SEQ_PORT_TYPE_PORT|SND_SEQ_PORT_TYPE_SPECIFIC)) { 491 jack_caps |= (JackPortIsPhysical |JackPortIsTerminal);491 jack_caps |= (JackPortIsPhysical | JackPortIsTerminal | JackPortIsActive); 492 492 } 493 493 jack2/branches/libjacknet/linux/alsa/JackAlsaDriver.cpp
r3900 r3917 2088 2088 assert(fPlaybackChannels < DRIVER_PORT_NUM); 2089 2089 2090 port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;2090 port_flags = (unsigned long)CaptureDriverFlags; 2091 2091 2092 2092 alsa_driver_t* alsa_driver = (alsa_driver_t*)fDriver; … … 2115 2115 } 2116 2116 2117 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;2117 port_flags = (unsigned long)PlaybackDriverFlags; 2118 2118 2119 2119 for (int i = 0; i < fPlaybackChannels; i++) { … … 2136 2136 jack_log("Create monitor port "); 2137 2137 snprintf(name, sizeof(name) - 1, "%s:monitor_%d", fClientControl.fName, i + 1); 2138 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, fEngineControl->fBufferSize)) == NO_PORT) {2138 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, MonitorDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 2139 2139 jack_error ("ALSA: cannot register monitor port for %s", name); 2140 2140 } else { jack2/branches/libjacknet/linux/firewire/JackFFADODriver.cpp
r3900 r3917 360 360 JackPort* port; 361 361 int port_index; 362 unsigned long port_flags;363 364 362 char buf[JACK_PORT_NAME_SIZE]; 365 363 char portname[JACK_PORT_NAME_SIZE]; … … 419 417 420 418 // capture 421 port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;422 423 419 driver->capture_nchannels = ffado_streaming_get_nb_capture_streams(driver->dev); 424 420 driver->capture_channels = (ffado_capture_channel_t *)calloc(driver->capture_nchannels, sizeof(ffado_capture_channel_t)); … … 434 430 driver->capture_channels[chn].stream_type = ffado_streaming_get_capture_stream_type(driver->dev, chn); 435 431 if (driver->capture_channels[chn].stream_type == ffado_stream_type_audio) { 436 snprintf(buf, sizeof(buf) - 1, "%s: AC%d_%s", fClientControl.fName, (int)chn, portname);432 snprintf(buf, sizeof(buf) - 1, "%s:%s", fClientControl.fName, portname); 437 433 printMessage ("Registering audio capture port %s", buf); 438 434 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, 439 435 JACK_DEFAULT_AUDIO_TYPE, 440 (JackPortFlags)port_flags,436 CaptureDriverFlags, 441 437 fEngineControl->fBufferSize)) == NO_PORT) { 442 438 jack_error("driver: cannot register port for %s", buf); … … 452 448 port = fGraphManager->GetPort(port_index); 453 449 port->SetLatency(driver->period_size + driver->capture_frame_latency); 450 // capture port aliases (jackd1 style port names) 451 snprintf(buf, sizeof(buf) - 1, "%s:capture_%i", fClientControl.fName, (int) chn + 1); 452 port->SetAlias(buf); 454 453 fCapturePortList[chn] = port_index; 455 454 jack_log("JackFFADODriver::Attach fCapturePortList[i] %ld ", port_index); … … 457 456 458 457 } else if (driver->capture_channels[chn].stream_type == ffado_stream_type_midi) { 459 snprintf(buf, sizeof(buf) - 1, "%s: MC%d_%s", fClientControl.fName, (int)chn, portname);458 snprintf(buf, sizeof(buf) - 1, "%s:%s", fClientControl.fName, portname); 460 459 printMessage ("Registering midi capture port %s", buf); 461 460 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, 462 461 JACK_DEFAULT_MIDI_TYPE, 463 (JackPortFlags)port_flags,462 CaptureDriverFlags, 464 463 fEngineControl->fBufferSize)) == NO_PORT) { 465 464 jack_error("driver: cannot register port for %s", buf); … … 490 489 491 490 // playback 492 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;493 494 491 driver->playback_nchannels = ffado_streaming_get_nb_playback_streams(driver->dev); 495 492 driver->playback_channels = (ffado_playback_channel_t *)calloc(driver->playback_nchannels, sizeof(ffado_playback_channel_t)); … … 506 503 507 504 if (driver->playback_channels[chn].stream_type == ffado_stream_type_audio) { 508 snprintf(buf, sizeof(buf) - 1, "%s: AP%d_%s", fClientControl.fName, (int)chn, portname);505 snprintf(buf, sizeof(buf) - 1, "%s:%s", fClientControl.fName, portname); 509 506 printMessage ("Registering audio playback port %s", buf); 510 507 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, 511 508 JACK_DEFAULT_AUDIO_TYPE, 512 (JackPortFlags)port_flags,509 PlaybackDriverFlags, 513 510 fEngineControl->fBufferSize)) == NO_PORT) { 514 511 jack_error("driver: cannot register port for %s", buf); … … 527 524 // Add one buffer more latency if "async" mode is used... 528 525 port->SetLatency((driver->period_size * (driver->device_options.nb_buffers - 1)) + ((fEngineControl->fSyncMode) ? 0 : fEngineControl->fBufferSize) + driver->playback_frame_latency); 526 // playback port aliases (jackd1 style port names) 527 snprintf(buf, sizeof(buf) - 1, "%s:playback_%i", fClientControl.fName, (int) chn + 1); 528 port->SetAlias(buf); 529 529 fPlaybackPortList[chn] = port_index; 530 530 jack_log("JackFFADODriver::Attach fPlaybackPortList[i] %ld ", port_index); 531 531 fPlaybackChannels++; 532 532 } else if (driver->playback_channels[chn].stream_type == ffado_stream_type_midi) { 533 snprintf(buf, sizeof(buf) - 1, "%s: MP%d_%s", fClientControl.fName, (int)chn, portname);533 snprintf(buf, sizeof(buf) - 1, "%s:%s", fClientControl.fName, portname); 534 534 printMessage ("Registering midi playback port %s", buf); 535 535 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, 536 536 JACK_DEFAULT_MIDI_TYPE, 537 (JackPortFlags)port_flags,537 PlaybackDriverFlags, 538 538 fEngineControl->fBufferSize)) == NO_PORT) { 539 539 jack_error("driver: cannot register port for %s", buf); jack2/branches/libjacknet/linux/freebob/JackFreebobDriver.cpp
r3551 r3917 668 668 JackPort* port; 669 669 int port_index; 670 unsigned long port_flags; 671 670 672 671 char buf[JACK_PORT_NAME_SIZE]; 673 672 char portname[JACK_PORT_NAME_SIZE]; … … 718 717 719 718 // capture 720 port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;721 722 719 driver->capture_nchannels = freebob_streaming_get_nb_capture_streams(driver->dev); 723 720 driver->capture_nchannels_audio = 0; … … 735 732 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, 736 733 JACK_DEFAULT_AUDIO_TYPE, 737 (JackPortFlags)port_flags,734 CaptureDriverFlags, 738 735 fEngineControl->fBufferSize)) == NO_PORT) { 739 736 jack_error("driver: cannot register port for %s", buf); … … 749 746 750 747 // playback 751 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;752 753 748 driver->playback_nchannels = freebob_streaming_get_nb_playback_streams(driver->dev); 754 749 driver->playback_nchannels_audio = 0; … … 765 760 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, buf, 766 761 JACK_DEFAULT_AUDIO_TYPE, 767 (JackPortFlags)port_flags,762 PlaybackDriverFlags, 768 763 fEngineControl->fBufferSize)) == NO_PORT) { 769 764 jack_error("driver: cannot register port for %s", buf); jack2/branches/libjacknet/macosx/coreaudio/JackCoreAudioDriver.cpp
r3900 r3917 1561 1561 char name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 1562 1562 char alias[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 1563 unsigned long port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal; 1564 1563 1565 1564 jack_log("JackCoreAudioDriver::Attach fBufferSize %ld fSampleRate %ld", fEngineControl->fBufferSize, fEngineControl->fSampleRate); 1566 1565 … … 1581 1580 snprintf(name, sizeof(name) - 1, "%s:capture_%d", fClientControl.fName, i + 1); 1582 1581 1583 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {1582 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, CaptureDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 1584 1583 jack_error("Cannot register port for %s", name); 1585 1584 return -1; … … 1601 1600 fCapturePortList[i] = port_index; 1602 1601 } 1603 1604 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;1605 1602 1606 1603 for (int i = 0; i < fPlaybackChannels; i++) { … … 1620 1617 snprintf(name, sizeof(name) - 1, "%s:playback_%d", fClientControl.fName, i + 1); 1621 1618 1622 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {1619 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, PlaybackDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 1623 1620 jack_error("Cannot register port for %s", name); 1624 1621 return -1; … … 1645 1642 jack_log("Create monitor port "); 1646 1643 snprintf(name, sizeof(name) - 1, "%s:monitor_%u", fClientControl.fName, i + 1); 1647 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, fEngineControl->fBufferSize)) == NO_PORT) {1644 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_AUDIO_TYPE, MonitorDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 1648 1645 jack_error("Cannot register monitor port for %s", name); 1649 1646 return -1; jack2/branches/libjacknet/macosx/coremidi/JackCoreMidiDriver.cpp
r3900 r3917 223 223 char endpoint_name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 224 224 char alias[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 225 unsigned long port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;226 225 int i; 227 226 … … 240 239 241 240 snprintf(name, sizeof(name) - 1, "%s:capture_%d", fClientControl.fName, i + 1); 242 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {241 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, CaptureDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 243 242 jack_error("driver: cannot register port for %s", name); 244 243 return -1; … … 249 248 jack_log("JackCoreMidiDriver::Attach fCapturePortList[i] port_index = %ld", port_index); 250 249 } 251 252 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;253 250 254 251 for (i = 0; i < fPlaybackChannels; i++) { … … 264 261 265 262 snprintf(name, sizeof(name) - 1, "%s:playback_%d", fClientControl.fName, i + 1); 266 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {263 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, PlaybackDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 267 264 jack_error("driver: cannot register port for %s", name); 268 265 return -1; jack2/branches/libjacknet/macosx/Jack-Info.plist
r3900 r3917 8 8 <string>Jackservermp</string> 9 9 <key>CFBundleGetInfoString</key> 10 <string>Jackdmp 1.9. 5, @03-09Paul Davis, Grame</string>10 <string>Jackdmp 1.9.6, @03-10 Paul Davis, Grame</string> 11 11 <key>CFBundleIdentifier</key> 12 12 <string>com.grame.Jackmp</string> … … 20 20 <string>????</string> 21 21 <key>CFBundleVersion</key> 22 <string>1.9. 5</string>22 <string>1.9.6</string> 23 23 </dict> 24 24 </plist> jack2/branches/libjacknet/macosx/Jackdmp.xcodeproj/project.pbxproj
r3900 r3917 581 581 4B80D7EC0BA0D17400F035BB /* JackMidiPort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B80D7E60BA0D17400F035BB /* JackMidiPort.cpp */; }; 582 582 4B80D7ED0BA0D17400F035BB /* JackMidiAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B80D7E70BA0D17400F035BB /* JackMidiAPI.cpp */; }; 583 4B88D03B11298BEE007A87C1 /* weakjack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03911298BEE007A87C1 /* weakjack.h */; settings = {ATTRIBUTES = (Public, ); }; }; 584 4B88D03C11298BEE007A87C1 /* weakmacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03A11298BEE007A87C1 /* weakmacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 585 4B88D03D11298BEE007A87C1 /* weakjack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03911298BEE007A87C1 /* weakjack.h */; settings = {ATTRIBUTES = (Public, ); }; }; 586 4B88D03E11298BEE007A87C1 /* weakmacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03A11298BEE007A87C1 /* weakmacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 587 4B88D03F11298BEE007A87C1 /* weakjack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03911298BEE007A87C1 /* weakjack.h */; settings = {ATTRIBUTES = (Public, ); }; }; 588 4B88D04011298BEE007A87C1 /* weakmacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03A11298BEE007A87C1 /* weakmacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 589 4B88D04111298BEE007A87C1 /* weakjack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03911298BEE007A87C1 /* weakjack.h */; settings = {ATTRIBUTES = (Public, ); }; }; 590 4B88D04211298BEE007A87C1 /* weakmacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03A11298BEE007A87C1 /* weakmacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 591 4B88D04311298BEE007A87C1 /* weakjack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03911298BEE007A87C1 /* weakjack.h */; settings = {ATTRIBUTES = (Public, ); }; }; 592 4B88D04411298BEE007A87C1 /* weakmacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03A11298BEE007A87C1 /* weakmacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 593 4B88D04511298BEE007A87C1 /* weakjack.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03911298BEE007A87C1 /* weakjack.h */; settings = {ATTRIBUTES = (Public, ); }; }; 594 4B88D04611298BEE007A87C1 /* weakmacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B88D03A11298BEE007A87C1 /* weakmacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; 583 595 4B93F1990E87992100E4ECCD /* JackPosixThread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BC3B6A20E703B2E0066E42F /* JackPosixThread.cpp */; }; 584 596 4B93F19A0E87992200E4ECCD /* JackPosixThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC3B6A30E703B2E0066E42F /* JackPosixThread.h */; }; … … 1568 1580 4B869B4208C8D22F001CF041 /* JackDriverLoader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackDriverLoader.h; path = ../common/JackDriverLoader.h; sourceTree = SOURCE_ROOT; }; 1569 1581 4B869D7F08C9CB00001CF041 /* JackDriverLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackDriverLoader.cpp; path = ../common/JackDriverLoader.cpp; sourceTree = SOURCE_ROOT; }; 1582 4B88D03911298BEE007A87C1 /* weakjack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = weakjack.h; path = ../common/jack/weakjack.h; sourceTree = SOURCE_ROOT; }; 1583 4B88D03A11298BEE007A87C1 /* weakmacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = weakmacros.h; path = ../common/jack/weakmacros.h; sourceTree = SOURCE_ROOT; }; 1570 1584 4B89B759076B731100D170DE /* JackRPCClientUser.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = JackRPCClientUser.c; path = RPC/JackRPCClientUser.c; sourceTree = SOURCE_ROOT; }; 1571 1585 4B89B769076B74D200D170DE /* JackRPCEngineUser.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = JackRPCEngineUser.c; path = RPC/JackRPCEngineUser.c; sourceTree = SOURCE_ROOT; }; … … 2712 2726 4B6C737E0CC60A6D001AFFD4 /* transport.h */, 2713 2727 4B6C737F0CC60A6D001AFFD4 /* types.h */, 2728 4B88D03911298BEE007A87C1 /* weakjack.h */, 2729 4B88D03A11298BEE007A87C1 /* weakmacros.h */, 2714 2730 ); 2715 2731 name = jack; … … 3160 3176 4B93F19E0E87998400E4ECCD /* JackPosixThread.h in Headers */, 3161 3177 4BECB2FA0F4451C10091B70A /* JackProcessSync.h in Headers */, 3178 4B88D03F11298BEE007A87C1 /* weakjack.h in Headers */, 3179 4B88D04011298BEE007A87C1 /* weakmacros.h in Headers */, 3162 3180 ); 3163 3181 runOnlyForDeploymentPostprocessing = 0; … … 3228 3246 4BCBCE6210C4FE3F00450FFE /* JackPhysicalMidiInput.h in Headers */, 3229 3247 4BCBCE6410C4FE3F00450FFE /* JackPhysicalMidiOutput.h in Headers */, 3248 4B88D04311298BEE007A87C1 /* weakjack.h in Headers */, 3249 4B88D04411298BEE007A87C1 /* weakmacros.h in Headers */, 3230 3250 ); 3231 3251 runOnlyForDeploymentPostprocessing = 0; … … 3508 3528 4B47ACAA10B5890100469C67 /* JackPosixThread.h in Headers */, 3509 3529 4B47ACAB10B5890100469C67 /* JackProcessSync.h in Headers */, 3530 4B88D04111298BEE007A87C1 /* weakjack.h in Headers */, 3531 4B88D04211298BEE007A87C1 /* weakmacros.h in Headers */, 3510 3532 ); 3511 3533 runOnlyForDeploymentPostprocessing = 0; … … 3593 3615 4BECB2F80F4451C10091B70A /* JackProcessSync.h in Headers */, 3594 3616 4B94334A10A5E666002A187F /* systemdeps.h in Headers */, 3617 4B88D03B11298BEE007A87C1 /* weakjack.h in Headers */, 3618 4B88D03C11298BEE007A87C1 /* weakmacros.h in Headers */, 3595 3619 ); 3596 3620 runOnlyForDeploymentPostprocessing = 0; … … 3665 3689 4BCBCE5E10C4FE3F00450FFE /* JackPhysicalMidiInput.h in Headers */, 3666 3690 4BCBCE6010C4FE3F00450FFE /* JackPhysicalMidiOutput.h in Headers */, 3691 4B88D03D11298BEE007A87C1 /* weakjack.h in Headers */, 3692 4B88D03E11298BEE007A87C1 /* weakmacros.h in Headers */, 3667 3693 ); 3668 3694 runOnlyForDeploymentPostprocessing = 0; … … 3842 3868 4BCBCE6610C4FE3F00450FFE /* JackPhysicalMidiInput.h in Headers */, 3843 3869 4BCBCE6810C4FE3F00450FFE /* JackPhysicalMidiOutput.h in Headers */, 3870 4B88D04511298BEE007A87C1 /* weakjack.h in Headers */, 3871 4B88D04611298BEE007A87C1 /* weakmacros.h in Headers */, 3844 3872 ); 3845 3873 runOnlyForDeploymentPostprocessing = 0; jack2/branches/libjacknet/posix/JackNetUnixSocket.cpp
r3306 r3917 100 100 } 101 101 fSockfd = socket ( AF_INET, SOCK_DGRAM, 0 ); 102 103 /* Enable address reuse */ 104 int res, on = 1; 105 if ((res = setsockopt( fSockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on))) < 0) { 106 StrError(NET_ERROR_CODE); 107 } 108 102 109 return fSockfd; 103 110 } jack2/branches/libjacknet/posix/JackPosixMutex.h
r3685 r3917 104 104 } 105 105 106 voidLock()106 bool Lock() 107 107 { 108 108 int res = pthread_mutex_lock(&fMutex); 109 109 if (res != 0) 110 110 jack_error("JackPosixMutex::Lock res = %d", res); 111 return (res == 0); 111 112 } 112 113 … … 116 117 } 117 118 118 voidUnlock()119 bool Unlock() 119 120 { 120 121 int res = pthread_mutex_unlock(&fMutex); 121 122 if (res != 0) 122 123 jack_error("JackPosixMutex::Unlock res = %d", res); 124 return (res == 0); 123 125 } 124 126 jack2/branches/libjacknet/README
r3814 r3917 215 215 1.9.3 : New JackBoomerDriver class for Boomer driver on Solaris. Add mixed 32/64 bits mode (off by default). Native MIDI backend (JackCoreMidiDriver, JackWinMMEDriver). In ALSA audio card reservation code, tries to open the card even if reservation fails. Clock source setting on Linux. Add jackctl_server_switch_master API. Fix transport callback (timebase master, sync) issue when used after jack_activate (RT thread was not running). D-Bus access for jackctl_server_add_slave/jackctl_server_remove_slave API. Cleanup "loopback" stuff in server. Torben Hohn fix for InitTime and GetMicroSeconds in JackWinTime.c. New jack_free function added in jack.h. Reworked Torben Hohn fix for server restart issue on Windows. Correct jack_set_error_function, jack_set_info_function and jack_set_thread_creator functions. Correct JackFifo::TimedWait for EINTR handling. Move DBus based audio device reservation code in ALSA backend compilation. Correct JackTransportEngine::MakeAllLocating, sync callback has to be called in this case also. NetJack2 code : better error checkout, method renaming. Tim Bechmann patch : hammerfall, only release monitor thread, if it has been created. Tim Bechmann memops.c optimization patches. In combined --dbus and --classic compilation code, use PulseAudio acquire/release code. Big rewrite of Solaris boomer driver, seems to work in duplex mode at least. Loopback backend reborn as a dynamically loadable separated backend. 216 216 1.9.4 : Solaris boomer backend now working in capture or playback only mode. Add a -G parameter in CoreAudio backend (the computation value in RT thread expressed as percent of period). Use SNDCTL_DSP_SYNCGROUP/SNDCTL_DSP_SYNCSTART API to synchronize input and output in Solaris boomer backend. Big endian bug fix in memops.c. Fix issues in JackNetDriver::DecodeTransportData and JackNetDriver::Initialize. Correct CPU timing in JackNetDriver, now take cycle begin time after Read. Simplify transport in NetJack2: master only can control transport. Change CoreAudio notification thread setup for OSX Snow Leopard. Correct server temporary mode : now set a global and quit after server/client message handling is finished. 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É). Correct jackdmp.cpp (failures case were not correct..). Improve JackCoreAudioDriver code. Raise default port number to 2048. 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. Improve aggregate device management in JackCoreAudioDriver : now a "private" device only and cleanup properly. Aggregate device code added to JackCoreAudioAdapter. 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. Dynamic system version detection in JackCoreAudioDriver to either create public or private aggregate device. 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::Start, wait for the audio driver to effectively start (use the MeasureCallback). 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. 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. Correctly save and restore RT mode state in freewheel mode. Correct freewheel code on client side. 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. Correct JackGraphManager::GetBuffer for the "client loop with one connection" case : buffer must be copied. Correct JackInfoShutdownCallback prototype, two new JackClientProcessFailure and JackClientZombie JackStatus code. Correct JackCoreAudio driver when empty strings are given as -C, -P or -d parameter. Better memory allocation error checking on client (library) side. 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...). Sync with JACK1 : -r parameter now used for no-realtime, realtime (-R) is now default, usable backend given vie platform. In JackCoreAudio driver, (possibly) clock drift compensation when needed in aggregated devices. 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). Sync JackCoreAudioAdapter code with JackCoreAudioDriver. 217 1.9.5 : Dynamic choice of maximum port number. More robust sample rate change handling code in JackCoreAudioDriver. Devin Anderson patch for Jack FFADO driver issues with lost MIDI bytes between periods (and more). Fix port_rename callback : now both old name and new name are given as parameters. 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. Fix JackCoreMidiDriver::ReadProcAux when ring buffer is full (thanks Devin Anderson). Josh Green ALSA driver capture only patch. When threads are cancelled, the exception has to be rethrown. Use a QUIT notification to properly quit the server channel, the server channel thread can then be 'stopped' instead of 'canceled'. Mario Lang alsa_io time calculation overflow patch. Shared memory manager was calling abort in case of fatal error, now return an error in caller. Change JackEngineProfiling and JackAudioAdapterInterface gnuplot scripts to output SVG instead of PDF. 217 218 218 219 This is a work in progress but the implementation is now stable enough to be tested. jackdmp has been used successfully with the following applications : Ardour, Hydrogen, Jamin, Qjackctl, Jack-Rack, SooperLooper, AlsaPlayer... jack2/branches/libjacknet/tests/test.cpp
r3900 r3917 184 184 int Jack_Port_Rename_Callback(jack_port_id_t port, const char* old_name, const char* new_name, void *arg) 185 185 { 186 Log("Rename callback has been successfully called with old_name '%s' and new_name '%s'. (msg from callback)\n" );186 Log("Rename callback has been successfully called with old_name '%s' and new_name '%s'. (msg from callback)\n", old_name, new_name); 187 187 port_rename_clbk = 1; 188 188 return 0; … … 823 823 } 824 824 825 port_callback_reg = 0; // number of port registration received by the callback 826 825 827 /** 826 828 * Activate the client … … 841 843 if (port_rename_clbk == 0) 842 844 printf("!!! ERROR !!! Jack_Port_Rename_Callback was not called !!.\n"); 845 846 847 /** 848 * Test if portregistration callback have been called. 849 * 850 */ 851 852 jack_sleep(1 * 1000); 853 854 if (1 == port_callback_reg) { 855 Log("%i ports have been successfully created, and %i callback reg ports have been received... ok\n", 1, port_callback_reg); 856 } else { 857 printf("!!! ERROR !!! %i ports have been created, and %i callback reg ports have been received !\n", 1, port_callback_reg); 858 } 843 859 844 860 /** … … 1096 1112 1097 1113 jack_sleep(1 * 1000); // To hope all port registration and reorder callback have been received... 1114 1115 // Check port registration callback 1098 1116 if (j == port_callback_reg) { 1099 1117 Log("%i ports have been successfully created, and %i callback reg ports have been received... ok\n", j, port_callback_reg); 1100 1118 } else { 1101 printf("!!! ERROR !!! %i ports have been created, and %i callback reg ports have been received !\n", j, k); 1102 } 1119 printf("!!! ERROR !!! %i ports have been created, and %i callback reg ports have been received !\n", j, port_callback_reg); 1120 } 1121 1103 1122 if (reorder == (2 * j)) { 1104 1123 Log("%i graph reorder callback have been received... ok\n", reorder); … … 1148 1167 * 1149 1168 */ 1169 port_callback_reg = 0; // to check registration callback 1150 1170 Log("Deregistering all ports of the client...\n"); 1151 1171 inports = jack_get_ports(client1, NULL, NULL, 0); … … 1160 1180 } 1161 1181 a++; 1182 } 1183 1184 // Check port registration callback again 1185 if (j == port_callback_reg) { 1186 Log("%i ports have been successfully created, and %i callback reg ports have been received... ok\n", j, port_callback_reg); 1187 } else { 1188 printf("!!! ERROR !!! %i ports have been created, and %i callback reg ports have been received !\n", j, port_callback_reg); 1162 1189 } 1163 1190 jack2/branches/libjacknet/windows/jackaudioadapter.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_DLL … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jackmp Audio Adapter for Windows\0" 26 VALUE "FileVersion", "1, 9, 5, 0\0"26 VALUE "FileVersion", "1, 9, 6, 0\0" 27 27 VALUE "InternalName", "audioadapter\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "audioadapter.dll\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "audioadapter\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/jackd.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_APP … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jack server for Windows\0" 26 VALUE "FileVersion", "1, 9, 5, 0\0"26 VALUE "FileVersion", "1, 9, 6, 0\0" 27 27 VALUE "InternalName", "jackd\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "jackd.exe\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "jackd\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/jacknetadapter.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_DLL … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jackmp Net Adapter for Windows\0" 26 VALUE "FileVersion", "1, 9, 5, 0\0"26 VALUE "FileVersion", "1, 9, 6, 0\0" 27 27 VALUE "InternalName", "netadapter\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "netadapter.dll\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "netadapter\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/jacknetdriver.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_DLL … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jackmp Net Driver for Windows\0" 26 VALUE "FileVersion", "1, 9, 5, 0\0"26 VALUE "FileVersion", "1, 9, 6, 0\0" 27 27 VALUE "InternalName", "jack_netdriver\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "jack_netdriver.dll\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "jack_netdriver\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/jacknetmanager.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_DLL … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jackmp Net Manager for Windows\0" 26 VALUE "FileVersion", "1, 9, 5, 0\0"26 VALUE "FileVersion", "1, 9, 6, 0\0" 27 27 VALUE "InternalName", "netmanager\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "netmanager.dll\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "netmanager\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/jackportaudio.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_DLL … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jackmp PortAudio Driver for Windows\0" 26 VALUE "FileVersion", "1, 9, 5, 0\0"26 VALUE "FileVersion", "1, 9, 6, 0\0" 27 27 VALUE "InternalName", "jack_portaudio\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "jack_portaudio.dll\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "jack_portaudio\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/JackRouter/resource.rc
r3863 r3917 29 29 30 30 VS_VERSION_INFO VERSIONINFO 31 FILEVERSION 0,2, 0,032 PRODUCTVERSION 0,2, 0,031 FILEVERSION 0,2,1,0 32 PRODUCTVERSION 0,2,1,0 33 33 FILEFLAGSMASK 0x3fL 34 34 #ifdef _DEBUG … … 48 48 VALUE "CompanyName", "Grame\0" 49 49 VALUE "FileDescription", "JackRouter ASIO driver\0" 50 VALUE "FileVersion", "0, 2, 0, 0\0"50 VALUE "FileVersion", "0, 2, 1, 0\0" 51 51 VALUE "InternalName", "JackRouter\0" 52 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"52 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 53 53 VALUE "LegalTrademarks", "\0" 54 54 VALUE "OriginalFilename", "JackRouter.dll\0" 55 55 VALUE "PrivateBuild", "\0" 56 56 VALUE "ProductName", "JackRouter\0" 57 VALUE "ProductVersion", "0, 2, 0, 0\0"57 VALUE "ProductVersion", "0, 2, 1, 0\0" 58 58 VALUE "SpecialBuild", "\0" 59 59 END jack2/branches/libjacknet/windows/jackwinmme.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_DLL … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jackmp WinMMEo Driver for Windows\0" 26 VALUE "FileVersion", "1, 9, 5, 0\0"26 VALUE "FileVersion", "1, 9, 6, 0\0" 27 27 VALUE "InternalName", "jack_portaudio\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "jack_winmme.dll\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "jack_winmme\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/JackWinMutex.h
r3319 r3917 44 44 fMutex = (HANDLE)CreateMutex(0, FALSE, 0); 45 45 } 46 46 47 47 virtual ~JackWinMutex() 48 48 { … … 50 50 } 51 51 52 voidLock()52 bool Lock() 53 53 { 54 WaitForSingleObject(fMutex, INFINITE);54 return (WAIT_OBJECT_0 == WaitForSingleObject(fMutex, INFINITE)); 55 55 } 56 56 … … 60 60 } 61 61 62 voidUnlock()62 bool Unlock() 63 63 { 64 ReleaseMutex(fMutex);64 return(ReleaseMutex(fMutex) != 0); 65 65 } 66 66 jack2/branches/libjacknet/windows/libjack.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_DLL … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jack client library for Windows\0" 26 VALUE "FileVersion", "1, 9, 5, 0\0"26 VALUE "FileVersion", "1, 9, 6, 0\0" 27 27 VALUE "InternalName", "libjack\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "libjack.dll\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "libjack\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/libjackserver.rc
r3900 r3917 12 12 LANGUAGE LANG_FRENCH, SUBLANG_DEFAULT 13 13 1 VERSIONINFO 14 FILEVERSION 1,9, 5,015 PRODUCTVERSION 1,9, 5,014 FILEVERSION 1,9,6,0 15 PRODUCTVERSION 1,9,6,0 16 16 FILEOS VOS_UNKNOWN 17 17 FILETYPE VFT_DLL … … 24 24 VALUE "CompanyName", "Grame\0" 25 25 VALUE "FileDescription", "Jack server library for Windows\0" 26 VALUE "FileVersion", "1, 9, 5 , 0\0"26 VALUE "FileVersion", "1, 9, 56, 0\0" 27 27 VALUE "InternalName", "libjackserver\0" 28 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"28 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 29 29 VALUE "LegalTrademarks", "\0" 30 30 VALUE "OriginalFilename", "libjackserver.dll\0" 31 31 VALUE "PrivateBuild", "\0" 32 32 VALUE "ProductName", "libjackserver\0" 33 VALUE "ProductVersion", "1, 9, 5, 0\0"33 VALUE "ProductVersion", "1, 9, 6, 0\0" 34 34 VALUE "SpecialBuild", "\0" 35 35 END jack2/branches/libjacknet/windows/resource.rc
r3900 r3917 15 15 #ifndef _MAC 16 16 VS_VERSION_INFO VERSIONINFO 17 FILEVERSION 1,9, 5,018 PRODUCTVERSION 1,9, 5,017 FILEVERSION 1,9,6,0 18 PRODUCTVERSION 1,9,6,0 19 19 FILEFLAGSMASK 0x3fL 20 20 #ifdef _DEBUG … … 34 34 VALUE "CompanyName", "Grame\0" 35 35 VALUE "FileDescription", "Jackmp for Windows\0" 36 VALUE "FileVersion", "1, 9, 5, 0\0"36 VALUE "FileVersion", "1, 9, 6, 0\0" 37 37 VALUE "InternalName", "libjackmp\0" 38 VALUE "LegalCopyright", "Copyright Grame © 2006-20 09\0"38 VALUE "LegalCopyright", "Copyright Grame © 2006-2010\0" 39 39 VALUE "LegalTrademarks", "\0" 40 40 VALUE "OriginalFilename", "libjackmp.dll\0" 41 41 VALUE "PrivateBuild", "\0" 42 42 VALUE "ProductName", "libjackmp\0" 43 VALUE "ProductVersion", "1, 9, 5, 0\0"43 VALUE "ProductVersion", "1, 9, 6, 0\0" 44 44 VALUE "SpecialBuild", "\0" 45 45 END jack2/branches/libjacknet/windows/Setup/jack.ci
r3900 r3917 2 2 version = 4 civer = "Free v4.14.5" winver = "2.6/5.1.2600" > 3 3 <output> .</> 4 <exename> Jack_v1.9. 5_setup.exe</>4 <exename> Jack_v1.9.6_setup.exe</> 5 5 <digitsign> </> 6 <appname> Jack v1.9. 5</>6 <appname> Jack v1.9.6</> 7 7 <password> </> 8 8 <addlang> </> … … 93 93 <_><src>..\..\common\jack\types.h</><dest>inst</><custom>includes\jack</><ifexist>overnewer</><recurs>0</></> 94 94 <_><src>..\..\common\jack\systemdeps.h</><dest>inst</><custom>includes\jack</><ifexist>overnewer</><recurs>1</></> 95 <_><src>..\..\common\jack\weakjack.h</><dest>inst</><custom>includes\jack</><ifexist>overnewer</><recurs>1</></> 96 <_><src>..\..\common\jack\weakmacros.h</><dest>inst</><custom>includes\jack</><ifexist>overnewer</><recurs>1</></> 95 97 <_><src>.\JackRouter.dll</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> 96 98 <_><src>.\JackRouter.ini</><dest>inst</><custom></><ifexist>overnewer</><recurs>0</></> jack2/branches/libjacknet/windows/winmme/JackWinMMEDriver.cpp
r3614 r3917 290 290 char name[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 291 291 char alias[JACK_CLIENT_NAME_SIZE + JACK_PORT_NAME_SIZE]; 292 unsigned long port_flags = JackPortIsOutput | JackPortIsPhysical | JackPortIsTerminal;293 292 MMRESULT res; 294 293 int i; … … 306 305 snprintf(name, sizeof(name) - 1, "%s:capture_%d", fClientControl.fName, i + 1); 307 306 308 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {307 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, CaptureDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 309 308 jack_error("driver: cannot register port for %s", name); 310 309 return -1; … … 315 314 jack_log("JackMidiDriver::Attach fCapturePortList[i] port_index = %ld", port_index); 316 315 } 317 318 port_flags = JackPortIsInput | JackPortIsPhysical | JackPortIsTerminal;319 316 320 317 for (i = 0; i < fPlaybackChannels; i++) { … … 328 325 snprintf(name, sizeof(name) - 1, "%s:playback_%d", fClientControl.fName, i + 1); 329 326 330 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, (JackPortFlags)port_flags, fEngineControl->fBufferSize)) == NO_PORT) {327 if ((port_index = fGraphManager->AllocatePort(fClientControl.fRefNum, name, JACK_DEFAULT_MIDI_TYPE, PlaybackDriverFlags, fEngineControl->fBufferSize)) == NO_PORT) { 331 328 jack_error("driver: cannot register port for %s", name); 332 329 return -1; jack2/branches/libjacknet/wscript
r3900 r3917 12 12 import Logs 13 13 14 VERSION='1.9. 4'14 VERSION='1.9.6' 15 15 APPNAME='jack' 16 16 JACK_API_VERSION = '0.1.0'
