Jack2 1.9.6
|
00001 /* 00002 Copyright (C) 2001 Paul Davis 00003 Copyright (C) 2004-2008 Grame 00004 00005 This program is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program; if not, write to the Free Software 00017 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00018 00019 */ 00020 00021 #include "JackSystemDeps.h" 00022 #include "JackRestartThreadedDriver.h" 00023 #include "JackException.h" 00024 00025 namespace Jack 00026 { 00027 00028 bool JackRestartThreadedDriver::Execute() 00029 { 00030 try { 00031 // Keep running even in case of error 00032 while (fThread.GetStatus() == JackThread::kRunning) { 00033 Process(); 00034 } 00035 return false; 00036 } catch (JackNetException& e) { 00037 e.PrintMessage(); 00038 jack_log("Driver is restarted"); 00039 fThread.DropSelfRealTime(); 00040 // Thread in kIniting status again... 00041 fThread.SetStatus(JackThread::kIniting); 00042 if (Init()) { 00043 // Thread in kRunning status again... 00044 fThread.SetStatus(JackThread::kRunning); 00045 return true; 00046 } else { 00047 return false; 00048 } 00049 } 00050 } 00051 00052 } // end of namespace