[PD-cvs] pd/src g_canvas.c, 1.4.4.1.2.3, 1.4.4.1.2.4 m_sched.c, 1.5.4.35.2.3, 1.5.4.35.2.4 s_audio.c, 1.5.4.16, 1.5.4.16.2.1 s_audio_jack.c, 1.5.4.8.2.1, 1.5.4.8.2.2 s_inter.c, 1.5.4.10.2.3, 1.5.4.10.2.4 s_loader.c, 1.4.4.5.2.1, 1.4.4.5.2.2

Tim Blechmann timblech at users.sourceforge.net
Fri Jul 15 01:17:36 CEST 2005


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10552

Modified Files:
      Tag: devel_0_39
	g_canvas.c m_sched.c s_audio.c s_audio_jack.c s_inter.c 
	s_loader.c 
Log Message:
smoother scheduler changes
switch dsp off during loading of files / externals


Index: s_loader.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_loader.c,v
retrieving revision 1.4.4.5.2.1
retrieving revision 1.4.4.5.2.2
diff -C2 -d -r1.4.4.5.2.1 -r1.4.4.5.2.2
*** s_loader.c	12 Jul 2005 15:11:11 -0000	1.4.4.5.2.1
--- s_loader.c	14 Jul 2005 23:17:33 -0000	1.4.4.5.2.2
***************
*** 54,57 ****
--- 54,58 ----
      t_xxx makeout = NULL;
      int fd;
+     int dspstate = canvas_suspend_dsp();
  #ifdef MSW
      HINSTANCE ntdll;
***************
*** 73,77 ****
              dirbuf, &nameptr, MAXPDSTRING, 1)) < 0)
          {
!             return (0);
          }
      }
--- 74,79 ----
              dirbuf, &nameptr, MAXPDSTRING, 1)) < 0)
          {
! 			canvas_resume_dsp(dspstate);
! 			return (0);
          }
      }
***************
*** 119,122 ****
--- 121,125 ----
          post("%s: couldn't load", filename);
          class_set_extern_dir(&s_);
+ 		canvas_resume_dsp(dspstate);
          return (0);
      }
***************
*** 144,147 ****
--- 147,151 ----
              post("%s: couldn't load (%s)", filename,errcode);
              class_set_extern_dir(&s_);
+ 			canvas_resume_dsp(dspstate);
              return 0;
          }
***************
*** 157,160 ****
--- 161,165 ----
          	NSLinkEditError(&c, &err, &fname, &errt);
          	post("link error %d %s %s", err, fname, errt);
+ 			canvas_resume_dsp(dspstate);
          	return 0;
          }
***************
*** 170,177 ****
          post("load_object: Symbol \"%s\" not found", symname);
          class_set_extern_dir(&s_);
!         return 0;
      }
      (*makeout)();
      class_set_extern_dir(&s_);
      return (1);
  }
--- 175,184 ----
          post("load_object: Symbol \"%s\" not found", symname);
          class_set_extern_dir(&s_);
! 		canvas_resume_dsp(dspstate);
! 		return 0;
      }
      (*makeout)();
      class_set_extern_dir(&s_);
+ 	canvas_resume_dsp(dspstate);
      return (1);
  }

Index: m_sched.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_sched.c,v
retrieving revision 1.5.4.35.2.3
retrieving revision 1.5.4.35.2.4
diff -C2 -d -r1.5.4.35.2.3 -r1.5.4.35.2.4
*** m_sched.c	13 Jul 2005 22:49:39 -0000	1.5.4.35.2.3
--- m_sched.c	14 Jul 2005 23:17:33 -0000	1.5.4.35.2.4
***************
*** 421,425 ****
  void dsp_tick(void);
  
! static int sched_usedacs = 1;
  static double sched_referencerealtime, sched_referencelogicaltime;
  double sys_time_per_dsp_tick;
--- 421,425 ----
  void dsp_tick(void);
  
! static int sched_usedacs = 0;
  static double sched_referencerealtime, sched_referencelogicaltime;
  double sys_time_per_dsp_tick;
***************
*** 500,508 ****
  	sys_update_sleepgrain();
  
      sys_initmidiqueue();
  
      while (!sys_quit)
      {
! 		if (!sys_callbackscheduler)
  			while (sys_keepsched)
  			{
--- 500,510 ----
  	sys_update_sleepgrain();
  
+ 	sched_set_using_dacs(0); /* tb: dsp is switched off */
+ 
      sys_initmidiqueue();
  
      while (!sys_quit)
      {
! 		if (!sys_callbackscheduler || !sched_usedacs)
  			while (sys_keepsched)
  			{
***************
*** 583,586 ****
--- 585,589 ----
  
  				sys_pollmidiqueue();
+ 				sys_setmiditimediff(0, 1e-6 * sys_schedadvance);
  				
   				if (run_clock_callbacks(sys_time))

Index: s_inter.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_inter.c,v
retrieving revision 1.5.4.10.2.3
retrieving revision 1.5.4.10.2.4
diff -C2 -d -r1.5.4.10.2.3 -r1.5.4.10.2.4
*** s_inter.c	13 Jul 2005 22:49:39 -0000	1.5.4.10.2.3
--- s_inter.c	14 Jul 2005 23:17:33 -0000	1.5.4.10.2.4
***************
*** 1396,1400 ****
  		}
  		
! 		sys_microsleep(6e7); /* and sleep for another 60 seconds */
  	}
  }
--- 1396,1400 ----
  		}
  		
! 		sys_microsleep(1.5e7); /* and sleep for another 15 seconds */
  	}
  }

Index: s_audio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio.c,v
retrieving revision 1.5.4.16
retrieving revision 1.5.4.16.2.1
diff -C2 -d -r1.5.4.16 -r1.5.4.16.2.1
*** s_audio.c	15 May 2005 19:03:37 -0000	1.5.4.16
--- s_audio.c	14 Jul 2005 23:17:33 -0000	1.5.4.16.2.1
***************
*** 445,448 ****
--- 445,450 ----
         post("sys_close_audio: unknown API %d", sys_audioapi);
      sys_inchannels = sys_outchannels = 0;
+ 
+ 	sched_set_using_dacs(0); /* tb: dsp is switched off */
  }
  
***************
*** 898,912 ****
      {
          if (!audio_isopen())
!             sys_reopen_audio();    
      }
      else
      {
          if (audio_isopen())
-         {
              sys_close_audio();
-             sched_set_using_dacs(0);
-         }
      }
!     audio_state = onoff;
  }
  
--- 900,913 ----
      {
          if (!audio_isopen())
!             sys_reopen_audio();
      }
      else
      {
          if (audio_isopen())
              sys_close_audio();
      }
! 	sched_set_using_dacs(onoff);
! 	sys_setscheduler(sys_getscheduler()); /* tb: reset scheduler */
! 	audio_state = onoff;
  }
  

Index: s_audio_jack.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_jack.c,v
retrieving revision 1.5.4.8.2.1
retrieving revision 1.5.4.8.2.2
diff -C2 -d -r1.5.4.8.2.1 -r1.5.4.8.2.2
*** s_audio_jack.c	12 Jul 2005 15:11:10 -0000	1.5.4.8.2.1
--- s_audio_jack.c	14 Jul 2005 23:17:33 -0000	1.5.4.8.2.2
***************
*** 84,87 ****
--- 84,89 ----
  static void (*zeroblock)(t_sample *dst,int n);
  
+ extern int canvas_dspstate;
+ 
  static int cb_process (jack_nframes_t nframes, void *arg)
  {
***************
*** 89,92 ****
--- 91,106 ----
  	int timeout = nframes * 1e6 / sys_dacsr;
  	
+ 	if (canvas_dspstate == 0)
+ 	{
+ 		for (j = 0; j < sys_outchannels;  j++) 
+ 		{
+ 			t_sample * out = jack_port_get_buffer (output_port[j], nframes);
+ 			zeroblock(out, dspticks_per_jacktick * sys_dacblocksize);
+ 		}
+ 		
+ 		sys_time += sys_time_per_dsp_tick;
+ 		return 0;
+ 	}
+ 	
  	int status = sys_timedlock(timeout);
  	
***************
*** 482,486 ****
  	{
  		int i;
- 		sys_setscheduler(0);
  		jack_deactivate(jack_client);
  		jack_started = 0;
--- 496,499 ----

Index: g_canvas.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_canvas.c,v
retrieving revision 1.4.4.1.2.3
retrieving revision 1.4.4.1.2.4
diff -C2 -d -r1.4.4.1.2.3 -r1.4.4.1.2.4
*** g_canvas.c	12 Jul 2005 15:11:07 -0000	1.4.4.1.2.3
--- g_canvas.c	14 Jul 2005 23:17:33 -0000	1.4.4.1.2.4
***************
*** 50,54 ****
  extern t_pd *newest;
  t_class *canvas_class;
! static int canvas_dspstate;         /* whether DSP is on or off */  
  t_canvas *canvas_editing;           /* last canvas to start text edting */ 
  t_canvas *canvas_whichfind;         /* last canvas we did a find in */ 
--- 50,54 ----
  extern t_pd *newest;
  t_class *canvas_class;
! int canvas_dspstate;                /* whether DSP is on or off */  
  t_canvas *canvas_editing;           /* last canvas to start text edting */ 
  t_canvas *canvas_whichfind;         /* last canvas we did a find in */ 





More information about the Pd-cvs mailing list