comparison base/System.h @ 29:8460b3bf8f04

* Implement play mute, level and pan controls and a layer visibility control * Handle swapping the buffers in AudioCallbackPlaySource more gracefully, so that in many cases it can be done inaudibly. Still gets it wrong when playing in a noncontiguous selection. * Fix to SV file save for non-2d sparse models * Fixes to LED button drawing and AudioDial mouse functionality * Add progress bar for Ogg file import * Reshuffle PropertyContainer and its subclasses so it can be a QObject * Add layer dormancy (invisible layer permitted to free its cache space) * Optimisations to SpectrogramLayer, removing locks when reading/writing individual pixels in the cache (should be unnecessary there) -- there's still an issue here as we need a lock when reading from the model in case the model is replaced, and we don't currently have one * Several munlock() calls to make it harder to exhaust real memory if running in an RT mode with mlockall() active
author Chris Cannam
date Fri, 17 Feb 2006 18:04:26 +0000
parents d86891498eef
children 39ae3dee27b9
comparison
equal deleted inserted replaced
28:4b16526b011b 29:8460b3bf8f04
15 #include <windows.h> 15 #include <windows.h>
16 #include <malloc.h> 16 #include <malloc.h>
17 17
18 #define MLOCK(a,b) 1 18 #define MLOCK(a,b) 1
19 #define MUNLOCK(a,b) 1 19 #define MUNLOCK(a,b) 1
20 #define MUNLOCK_SAMPLEBLOCK(a) 1
20 21
21 #define DLOPEN(a,b) LoadLibrary((a).toStdWString().c_str()) 22 #define DLOPEN(a,b) LoadLibrary((a).toStdWString().c_str())
22 #define DLSYM(a,b) GetProcAddress((HINSTANCE)(a),(b)) 23 #define DLSYM(a,b) GetProcAddress((HINSTANCE)(a),(b))
23 #define DLCLOSE(a) FreeLibrary((HINSTANCE)(a)) 24 #define DLCLOSE(a) FreeLibrary((HINSTANCE)(a))
24 #define DLERROR() "" 25 #define DLERROR() ""
33 34
34 #include <sys/mman.h> 35 #include <sys/mman.h>
35 #include <dlfcn.h> 36 #include <dlfcn.h>
36 37
37 #define MLOCK(a,b) ::mlock((a),(b)) 38 #define MLOCK(a,b) ::mlock((a),(b))
38 #define MUNLOCK(a,b) ::munlock((a),(b)) 39 #define MUNLOCK(a,b) (::munlock((a),(b)) ? (::perror("munlock failed"), 0) : 0)
40 #define MUNLOCK_SAMPLEBLOCK(a) do { const float &b = *(a).begin(); MUNLOCK(&b, (a).capacity() * sizeof(float)); } while(0);
39 41
40 #define DLOPEN(a,b) dlopen((a).toStdString().c_str(),(b)) 42 #define DLOPEN(a,b) dlopen((a).toStdString().c_str(),(b))
41 #define DLSYM(a,b) dlsym((a),(b)) 43 #define DLSYM(a,b) dlsym((a),(b))
42 #define DLCLOSE(a) dlclose((a)) 44 #define DLCLOSE(a) dlclose((a))
43 #define DLERROR() dlerror() 45 #define DLERROR() dlerror()