summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorKurt Korbatits <kurt.korbatits@nokia.com>2010-04-09 12:59:47 +1000
committerKurt Korbatits <kurt.korbatits@nokia.com>2010-04-09 12:59:47 +1000
commita5b4b54820b9266a2916981002e9be66fd0a7710 (patch)
tree1025927817d9a396b8cffce7ea0a8c223c052dde /src/multimedia
parent0b1dd92c46c91711b31e1d4bded5cb5145ae161b (diff)
Just one (static) waveInCriticalSection but multiple QAudioInput to
record from different soundcards Task-number:QTBUG-9221 Reviewed-by:Andrew den Exter
Diffstat (limited to 'src/multimedia')
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.cpp10
-rw-r--r--src/multimedia/audio/qaudioinput_win32_p.h2
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.cpp8
-rw-r--r--src/multimedia/audio/qaudiooutput_win32_p.h2
4 files changed, 11 insertions, 11 deletions
diff --git a/src/multimedia/audio/qaudioinput_win32_p.cpp b/src/multimedia/audio/qaudioinput_win32_p.cpp
index ec0359ac5d..bf13c43d56 100644
--- a/src/multimedia/audio/qaudioinput_win32_p.cpp
+++ b/src/multimedia/audio/qaudioinput_win32_p.cpp
@@ -57,8 +57,6 @@ QT_BEGIN_NAMESPACE
//#define DEBUG_AUDIO 1
-static CRITICAL_SECTION waveInCriticalSection;
-
static const int minimumIntervalTime = 50;
QAudioInputPrivate::QAudioInputPrivate(const QByteArray &device, const QAudioFormat& audioFormat):
@@ -104,16 +102,16 @@ void CALLBACK QAudioInputPrivate::waveInProc( HWAVEIN hWaveIn, UINT uMsg,
case WIM_OPEN:
break;
case WIM_DATA:
- EnterCriticalSection(&waveInCriticalSection);
+ EnterCriticalSection(&qAudio->waveInCriticalSection);
if(qAudio->waveFreeBlockCount > 0)
qAudio->waveFreeBlockCount--;
qAudio->feedback();
- LeaveCriticalSection(&waveInCriticalSection);
+ LeaveCriticalSection(&qAudio->waveInCriticalSection);
break;
case WIM_CLOSE:
- EnterCriticalSection(&waveInCriticalSection);
+ EnterCriticalSection(&qAudio->waveInCriticalSection);
qAudio->finished = true;
- LeaveCriticalSection(&waveInCriticalSection);
+ LeaveCriticalSection(&qAudio->waveInCriticalSection);
break;
default:
return;
diff --git a/src/multimedia/audio/qaudioinput_win32_p.h b/src/multimedia/audio/qaudioinput_win32_p.h
index d555eff136..a12c75e7fd 100644
--- a/src/multimedia/audio/qaudioinput_win32_p.h
+++ b/src/multimedia/audio/qaudioinput_win32_p.h
@@ -122,6 +122,8 @@ private:
volatile int waveFreeBlockCount;
int waveCurrentBlock;
+ CRITICAL_SECTION waveInCriticalSection;
+
static void CALLBACK waveInProc( HWAVEIN hWaveIn, UINT uMsg,
DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 );
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.cpp b/src/multimedia/audio/qaudiooutput_win32_p.cpp
index f3ba07997a..e818723df4 100644
--- a/src/multimedia/audio/qaudiooutput_win32_p.cpp
+++ b/src/multimedia/audio/qaudiooutput_win32_p.cpp
@@ -56,8 +56,6 @@
QT_BEGIN_NAMESPACE
-static CRITICAL_SECTION waveOutCriticalSection;
-
static const int minimumIntervalTime = 50;
QAudioOutputPrivate::QAudioOutputPrivate(const QByteArray &device, const QAudioFormat& audioFormat):
@@ -107,16 +105,16 @@ void CALLBACK QAudioOutputPrivate::waveOutProc( HWAVEOUT hWaveOut, UINT uMsg,
case WOM_CLOSE:
return;
case WOM_DONE:
- EnterCriticalSection(&waveOutCriticalSection);
+ EnterCriticalSection(&qAudio->waveOutCriticalSection);
if(qAudio->finished || qAudio->buffer_size == 0 || qAudio->period_size == 0) {
- LeaveCriticalSection(&waveOutCriticalSection);
+ LeaveCriticalSection(&qAudio->waveOutCriticalSection);
return;
}
qAudio->waveFreeBlockCount++;
if(qAudio->waveFreeBlockCount >= qAudio->buffer_size/qAudio->period_size)
qAudio->waveFreeBlockCount = qAudio->buffer_size/qAudio->period_size;
qAudio->feedback();
- LeaveCriticalSection(&waveOutCriticalSection);
+ LeaveCriticalSection(&qAudio->waveOutCriticalSection);
break;
default:
return;
diff --git a/src/multimedia/audio/qaudiooutput_win32_p.h b/src/multimedia/audio/qaudiooutput_win32_p.h
index 6e0899f3ea..a7a0b07cd6 100644
--- a/src/multimedia/audio/qaudiooutput_win32_p.h
+++ b/src/multimedia/audio/qaudiooutput_win32_p.h
@@ -119,6 +119,8 @@ private:
static void CALLBACK waveOutProc( HWAVEOUT hWaveOut, UINT uMsg,
DWORD dwInstance, DWORD dwParam1, DWORD dwParam2 );
+ CRITICAL_SECTION waveOutCriticalSection;
+
WAVEHDR* allocateBlocks(int size, int count);
void freeBlocks(WAVEHDR* blockArray);
bool open();