summaryrefslogtreecommitdiffstats
path: root/src/AlsaDriver.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-02-23 19:51:43 +0000
committerDavid Robillard <d@drobilla.net>2008-02-23 19:51:43 +0000
commitbd34ee943e1041cfff7d4bd896bb4bb2c09a546a (patch)
tree8060a4f04a13cc493be76730df6abaf007a4b04b /src/AlsaDriver.cpp
parent2fd851eed1fedb7e27ac9134c4b9e7d9e2206d11 (diff)
downloadpatchage-bd34ee943e1041cfff7d4bd896bb4bb2c09a546a.tar.gz
patchage-bd34ee943e1041cfff7d4bd896bb4bb2c09a546a.tar.bz2
patchage-bd34ee943e1041cfff7d4bd896bb4bb2c09a546a.zip
Plug several memory leaks.
Reduce Patchage memory consumption (shrink (stupid) alsa thread stack size). git-svn-id: http://svn.drobilla.net/lad/patchage@1161 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/AlsaDriver.cpp')
-rw-r--r--src/AlsaDriver.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/AlsaDriver.cpp b/src/AlsaDriver.cpp
index 22d1924..3b2703b 100644
--- a/src/AlsaDriver.cpp
+++ b/src/AlsaDriver.cpp
@@ -60,7 +60,11 @@ AlsaDriver::attach(bool /*launch_daemon*/)
snd_seq_set_client_name(_seq, "Patchage");
- ret = pthread_create(&_refresh_thread, NULL, &AlsaDriver::refresh_main, this);
+ pthread_attr_t attr;
+ pthread_attr_init(&attr);
+ pthread_attr_setstacksize(&attr, 50000);
+
+ ret = pthread_create(&_refresh_thread, &attr, &AlsaDriver::refresh_main, this);
if (ret)
cerr << "Couldn't start refresh thread" << endl;
@@ -466,17 +470,17 @@ AlsaDriver::_refresh_main()
{
// "Heavily influenced" from alsa-patch-bay
// (C) 2002 Robert Ham, released under GPL
+
+ if (!create_refresh_port()) {
+ cerr << "Could not create Alsa listen port. Auto refreshing will not work." << endl;
+ return;
+ }
int ret;
int nfds = snd_seq_poll_descriptors_count(_seq, POLLIN);
struct pollfd* pfds = new struct pollfd[nfds];
unsigned short* revents = new unsigned short[nfds];
- if (!create_refresh_port()) {
- cerr << "Could not create Alsa listen port. Auto refreshing will not work." << endl;
- return;
- }
-
snd_seq_poll_descriptors(_seq, pfds, nfds, POLLIN);
while (true) {
@@ -527,6 +531,9 @@ AlsaDriver::_refresh_main()
}
}
}
+
+ delete[] pfds;
+ delete[] revents;
}