/[svn]/linuxsampler/trunk/src/engines/EngineChannelBase.h
ViewVC logotype

Diff of /linuxsampler/trunk/src/engines/EngineChannelBase.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2352 by persson, Sun Jun 24 16:11:31 2012 UTC revision 2434 by schoenebeck, Thu Mar 7 19:23:24 2013 UTC
# Line 4  Line 4 
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck    *   *   Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck    *
6   *   Copyright (C) 2005-2008 Christian Schoenebeck                         *   *   Copyright (C) 2005-2008 Christian Schoenebeck                         *
7   *   Copyright (C) 2009-2012 Christian Schoenebeck and Grigor Iliev        *   *   Copyright (C) 2009-2013 Christian Schoenebeck and Grigor Iliev        *
8   *                                                                         *   *                                                                         *
9   *   This program is free software; you can redistribute it and/or modify  *   *   This program is free software; you can redistribute it and/or modify  *
10   *   it under the terms of the GNU General Public License as published by  *   *   it under the terms of the GNU General Public License as published by  *
# Line 121  namespace LinuxSampler { Line 121  namespace LinuxSampler {
121                      DisconnectAudioOutputDevice();                      DisconnectAudioOutputDevice();
122                  }                  }
123                  AbstractEngine* newEngine = AbstractEngine::AcquireEngine(this, pAudioOut);                  AbstractEngine* newEngine = AbstractEngine::AcquireEngine(this, pAudioOut);
124                  EngineMutex.Lock();                  {
125                  pEngine = newEngine;                      LockGuard lock(EngineMutex);
126                  EngineMutex.Unlock();                      pEngine = newEngine;
127                    }
128                  ResetInternal();                  ResetInternal();
129                  pEvents = new RTList<Event>(pEngine->pEventPool);                  pEvents = new RTList<Event>(pEngine->pEventPool);
130    
# Line 195  namespace LinuxSampler { Line 196  namespace LinuxSampler {
196                      DeleteGroupEventLists();                      DeleteGroupEventLists();
197    
198                      AudioOutputDevice* oldAudioDevice = pEngine->pAudioOutputDevice;                      AudioOutputDevice* oldAudioDevice = pEngine->pAudioOutputDevice;
199                      EngineMutex.Lock();                      {
200                      pEngine = NULL;                          LockGuard lock(EngineMutex);
201                      EngineMutex.Unlock();                          pEngine = NULL;
202                        }
203                      AbstractEngine::FreeEngine(this, oldAudioDevice);                      AbstractEngine::FreeEngine(this, oldAudioDevice);
204                      AudioDeviceChannelLeft  = -1;                      AudioDeviceChannelLeft  = -1;
205                      AudioDeviceChannelRight = -1;                      AudioDeviceChannelRight = -1;
# Line 235  namespace LinuxSampler { Line 237  namespace LinuxSampler {
237               * we are currently using on this EngineChannel is going to be updated,               * we are currently using on this EngineChannel is going to be updated,
238               * so we can stop playback before that happens.               * so we can stop playback before that happens.
239               */               */
240              virtual void ResourceToBeUpdated(I* pResource, void*& pUpdateArg) {              virtual void ResourceToBeUpdated(I* pResource, void*& pUpdateArg) OVERRIDE {
241                  dmsg(3,("EngineChannelBase: Received instrument update message.\n"));                  dmsg(3,("EngineChannelBase: Received instrument update message.\n"));
242                  if (pEngine) pEngine->DisableAndLock();                  if (pEngine) pEngine->DisableAndLock();
243                  ResetInternal();                  ResetInternal();
# Line 246  namespace LinuxSampler { Line 248  namespace LinuxSampler {
248               * Will be called by the InstrumentResourceManager when the instrument               * Will be called by the InstrumentResourceManager when the instrument
249               * update process was completed, so we can continue with playback.               * update process was completed, so we can continue with playback.
250               */               */
251              virtual void ResourceUpdated(I* pOldResource, I* pNewResource, void* pUpdateArg) {              virtual void ResourceUpdated(I* pOldResource, I* pNewResource, void* pUpdateArg) OVERRIDE {
252                  this->pInstrument = pNewResource; //TODO: there are couple of engine parameters we should update here as well if the instrument was updated (see LoadInstrument())                  this->pInstrument = pNewResource; //TODO: there are couple of engine parameters we should update here as well if the instrument was updated (see LoadInstrument())
253                  if (pEngine) pEngine->Enable();                  if (pEngine) pEngine->Enable();
254                  bStatusChanged = true; // status of engine has changed, so set notify flag                  bStatusChanged = true; // status of engine has changed, so set notify flag
# Line 258  namespace LinuxSampler { Line 260  namespace LinuxSampler {
260               *               *
261               * @param fProgress - current progress as value between 0.0 and 1.0               * @param fProgress - current progress as value between 0.0 and 1.0
262               */               */
263              virtual void OnResourceProgress(float fProgress) {              virtual void OnResourceProgress(float fProgress) OVERRIDE {
264                  this->InstrumentStat = int(fProgress * 100.0f);                  this->InstrumentStat = int(fProgress * 100.0f);
265                  dmsg(7,("EngineChannelBase: progress %d%", InstrumentStat));                  dmsg(7,("EngineChannelBase: progress %d%", InstrumentStat));
266                  bStatusChanged = true; // status of engine has changed, so set notify flag                  bStatusChanged = true; // status of engine has changed, so set notify flag

Legend:
Removed from v.2352  
changed lines
  Added in v.2434

  ViewVC Help
Powered by ViewVC