From 45be17de9359f3b2ed6ab0b208c4a28bcffacc47 Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Mon, 12 Nov 2007 05:49:05 +0000 Subject: [PATCH] more stable close but still sometimes segfaults git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@707 6778bc44-b910-0410-a7a0-be141de4315d --- src/qprojectM-pulseaudio/QPulseAudioThread.cpp | 12 +++++++++++- src/qprojectM-pulseaudio/QPulseAudioThread.hpp | 3 +-- src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/qprojectM-pulseaudio/QPulseAudioThread.cpp b/src/qprojectM-pulseaudio/QPulseAudioThread.cpp index 507dd722b..ecb24a67e 100644 --- a/src/qprojectM-pulseaudio/QPulseAudioThread.cpp +++ b/src/qprojectM-pulseaudio/QPulseAudioThread.cpp @@ -85,7 +85,7 @@ QPulseAudioThread::QPulseAudioThread(int _argc, char **_argv, projectM * _projec QPulseAudioThread::~QPulseAudioThread() { - cleanup(); + } @@ -107,6 +107,7 @@ void QPulseAudioThread::cleanup() { mainloop_api->io_free(stdio_event); } + if (time_event) { assert(mainloop_api); mainloop_api->time_free(time_event); @@ -120,11 +121,19 @@ if (mainloop_api) pa_mainloop_free(mainloop); } + if (buffer) pa_xfree(buffer); +if (server) pa_xfree(server); + +if (device) pa_xfree(device); + +if (client_name) pa_xfree(client_name); + +if (stream_name) pa_xfree(stream_name); return ; @@ -297,6 +306,7 @@ static void stream_state_callback(pa_stream *s, void *userdata) { mainloop_api->io_enable(stdio_event, PA_IO_EVENT_NULL); return; } else { + projectM * prjm = static_cast(userdata); prjm->pcm->addPCMfloat(buffer+buffer_index, buffer_length/(sizeof(float))); assert(buffer_length); diff --git a/src/qprojectM-pulseaudio/QPulseAudioThread.hpp b/src/qprojectM-pulseaudio/QPulseAudioThread.hpp index c7be4de28..9a766bb43 100644 --- a/src/qprojectM-pulseaudio/QPulseAudioThread.hpp +++ b/src/qprojectM-pulseaudio/QPulseAudioThread.hpp @@ -17,8 +17,7 @@ class QPulseAudioThread : public QThread private: int argc; - char ** argv; - QTimer * m_timer; + char ** argv; projectM * m_projectM; }; diff --git a/src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp b/src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp index 313aae95d..17239120d 100644 --- a/src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp +++ b/src/qprojectM-pulseaudio/qprojectM-pulseaudio.cpp @@ -105,6 +105,7 @@ int main ( int argc, char*argv[] ) int ret = app.exec(); pulseThread->exit(); + pulseThread->cleanup(); delete(mainWindow); return ret;