diff options
author | Andrew den Exter <andrew.den-exter@nokia.com> | 2012-08-02 12:38:27 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-03 06:06:29 +0200 |
commit | b11e4cb8f57eabc32eb742b42f088898d96ec909 (patch) | |
tree | 82cbc453ba3547928773043f359f3f0a66bc0eeb /examples/mobile/quickhit/ga_src/GEInterfaces.cpp | |
parent | 680c98b04db6d5a49575782ba5bb58e06fa78bc2 (diff) |
Fix install paths of demos and examples.
Install all demos and examples to the qtquick1 subdirectory of
the examples install location, demos under a demos folder,
declarative examples under a declarative folder and the common
viewer code under a helper folder.
This mirrors the directory structure of the src directory and
ensures the examples sources can be built from the install
location.
Task-number: QTBUG-26663
Change-Id: I406f4fa58e5f004eb1aef5902fa2d6267517943d
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
Diffstat (limited to 'examples/mobile/quickhit/ga_src/GEInterfaces.cpp')
-rw-r--r-- | examples/mobile/quickhit/ga_src/GEInterfaces.cpp | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/examples/mobile/quickhit/ga_src/GEInterfaces.cpp b/examples/mobile/quickhit/ga_src/GEInterfaces.cpp new file mode 100644 index 00000000..4e5d492c --- /dev/null +++ b/examples/mobile/quickhit/ga_src/GEInterfaces.cpp @@ -0,0 +1,178 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/ +** +** This file is part of the demonstration applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <memory.h> +#include "GEInterfaces.h" + + +using namespace GE; + +/** + * CAudioSource + * common functionality + * + */ +IAudioSource::IAudioSource() { + m_next = 0; +}; + +IAudioSource::~IAudioSource() { + + +}; + +/** + * CAudioMixer + * + */ +CAudioMixer::CAudioMixer() { + m_sourceList = 0; + m_mixingBuffer = 0; + m_mixingBufferLength = 0; + m_fixedGeneralVolume = 4096; +}; + + +CAudioMixer::~CAudioMixer() { + destroyList(); + if (m_mixingBuffer) { + delete [] m_mixingBuffer; + m_mixingBuffer = 0; + }; +}; + +void CAudioMixer::destroyList() { + m_mutex.lock(); + IAudioSource *l = m_sourceList; + while (l) { + IAudioSource *n = l->m_next; + delete l; + l = n; + }; + m_sourceList = 0; + m_mutex.unlock(); +}; + + +IAudioSource* CAudioMixer::addAudioSource( IAudioSource *source ) { + m_mutex.lock(); + source->m_next = 0; + if (m_sourceList) { + IAudioSource *l = m_sourceList; + while (l->m_next) l = l->m_next; + l->m_next = source; + } else m_sourceList = source; + m_mutex.unlock(); + return source; + +}; + + +bool CAudioMixer::removeAudioSource( IAudioSource *source ) { + return true; +}; + +void CAudioMixer::setGeneralVolume( float vol ) { + m_fixedGeneralVolume = (4096.0f*vol); +}; + +int CAudioMixer::pullAudio( AUDIO_SAMPLE_TYPE *target, int bufferLength ) { + + if (!m_sourceList) return 0; + + m_mutex.lock(); + + + if (m_mixingBufferLength<bufferLength) { + if (m_mixingBuffer) delete [] m_mixingBuffer; + m_mixingBufferLength = bufferLength; + m_mixingBuffer = new AUDIO_SAMPLE_TYPE[ m_mixingBufferLength ]; + }; + + memset( target, 0, sizeof( AUDIO_SAMPLE_TYPE ) * bufferLength ); + + AUDIO_SAMPLE_TYPE *t; + AUDIO_SAMPLE_TYPE *t_target; + AUDIO_SAMPLE_TYPE *s; + + IAudioSource *prev = 0; + IAudioSource *l = m_sourceList; + while (l) { + IAudioSource *next = l->m_next; + + // process l + int mixed = l->pullAudio( m_mixingBuffer, bufferLength ); + if (mixed>0) { + // mix to main.. + t = target; + t_target = t+mixed; + s = m_mixingBuffer; + while (t!=t_target) { + *t +=(((*s)*m_fixedGeneralVolume)>>12); + t++; + s++; + }; + }; + + + + // autodestroy + if (l->canBeDestroyed() == true) { // NOTE, IS UNDER TESTING,... MIGHT CAUSE UNPREDICTABLE CRASHING WITH SOME USE CASES!!! + if (!prev) + m_sourceList = next; + else prev->m_next = next; + delete l; + l = 0; + }; + + + + + prev = l; + l = next; + }; + m_mutex.unlock(); + return bufferLength; +}; + + + + |