| @@ -1861,7 +1861,7 @@ | |||||
| 4BF8D2470834F20600C94B91 /* testSem.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = testSem.cpp; path = ../tests/testSem.cpp; sourceTree = SOURCE_ROOT; }; | 4BF8D2470834F20600C94B91 /* testSem.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = testSem.cpp; path = ../tests/testSem.cpp; sourceTree = SOURCE_ROOT; }; | ||||
| 4BF8FB0D08AC88EF00D1A344 /* JackFrameTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackFrameTimer.cpp; path = ../common/JackFrameTimer.cpp; sourceTree = SOURCE_ROOT; }; | 4BF8FB0D08AC88EF00D1A344 /* JackFrameTimer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackFrameTimer.cpp; path = ../common/JackFrameTimer.cpp; sourceTree = SOURCE_ROOT; }; | ||||
| 4BF8FB0E08AC88EF00D1A344 /* JackFrameTimer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackFrameTimer.h; path = ../common/JackFrameTimer.h; sourceTree = SOURCE_ROOT; }; | 4BF8FB0E08AC88EF00D1A344 /* JackFrameTimer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackFrameTimer.h; path = ../common/JackFrameTimer.h; sourceTree = SOURCE_ROOT; }; | ||||
| 4BFA5E980DEC4D9C00FA4CDB /* testSem */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testSem; sourceTree = BUILT_PRODUCTS_DIR; }; | |||||
| 4BFA5E980DEC4D9C00FA4CDB /* testMutex */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testMutex; sourceTree = BUILT_PRODUCTS_DIR; }; | |||||
| 4BFA5E9E0DEC4DD900FA4CDB /* testMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = testMutex.cpp; path = ../tests/testMutex.cpp; sourceTree = SOURCE_ROOT; }; | 4BFA5E9E0DEC4DD900FA4CDB /* testMutex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = testMutex.cpp; path = ../tests/testMutex.cpp; sourceTree = SOURCE_ROOT; }; | ||||
| 4BFA828C0DF6A9E40087B4E1 /* jack_evmon */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_evmon; sourceTree = BUILT_PRODUCTS_DIR; }; | 4BFA828C0DF6A9E40087B4E1 /* jack_evmon */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_evmon; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 4BFA829F0DF6A9E40087B4E1 /* jack_bufsize */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_bufsize; sourceTree = BUILT_PRODUCTS_DIR; }; | 4BFA829F0DF6A9E40087B4E1 /* jack_bufsize */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_bufsize; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| @@ -2662,7 +2662,7 @@ | |||||
| 4B363F1E0DEB0A6A001F72D9 /* jack_monitor_client */, | 4B363F1E0DEB0A6A001F72D9 /* jack_monitor_client */, | ||||
| 4B363F350DEB0BD1001F72D9 /* jack_showtime */, | 4B363F350DEB0BD1001F72D9 /* jack_showtime */, | ||||
| 4B363F720DEB0D4E001F72D9 /* jack_impulse_grabber */, | 4B363F720DEB0D4E001F72D9 /* jack_impulse_grabber */, | ||||
| 4BFA5E980DEC4D9C00FA4CDB /* testSem */, | |||||
| 4BFA5E980DEC4D9C00FA4CDB /* testMutex */, | |||||
| 4BFA828C0DF6A9E40087B4E1 /* jack_evmon */, | 4BFA828C0DF6A9E40087B4E1 /* jack_evmon */, | ||||
| 4BFA829F0DF6A9E40087B4E1 /* jack_bufsize */, | 4BFA829F0DF6A9E40087B4E1 /* jack_bufsize */, | ||||
| 4BFA82AB0DF6A9E40087B4E1 /* jack_rec */, | 4BFA82AB0DF6A9E40087B4E1 /* jack_rec */, | ||||
| @@ -5871,7 +5871,7 @@ | |||||
| name = "testMutex Universal"; | name = "testMutex Universal"; | ||||
| productInstallPath = /usr/local/bin; | productInstallPath = /usr/local/bin; | ||||
| productName = testSem; | productName = testSem; | ||||
| productReference = 4BFA5E980DEC4D9C00FA4CDB /* testSem */; | |||||
| productReference = 4BFA5E980DEC4D9C00FA4CDB /* testMutex */; | |||||
| productType = "com.apple.product-type.tool"; | productType = "com.apple.product-type.tool"; | ||||
| }; | }; | ||||
| 4BFA82820DF6A9E40087B4E1 /* jack_evmon 64 bits */ = { | 4BFA82820DF6A9E40087B4E1 /* jack_evmon 64 bits */ = { | ||||
| @@ -9502,6 +9502,7 @@ | |||||
| "-D__SMP__", | "-D__SMP__", | ||||
| "-DMACH_RPC_MACH_SEMA", | "-DMACH_RPC_MACH_SEMA", | ||||
| "$(OTHER_CPLUSPLUSFLAGS_QUOTED_FOR_TARGET_1)", | "$(OTHER_CPLUSPLUSFLAGS_QUOTED_FOR_TARGET_1)", | ||||
| "$(OTHER_CPLUSPLUSFLAGS_QUOTED_FOR_TARGET_2)", | |||||
| ); | ); | ||||
| OTHER_CPLUSPLUSFLAGS_QUOTED_FOR_TARGET_1 = "-DADDON_DIR=\\\"/usr/local/lib/jackmp\\\""; | OTHER_CPLUSPLUSFLAGS_QUOTED_FOR_TARGET_1 = "-DADDON_DIR=\\\"/usr/local/lib/jackmp\\\""; | ||||
| OTHER_LDFLAGS = ( | OTHER_LDFLAGS = ( | ||||
| @@ -267,8 +267,10 @@ JackCoreMidiDriver::Open(bool capturing, bool playing, int in_channels, | |||||
| "client name string"); | "client name string"); | ||||
| return -1; | return -1; | ||||
| } | } | ||||
| OSStatus status = MIDIClientCreate(name, HandleNotificationEvent, this, | OSStatus status = MIDIClientCreate(name, HandleNotificationEvent, this, | ||||
| &client); | &client); | ||||
| CFRelease(name); | CFRelease(name); | ||||
| if (status != noErr) { | if (status != noErr) { | ||||
| WriteMacOSError("JackCoreMidiDriver::Close", "MIDIClientCreate", | WriteMacOSError("JackCoreMidiDriver::Close", "MIDIClientCreate", | ||||
| @@ -276,7 +278,6 @@ JackCoreMidiDriver::Open(bool capturing, bool playing, int in_channels, | |||||
| return -1; | return -1; | ||||
| } | } | ||||
| char *client_name = fClientControl.fName; | char *client_name = fClientControl.fName; | ||||
| int port_rt_priority = fEngineControl->fServerPriority + 1; | |||||
| // Allocate and connect virtual inputs | // Allocate and connect virtual inputs | ||||
| if (in_channels) { | if (in_channels) { | ||||
| @@ -319,8 +320,7 @@ JackCoreMidiDriver::Open(bool capturing, bool playing, int in_channels, | |||||
| new JackCoreMidiVirtualOutputPort(fAliasName, client_name, | new JackCoreMidiVirtualOutputPort(fAliasName, client_name, | ||||
| playback_driver_name, | playback_driver_name, | ||||
| vo_count, client, | vo_count, client, | ||||
| time_ratio, | |||||
| port_rt_priority); | |||||
| time_ratio); | |||||
| } catch (std::exception e) { | } catch (std::exception e) { | ||||
| jack_error("JackCoreMidiDriver::Open - while creating virtual " | jack_error("JackCoreMidiDriver::Open - while creating virtual " | ||||
| "output port: %s", e.what()); | "output port: %s", e.what()); | ||||
| @@ -387,8 +387,7 @@ JackCoreMidiDriver::Open(bool capturing, bool playing, int in_channels, | |||||
| new JackCoreMidiPhysicalOutputPort(fAliasName, client_name, | new JackCoreMidiPhysicalOutputPort(fAliasName, client_name, | ||||
| playback_driver_name, i, | playback_driver_name, i, | ||||
| client, internal_output, | client, internal_output, | ||||
| time_ratio, | |||||
| port_rt_priority); | |||||
| time_ratio); | |||||
| } catch (std::exception e) { | } catch (std::exception e) { | ||||
| jack_error("JackCoreMidiDriver::Open - while creating " | jack_error("JackCoreMidiDriver::Open - while creating " | ||||
| "physical output port: %s", e.what()); | "physical output port: %s", e.what()); | ||||
| @@ -26,7 +26,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
| using Jack::JackCoreMidiOutputPort; | using Jack::JackCoreMidiOutputPort; | ||||
| JackCoreMidiOutputPort::JackCoreMidiOutputPort(double time_ratio, | JackCoreMidiOutputPort::JackCoreMidiOutputPort(double time_ratio, | ||||
| int realtime_priority, | |||||
| size_t max_bytes, | size_t max_bytes, | ||||
| size_t max_messages): | size_t max_messages): | ||||
| JackCoreMidiPort(time_ratio) | JackCoreMidiPort(time_ratio) | ||||
| @@ -36,7 +35,6 @@ JackCoreMidiOutputPort::JackCoreMidiOutputPort(double time_ratio, | |||||
| thread_queue = new JackMidiAsyncWaitQueue(max_bytes, max_messages); | thread_queue = new JackMidiAsyncWaitQueue(max_bytes, max_messages); | ||||
| std::auto_ptr<JackMidiAsyncWaitQueue> thread_ptr(thread_queue); | std::auto_ptr<JackMidiAsyncWaitQueue> thread_ptr(thread_queue); | ||||
| thread = new JackThread(this); | thread = new JackThread(this); | ||||
| this->realtime_priority = realtime_priority; | |||||
| thread_ptr.release(); | thread_ptr.release(); | ||||
| read_ptr.release(); | read_ptr.release(); | ||||
| } | } | ||||
| @@ -137,7 +135,15 @@ bool | |||||
| JackCoreMidiOutputPort::Init() | JackCoreMidiOutputPort::Init() | ||||
| { | { | ||||
| set_threaded_log_function(); | set_threaded_log_function(); | ||||
| if (thread->AcquireSelfRealTime(realtime_priority)) { | |||||
| // OSX only... | |||||
| UInt64 period = 0; | |||||
| UInt64 computation = 500 * 1000; | |||||
| UInt64 constraint = 500 * 1000; | |||||
| thread->SetParams(period, computation, constraint); | |||||
| // Use the server priority : y | |||||
| if (thread->AcquireSelfRealTime()) { | |||||
| jack_error("JackCoreMidiOutputPort::Init - could not acquire realtime " | jack_error("JackCoreMidiOutputPort::Init - could not acquire realtime " | ||||
| "scheduling. Continuing anyway."); | "scheduling. Continuing anyway."); | ||||
| } | } | ||||
| @@ -39,7 +39,6 @@ namespace Jack { | |||||
| char packet_buffer[PACKET_BUFFER_SIZE]; | char packet_buffer[PACKET_BUFFER_SIZE]; | ||||
| JackMidiBufferReadQueue *read_queue; | JackMidiBufferReadQueue *read_queue; | ||||
| int realtime_priority; | |||||
| JackThread *thread; | JackThread *thread; | ||||
| JackMidiAsyncWaitQueue *thread_queue; | JackMidiAsyncWaitQueue *thread_queue; | ||||
| @@ -55,7 +54,7 @@ namespace Jack { | |||||
| public: | public: | ||||
| JackCoreMidiOutputPort(double time_ratio, int realtime_priority, size_t max_bytes=4096, | |||||
| JackCoreMidiOutputPort(double time_ratio, size_t max_bytes=4096, | |||||
| size_t max_messages=1024); | size_t max_messages=1024); | ||||
| virtual | virtual | ||||
| @@ -30,9 +30,9 @@ JackCoreMidiPhysicalOutputPort(const char *alias_name, const char *client_name, | |||||
| const char *driver_name, int index, | const char *driver_name, int index, | ||||
| MIDIClientRef client, | MIDIClientRef client, | ||||
| MIDIPortRef internal_output, double time_ratio, | MIDIPortRef internal_output, double time_ratio, | ||||
| int realtime_priority, size_t max_bytes, | |||||
| size_t max_bytes, | |||||
| size_t max_messages): | size_t max_messages): | ||||
| JackCoreMidiOutputPort(time_ratio, realtime_priority, max_bytes, | |||||
| JackCoreMidiOutputPort(time_ratio, max_bytes, | |||||
| max_messages) | max_messages) | ||||
| { | { | ||||
| MIDIEndpointRef destination = MIDIGetDestination(index); | MIDIEndpointRef destination = MIDIGetDestination(index); | ||||
| @@ -43,7 +43,6 @@ namespace Jack { | |||||
| MIDIClientRef client, | MIDIClientRef client, | ||||
| MIDIPortRef internal_output, | MIDIPortRef internal_output, | ||||
| double time_ratio, | double time_ratio, | ||||
| int realtime_priority, | |||||
| size_t max_bytes=4096, | size_t max_bytes=4096, | ||||
| size_t max_messages=1024); | size_t max_messages=1024); | ||||
| @@ -29,9 +29,9 @@ JackCoreMidiVirtualOutputPort:: | |||||
| JackCoreMidiVirtualOutputPort(const char *alias_name, const char *client_name, | JackCoreMidiVirtualOutputPort(const char *alias_name, const char *client_name, | ||||
| const char *driver_name, int index, | const char *driver_name, int index, | ||||
| MIDIClientRef client, double time_ratio, | MIDIClientRef client, double time_ratio, | ||||
| int realtime_priority, size_t max_bytes, | |||||
| size_t max_bytes, | |||||
| size_t max_messages): | size_t max_messages): | ||||
| JackCoreMidiOutputPort(time_ratio, realtime_priority, max_bytes, | |||||
| JackCoreMidiOutputPort(time_ratio, max_bytes, | |||||
| max_messages) | max_messages) | ||||
| { | { | ||||
| std::stringstream stream; | std::stringstream stream; | ||||
| @@ -37,7 +37,6 @@ namespace Jack { | |||||
| const char *client_name, | const char *client_name, | ||||
| const char *driver_name, int index, | const char *driver_name, int index, | ||||
| MIDIClientRef client, double time_ratio, | MIDIClientRef client, double time_ratio, | ||||
| int realtime_priority, | |||||
| size_t max_bytes=4096, | size_t max_bytes=4096, | ||||
| size_t max_messages=1024); | size_t max_messages=1024); | ||||