/[svn]/linuxsampler/trunk/src/linuxsampler.cpp
ViewVC logotype

Diff of /linuxsampler/trunk/src/linuxsampler.cpp

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

revision 12 by schoenebeck, Sun Nov 16 19:01:50 2003 UTC revision 13 by schoenebeck, Fri Nov 21 15:07:23 2003 UTC
# Line 25  Line 25 
25  #include <unistd.h>  #include <unistd.h>
26  #include <getopt.h>  #include <getopt.h>
27  #include <signal.h>  #include <signal.h>
28    #include <pthread.h>
29    
30  #include "global.h"  #include "global.h"
31  #include "audioio.h"  #include "audioio.h"
# Line 55  gig::File*       pGig; Line 56  gig::File*       pGig;
56  gig::Instrument* pInstrument;  gig::Instrument* pInstrument;
57  int              num_fragments;  int              num_fragments;
58  int              fragmentsize;  int              fragmentsize;
59    pthread_t        signalhandlerthread;
60    
61  void parse_options(int argc, char **argv);  void parse_options(int argc, char **argv);
62  void signal_handler(int signal);  void signal_handler(int signal);
# Line 65  int main(int argc, char **argv) { Line 67  int main(int argc, char **argv) {
67      pGig     = NULL;      pGig     = NULL;
68    
69      // setting signal handler for catching SIGINT (thus e.g. <CTRL><C>)      // setting signal handler for catching SIGINT (thus e.g. <CTRL><C>)
70        signalhandlerthread = pthread_self();
71      signal(SIGINT, signal_handler);      signal(SIGINT, signal_handler);
72    
73      patch_format      = patch_format_unknown;      patch_format      = patch_format_unknown;
# Line 124  int main(int argc, char **argv) { Line 127  int main(int argc, char **argv) {
127      printf("LinuxSampler initialization completed.\n");      printf("LinuxSampler initialization completed.\n");
128    
129      while(true)  {      while(true)  {
130        printf("Voices: %3.3d  Streams: %3.3d  \r",pAudioThread->ActiveVoiceCount, pDiskThread->ActiveStreamCount); fflush(stdout);        printf("Voices: %3.3d (Max: %3.3d) Streams: %3.3d (Max: %3.3d, Unused: %3.3d)\r",
131                pAudioThread->ActiveVoiceCount, pAudioThread->ActiveVoiceCountMax,
132                pDiskThread->ActiveStreamCount, pDiskThread->ActiveStreamCountMax, Stream::GetUnusedStreams());
133          fflush(stdout);
134        usleep(500000);        usleep(500000);
135      }      }
136    
# Line 132  int main(int argc, char **argv) { Line 138  int main(int argc, char **argv) {
138  }  }
139    
140  void signal_handler(int signal) {  void signal_handler(int signal) {
141      if (signal == SIGINT) {      if (pthread_equal(pthread_self(), signalhandlerthread) && signal == SIGINT) {    
142          // stop all threads          // stop all threads
143          if (pMidiInThread) pMidiInThread->StopThread();          if (pMidiInThread) pMidiInThread->StopThread();
144          if (pAudioThread)  pAudioThread->StopThread();          if (pAudioThread)  pAudioThread->StopThread();
145          if (pDiskThread)   pDiskThread->StopThread();          if (pDiskThread)   pDiskThread->StopThread();
146    
         sleep(1);  
   
147          // free all resources          // free all resources
148          if (pMidiInThread) delete pMidiInThread;          if (pMidiInThread) delete pMidiInThread;
149          if (pAudioThread)  delete pAudioThread;          if (pAudioThread)  delete pAudioThread;

Legend:
Removed from v.12  
changed lines
  Added in v.13

  ViewVC Help
Powered by ViewVC