Browse Source

Really fix auto_ptr issues on Windows.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@4264 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.9.8
sletz 14 years ago
parent
commit
a722a218db
2 changed files with 10 additions and 17 deletions
  1. +4
    -7
      windows/winmme/JackWinMMEInputPort.cpp
  2. +6
    -10
      windows/winmme/JackWinMMEOutputPort.cpp

+ 4
- 7
windows/winmme/JackWinMMEInputPort.cpp View File

@@ -50,9 +50,9 @@ JackWinMMEInputPort::JackWinMMEInputPort(const char *alias_name,
size_t max_bytes, size_t max_messages)
{
thread_queue = new JackMidiAsyncQueue(max_bytes, max_messages);
//std::auto_ptr<JackMidiAsyncQueue> thread_queue_ptr(thread_queue);
std::auto_ptr<JackMidiAsyncQueue> thread_queue_ptr(thread_queue);
write_queue = new JackMidiBufferWriteQueue();
//std::auto_ptr<JackMidiBufferWriteQueue> write_queue_ptr(write_queue);
std::auto_ptr<JackMidiBufferWriteQueue> write_queue_ptr(write_queue);
sysex_buffer = new jack_midi_data_t[max_bytes];
char error_message[MAXERRORLENGTH];
MMRESULT result = midiInOpen(&handle, index, (DWORD)HandleMidiInputEvent,
@@ -95,8 +95,8 @@ JackWinMMEInputPort::JackWinMMEInputPort(const char *alias_name,
snprintf(name, sizeof(name) - 1, "%s:capture_%d", client_name, index + 1);
jack_event = 0;
started = false;
//write_queue_ptr.release();
//thread_queue_ptr.release();
write_queue_ptr.release();
thread_queue_ptr.release();
return;

unprepare_header:
@@ -112,9 +112,6 @@ JackWinMMEInputPort::JackWinMMEInputPort(const char *alias_name,
}
delete_sysex_buffer:
delete[] sysex_buffer;
// auto_ptr causing crash so explicitly deleting here...
delete thread_queue;
delete write_queue;
throw std::runtime_error(error_message);
}



+ 6
- 10
windows/winmme/JackWinMMEOutputPort.cpp View File

@@ -49,11 +49,11 @@ JackWinMMEOutputPort::JackWinMMEOutputPort(const char *alias_name,
size_t max_messages)
{
read_queue = new JackMidiBufferReadQueue();
//std::auto_ptr<JackMidiBufferReadQueue> read_queue_ptr(read_queue);
std::auto_ptr<JackMidiBufferReadQueue> read_queue_ptr(read_queue);
thread_queue = new JackMidiAsyncQueue(max_bytes, max_messages);
//std::auto_ptr<JackMidiAsyncQueue> thread_queue_ptr(thread_queue);
std::auto_ptr<JackMidiAsyncQueue> thread_queue_ptr(thread_queue);
thread = new JackThread(this);
//std::auto_ptr<JackThread> thread_ptr(thread);
std::auto_ptr<JackThread> thread_ptr(thread);
char error_message[MAXERRORLENGTH];
MMRESULT result = midiOutOpen(&handle, index, (DWORD)HandleMessageEvent,
(DWORD)this, CALLBACK_FUNCTION);
@@ -84,9 +84,9 @@ JackWinMMEOutputPort::JackWinMMEOutputPort(const char *alias_name,
snprintf(alias, sizeof(alias) - 1, "%s:%s:out%d", alias_name, name_tmp,
index + 1);
snprintf(name, sizeof(name) - 1, "%s:playback_%d", client_name, index + 1);
//thread_ptr.release();
//thread_queue_ptr.release();
//thread_ptr.release();
read_queue_ptr.release();
thread_queue_ptr.release();
thread_ptr.release();
return;

destroy_thread_queue_semaphore:
@@ -100,10 +100,6 @@ JackWinMMEOutputPort::JackWinMMEOutputPort(const char *alias_name,
result);
}
raise_exception:
// auto_ptr causing crash so explicitly deleting here...
delete read_queue;
delete thread_queue;
delete thread;
throw std::runtime_error(error_message);
}



Loading…
Cancel
Save