[PD-cvs] pd/src g_canvas.c,1.4,1.4.4.1 g_canvas.h,1.3,1.3.4.1 g_editor.c,1.4,1.4.4.1 g_graph.c,1.3,1.3.4.1 g_io.c,1.3,1.3.4.1 g_text.c,1.5,1.5.4.1 m_glob.c,1.4,1.4.4.1 m_obj.c,1.2,1.2.4.1 m_pd.h,1.4,1.4.4.1 makefile,1.6,1.6.4.1 makefile.nt,1.2,1.2.4.1 notes.txt,1.6,1.6.4.1 s_audio.c,1.5,1.5.4.1 s_audio_alsa.c,1.5,1.5.4.1 s_audio_alsamm.c,1.1,1.1.4.1 s_audio_pablio.c,1.1,1.1.4.1 s_audio_pablio.h,1.1,1.1.4.1 s_audio_paring.c,1.1,1.1.4.1 s_audio_paring.h,1.1,1.1.4.1 s_file.c,1.2,1.2.4.1 s_inter.c,1.5,1.5.4.1 s_loader.c,1.4,1.4.4.1 s_main.c,1.7,1.7.4.1 s_midi.c,1.4,1.4.4.1 s_path.c,1.3,1.3.4.1 s_stuff.h,1.5,1.5.4.1 t_tkcmd.c,1.2,1.2.4.1 u_main.tk,1.4,1.4.4.1

Tim Blechmann timblech at users.sourceforge.net
Fri Nov 5 15:27:50 CET 2004


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

Modified Files:
      Tag: devel_0_38
	g_canvas.c g_canvas.h g_editor.c g_graph.c g_io.c g_text.c 
	m_glob.c m_obj.c m_pd.h makefile makefile.nt notes.txt 
	s_audio.c s_audio_alsa.c s_audio_alsamm.c s_audio_pablio.c 
	s_audio_pablio.h s_audio_paring.c s_audio_paring.h s_file.c 
	s_inter.c s_loader.c s_main.c s_midi.c s_path.c s_stuff.h 
	t_tkcmd.c u_main.tk 
Log Message:
devel_0_38

Index: u_main.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -C2 -d -r1.4 -r1.4.4.1
*** u_main.tk	6 Sep 2004 20:20:36 -0000	1.4
--- u_main.tk	5 Nov 2004 14:27:47 -0000	1.4.4.1
***************
*** 1,5 ****
  #!/usr/bin/wish
  
- set pd_nt 0
  # (The above is 0 for unix, 1 for microsoft, and 2 for Mac OSX.  The first
  # line is automatically munged by the relevant makefiles.)
--- 1,5 ----
+ set pd_nt 1
  #!/usr/bin/wish
  
  # (The above is 0 for unix, 1 for microsoft, and 2 for Mac OSX.  The first
  # line is automatically munged by the relevant makefiles.)
***************
*** 26,34 ****
      regsub -all \\\\ $pd_gui2 / pd_gui3
      set pd_guidir $pd_gui3/..
!     load $pd_guidir/bin/pdtcl
      set pd_tearoff 1
  }
  
  if {$pd_nt == 2} {
      global pd_guidir
      global pd_tearoff
--- 26,36 ----
      regsub -all \\\\ $pd_gui2 / pd_gui3
      set pd_guidir $pd_gui3/..
!     load $pd_guidir/bin/pdtcl.dll
      set pd_tearoff 1
  }
  
  if {$pd_nt == 2} {
+ # turn on James Tittle II's fast drawing (wait until I can test this...):
+ #   set tk::mac::useCGDrawing 1
      global pd_guidir
      global pd_tearoff
***************
*** 291,297 ****
      global pd_guidir
      global pd_myversion
      set name [format ".help%d" $doc_number]
      toplevel $name
!     text $name.text -relief raised -bd 2 -font -*-courier-bold--normal--12-* \
      	-yscrollcommand "$name.scroll set" -background white
      scrollbar $name.scroll -command "$name.text yview"
--- 293,300 ----
      global pd_guidir
      global pd_myversion
+ 	global pd_font3
      set name [format ".help%d" $doc_number]
      toplevel $name
!     text $name.text -relief raised -bd 2 -font $pd_font3 \
      	-yscrollcommand "$name.scroll set" -background white
      scrollbar $name.scroll -command "$name.text yview"
***************
*** 316,323 ****
      global pd_nt
  
!     set filename [tk_getOpenFile -defaultextension .pd \
!     -filetypes { {{documentation} {.pd .txt .htm}} } \
!     -initialdir $help_directory]
! 
      if {$filename != ""} {
      	if {[string first .txt $filename] >= 0} {
--- 319,333 ----
      global pd_nt
  
!     if {$pd_nt == 2} {
!     	exec rm -rf /tmp/pd-documentation
!     	exec cp -pr $help_directory /tmp/pd-documentation
! 	set filename [tk_getOpenFile -defaultextension .pd \
! 	-filetypes { {{documentation} {.pd .txt .htm}} } \
! 	-initialdir /tmp/pd-documentation]
!     } else {
! 	set filename [tk_getOpenFile -defaultextension .pd \
! 	-filetypes { {{documentation} {.pd .txt .htm}} } \
! 	-initialdir $help_directory]
!     }    
      if {$filename != ""} {
      	if {[string first .txt $filename] >= 0} {
***************
*** 2637,2641 ****
  
  proc pdtk_data_dialog {name stuff} {
!     
      toplevel $name
      wm title $name {Atom}
--- 2647,2651 ----
  
  proc pdtk_data_dialog {name stuff} {
!     global pd_font3
      toplevel $name
      wm title $name {Atom}
***************
*** 2652,2656 ****
  
      text $name.text -relief raised -bd 2 -height 40 -width 60 \
!     	-yscrollcommand "$name.scroll set" -font -*-courier-bold--normal--12-*
      scrollbar $name.scroll -command "$name.text yview"
      pack $name.scroll -side right -fill y
--- 2662,2666 ----
  
      text $name.text -relief raised -bd 2 -height 40 -width 60 \
!     	-yscrollcommand "$name.scroll set" -font pd_font3
      scrollbar $name.scroll -command "$name.text yview"
      pack $name.scroll -side right -fill y
***************
*** 2677,2682 ****
  #    if {$font < 13} {set fontname [format -*-courier-bold----%d-* $font]}
  #    if {$font >= 13} {set fontname [format -*-courier-----%d-* $font]}
      $canvasname create text $x $y \
!     	-font [format -*-courier-bold--normal--%d-* $font] \
      	-tags $myname -text $text -fill $color  -anchor nw 
  #    pd [concat $myname size [$canvasname bbox $myname] \;]
--- 2687,2704 ----
  #    if {$font < 13} {set fontname [format -*-courier-bold----%d-* $font]}
  #    if {$font >= 13} {set fontname [format -*-courier-----%d-* $font]}
+ 
+ 	global pd_font1 pd_font2 pd_font3 pd_font4 pd_font5 pd_font6 pd_font7 
+ 	switch -- $font {
+ 		8  { set typeface $pd_font1 }
+ 		10 { set typeface $pd_font2 }
+ 		12 { set typeface $pd_font3 }
+ 		14 { set typeface $pd_font4 }
+ 		16 { set typeface $pd_font5 }
+ 		24 { set typeface $pd_font6 }
+ 		36 { set typeface $pd_font7 }
+ 	}
+ 
      $canvasname create text $x $y \
!     	-font $typeface \
      	-tags $myname -text $text -fill $color  -anchor nw 
  #    pd [concat $myname size [$canvasname bbox $myname] \;]
***************
*** 2709,2737 ****
  # font sizes 8, 10, 12, 14, 16, and 24.
  
! proc pdtk_pd_startup {version apilist} {
      global pd_myversion pd_apilist
      set pd_myversion $version
      set pd_apilist $apilist
  
!     set width1 [font measure  -*-courier-bold--normal--8-* x]
!     set height1 [lindex [font metrics -*-courier-bold--normal--8-*] 5]
! 
!     set width2 [font measure  -*-courier-bold--normal--10-* x]
!     set height2 [lindex [font metrics -*-courier-bold--normal--10-*] 5]
! 
!     set width3 [font measure  -*-courier-bold--normal--12-* x]
!     set height3 [lindex [font metrics -*-courier-bold--normal--12-*] 5]
! 
!     set width4 [font measure  -*-courier-bold--normal--14-* x]
!     set height4 [lindex [font metrics -*-courier-bold--normal--14-*] 5]
! 
!     set width5 [font measure  -*-courier-bold--normal--16-* x]
!     set height5 [lindex [font metrics -*-courier-bold--normal--16-*] 5]
! 
!     set width6 [font measure  -*-courier-bold--normal--24-* x]
!     set height6 [lindex [font metrics -*-courier-bold--normal--24-*] 5]
  
!     set width7 [font measure  -*-courier-bold--normal--36-* x]
!     set height7 [lindex [font metrics -*-courier-bold--normal--36-*] 5]
  
      set tclpatch [info patchlevel]
--- 2731,2764 ----
  # font sizes 8, 10, 12, 14, 16, and 24.
  
! # tb: user defined typefaces
! proc pdtk_pd_startup {version apilist fontname} {
!     puts stderr [concat $version $apilist $fontname]
      global pd_myversion pd_apilist
      set pd_myversion $version
      set pd_apilist $apilist
+ 	global pd_font1 pd_font2 pd_font3 pd_font4 pd_font5 pd_font6 pd_font7
  
! 	set pd_font1 [format -*-%s-bold--normal--8-* $fontname]
! 	set pd_font2 [format -*-%s-bold--normal--10-* $fontname]
!  	set pd_font3 [format -*-%s-bold--normal--12-* $fontname]
!  	set pd_font4 [format -*-%s-bold--normal--14-* $fontname]
! 	set pd_font5 [format -*-%s-bold--normal--16-* $fontname]
! 	set pd_font6 [format -*-%s-bold--normal--24-* $fontname]
! 	set pd_font7 [format -*-%s-bold--normal--36-* $fontname]
  
!     set width1 [font measure  $pd_font1 x]
!     set height1 [lindex [font metrics $pd_font1] 5]
!     set width2 [font measure  $pd_font2 x]
!     set height2 [lindex [font metrics $pd_font2] 5]
!     set width3 [font measure  $pd_font3 x]
!     set height3 [lindex [font metrics $pd_font3] 5]
!     set width4 [font measure  $pd_font4 x]
!     set height4 [lindex [font metrics $pd_font4] 5]
!     set width5 [font measure  $pd_font5 x]
!     set height5 [lindex [font metrics $pd_font5] 5]
!     set width6 [font measure  $pd_font6 x]
!     set height6 [lindex [font metrics $pd_font6] 5]
!     set width7 [font measure  $pd_font7 x]
!     set height7 [lindex [font metrics $pd_font7] 5]
  
      set tclpatch [info patchlevel]
***************
*** 2817,2821 ****
  
  proc pdtk_pd_texteditor {stuff} {
!     global edit_number
      set name [format ".text%d" $edit_number]
      set edit_number [expr $edit_number + 1]
--- 2844,2848 ----
  
  proc pdtk_pd_texteditor {stuff} {
!     global edit_number pd_font3
      set name [format ".text%d" $edit_number]
      set edit_number [expr $edit_number + 1]
***************
*** 2834,2838 ****
  
      text $name.text -relief raised -bd 2 -height 12 -width 60 \
!     	-yscrollcommand "$name.scroll set" -font -*-courier-bold--normal--12-*
      scrollbar $name.scroll -command "$name.text yview"
      pack $name.scroll -side right -fill y
--- 2861,2865 ----
  
      text $name.text -relief raised -bd 2 -height 12 -width 60 \
!     	-yscrollcommand "$name.scroll set" -font $pd_font3
      scrollbar $name.scroll -command "$name.text yview"
      pack $name.scroll -side right -fill y
***************
*** 3203,3207 ****
  proc midi_apply {id} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
!     global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4 
  
      pd [concat pd midi-dialog \
--- 3230,3234 ----
  proc midi_apply {id} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
!     global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4 midi_alsain midi_alsaout
  
      pd [concat pd midi-dialog \
***************
*** 3214,3217 ****
--- 3241,3246 ----
      	$midi_outdev3 \
      	$midi_outdev4 \
+     	$midi_alsain \
+     	$midi_alsaout \
  	\;]
  }
***************
*** 3252,3259 ****
  
  proc pdtk_midi_dialog {id indevlist indev1 indev2 indev3 indev4 \
!     	outdevlist outdev1 outdev2 outdev3 outdev4 longform} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
      global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4
!     global midi_indevlist midi_outdevlist
  
      set midi_indev1 $indev1
--- 3281,3288 ----
  
  proc pdtk_midi_dialog {id indevlist indev1 indev2 indev3 indev4 \
!     	outdevlist outdev1 outdev2 outdev3 outdev4 longform alsa} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
      global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4
!     global midi_indevlist midi_outdevlist midi_alsain midi_alsaout
  
      set midi_indev1 $indev1
***************
*** 3267,3271 ****
      set midi_indevlist $indevlist
      set midi_outdevlist $outdevlist
! 
      toplevel $id
      wm title $id {midi}
--- 3296,3302 ----
      set midi_indevlist $indevlist
      set midi_outdevlist $outdevlist
!     set midi_alsain [llength $indevlist]
!     set midi_alsaout [llength $outdevlist]
!     
      toplevel $id
      wm title $id {midi}
***************
*** 3283,3291 ****
      pack $id.buttonframe.apply -side left -expand 1
      pack $id.buttonframe.ok -side left -expand 1
!     
!     	# input device 1
      frame $id.in1f
      pack $id.in1f -side top
  
      label $id.in1f.l1 -text "input device 1:"
      button $id.in1f.x1 -text [lindex $indevlist $midi_indev1] \
--- 3314,3323 ----
      pack $id.buttonframe.apply -side left -expand 1
      pack $id.buttonframe.ok -side left -expand 1
! 
      frame $id.in1f
      pack $id.in1f -side top
  
+   if {$alsa == 0} {
+     	# input device 1
      label $id.in1f.l1 -text "input device 1:"
      button $id.in1f.x1 -text [lindex $indevlist $midi_indev1] \
***************
*** 3374,3381 ****
  	frame $id.longbutton
  	pack $id.longbutton -side top
!     	button $id.longbutton.b -text {use multiple devices} \
      	    -command  {pd pd midi-properties 1 \;}
      	pack $id.longbutton.b
      }
  }
  
--- 3406,3422 ----
  	frame $id.longbutton
  	pack $id.longbutton -side top
!     	button $id.longbutton.b -text {use multiple alsa devices} \
      	    -command  {pd pd midi-properties 1 \;}
      	pack $id.longbutton.b
      }
+     }
+     if {$alsa} {
+     	label $id.in1f.l1 -text "In Channels:"
+     	entry $id.in1f.x1 -textvariable midi_alsain -width 4
+         pack $id.in1f.l1 $id.in1f.x1 -side left
+ 	label $id.in1f.l2 -text "Out Channels:"
+     	entry $id.in1f.x2 -textvariable midi_alsaout -width 4
+         pack $id.in1f.l2 $id.in1f.x2 -side left
+     }
  }
  

Index: s_path.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_path.c,v
retrieving revision 1.3
retrieving revision 1.3.4.1
diff -C2 -d -r1.3 -r1.3.4.1
*** s_path.c	6 Sep 2004 20:20:36 -0000	1.3
--- s_path.c	5 Nov 2004 14:27:47 -0000	1.3.4.1
***************
*** 393,405 ****
      rcargv[0] = ".";    /* this no longer matters to sys_argparse() */
  
!     for (i = 1; i < NUMARGS-1; i++)
!     {
!         if (fscanf(file, "%999s", buf) < 0)
!             break;
!         buf[1000] = 0;
!         if (!(rcargv[i] = malloc(strlen(buf) + 1)))
!             return (1);
!         strcpy(rcargv[i], buf);
      }
      if (i >= NUMARGS-1)
          fprintf(stderr, "startup file too long; extra args dropped\n");
--- 393,423 ----
      rcargv[0] = ".";    /* this no longer matters to sys_argparse() */
  
! 	/* tb: comments in pdrc file { */
! 	i=1;
! 	char c[MAXPDSTRING];
! 	while ( (fgets(c,MAXPDSTRING,file)) != 0) 
! 	{
! 		if ( c[strlen(c)-1] !='\n')
! 		{
! 			//it is unlikely that this is ever the case
! 			fprintf(stderr, "startup file contains a line that's too long\n");
! 			while ( fgetc(file) != '\n');
! 		}
! 		
! 		if (c[0] != '#')
! 		{
! 			while (sscanf(c,"%999s",buf) != EOF)
! 			{
! 				buf[1000] = 0;
! 				if (!(rcargv[i] = malloc(strlen(buf) + 1)))
! 					return (1);
! 				strcpy(rcargv[i], buf);
! 				strcpy(buf,c+strlen(buf)+1);
! 				strcpy(c,buf);
! 				++i;
! 			}
! 		}
      }
+ 	/* } tb */
      if (i >= NUMARGS-1)
          fprintf(stderr, "startup file too long; extra args dropped\n");
***************
*** 485,489 ****
  
      sprintf(buf, "pdtk_path_dialog %%s %d %d\n", sys_usestdpath, sys_verbose);
!     gfxstub_new(&glob_pdobject, glob_start_path_dialog, buf);
  }
  
--- 503,507 ----
  
      sprintf(buf, "pdtk_path_dialog %%s %d %d\n", sys_usestdpath, sys_verbose);
!     gfxstub_new(&glob_pdobject, (void *)glob_start_path_dialog, buf);
  }
  
***************
*** 518,522 ****
      sprintf(buf, "pdtk_startup_dialog %%s %d \"%s\"\n", sys_defeatrt,
          sys_flags->s_name);
!     gfxstub_new(&glob_pdobject, glob_start_startup_dialog, buf);
  }
  
--- 536,540 ----
      sprintf(buf, "pdtk_startup_dialog %%s %d \"%s\"\n", sys_defeatrt,
          sys_flags->s_name);
!     gfxstub_new(&glob_pdobject, (void *)glob_start_startup_dialog, buf);
  }
  

Index: s_stuff.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_stuff.h,v
retrieving revision 1.5
retrieving revision 1.5.4.1
diff -C2 -d -r1.5 -r1.5.4.1
*** s_stuff.h	6 Sep 2004 20:20:36 -0000	1.5
--- s_stuff.h	5 Nov 2004 14:27:47 -0000	1.5.4.1
***************
*** 39,42 ****
--- 39,43 ----
  extern int sys_nogui;
  extern char *sys_guicmd;
+ extern int sys_tooltips;
  
  EXTERN int sys_nearestfontsize(int fontsize);
***************
*** 152,155 ****
--- 153,157 ----
  #define API_JACK 5
  #define API_SGI 6
+ #define API_ASIO 7
  
  #ifdef __linux__
***************
*** 233,236 ****
--- 235,247 ----
          int maxndev, int devdescsize);
  
+ void asio_open_audio(int naudioindev, int *audioindev, int nchindev, 
+ 					 int *chindev, int naudiooutdev, int *audiooutdev,
+ 					 int nchoutdev, int *choutdev, int srate);
+ void asio_close_audio(void);
+ void asio_getdevs(char *indevlist, int *nindevs,
+ 				  char *outdevlist, int *noutdevs, int *canmulti, 
+ 				  int maxndev, int devdescsize);
+ int asio_send_dacs(void);
+ 
  void sys_listmididevs(void);
  void sys_set_audio_api(int whichapi);

Index: m_glob.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_glob.c,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -C2 -d -r1.4 -r1.4.4.1
*** m_glob.c	6 Sep 2004 20:20:35 -0000	1.4
--- m_glob.c	5 Nov 2004 14:27:46 -0000	1.4.4.1
***************
*** 31,34 ****
--- 31,35 ----
  void glob_watchdog(t_pd *dummy);
  void glob_savepreferences(t_pd *dummy);
+ void glob_tooltips(t_pd *dummy, t_float f);
  
  void alsa_resync( void);
***************
*** 109,112 ****
--- 110,115 ----
      class_addmethod(glob_pdobject, (t_method)glob_savepreferences,
          gensym("save-preferences"), 0);
+     class_addmethod(glob_pdobject, (t_method)glob_tooltips,
+     	gensym("tooltips"), A_DEFFLOAT, 0);
  #ifdef UNIX
      class_addmethod(glob_pdobject, (t_method)glob_watchdog,

Index: makefile.nt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile.nt,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -C2 -d -r1.2 -r1.2.4.1
*** makefile.nt	6 Sep 2004 20:20:35 -0000	1.2
--- makefile.nt	5 Nov 2004 14:27:46 -0000	1.2.4.1
***************
*** 1,25 ****
  # Makefile for PD on MSW
  
  all: pd gui ..\bin\pd.tk ..\bin\pdsend.exe ..\bin\pdreceive.exe
  
! VC = "C:\Program Files\Microsoft Visual Studio\VC98"
  #VC="\Program Files\DevStudio\Vc"
! INCLUDE = -I.\ -I..\Tcl\include -I$(VC)\include
  
! LDIR = $(VC)\lib
  
! LIB = /NODEFAULTLIB:libc /NODEFAULTLIB:oldnames  /NODEFAULTLIB:kernel \
!     /NODEFAULTLIB:uuid \
!     $(LDIR)\libc.lib $(LDIR)\oldnames.lib $(LDIR)\kernel32.lib \
!     $(LDIR)\wsock32.lib $(LDIR)\winmm.lib $(LDIR)\advapi32.lib \
!     ..\bin\pthreadVC.lib 
  
! GLIB =  $(LIB) ..\bin\tcl84.lib ..\bin\tk84.lib
! CFLAGS = /nologo /W3 /DMSW /DNT /DPD /DPD_INTERNAL /DWIN32 /DWINDOWS /Ox \
! 	-DPA_LITTLE_ENDIAN -DUSEAPI_MMIO -DUSEAPI_PORTAUDIO -D__i386__
! LFLAGS = /nologo
  
! SYSSRC = s_audio_pa.c s_audio_pablio.c s_audio_paring.c \
!     s_audio_mmio.c s_midi_mmio.c
  
  SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
--- 1,90 ----
  # Makefile for PD on MSW
+ # 
+ # This should ideally be started from the compiler console so that it will have
+ # the compiler, include and lib paths defined by environment settings
+ #
+ # nmake -f makefile.nt
  
  all: pd gui ..\bin\pd.tk ..\bin\pdsend.exe ..\bin\pdreceive.exe
  
! #######################################################
! # define some directories where to find external stuff
! # these are ifdef'd so you can define them on the nmake command line
! 
! !ifndef VC
! VC = "E:\Programme\Microsoft Visual Studio 8\VC"
  #VC="\Program Files\DevStudio\Vc"
! !endif
  
! # PTHREADS says where the Pthreads project can be found
  
! !ifndef PTHREADS
! PTHREADS = ..\..\pthread
! !endif
  
! # Portmidi should work
  
! !ifndef PMDIR
! PMDIR = ..\portmidi
! !endif
! 
! 
! ASIODIR = g:\asiosdk2
! ASIOINC = -I$(ASIODIR)\common -I$(ASIODIR)\host -I$(ASIODIR)\host\pc
! 
! # Define the TCL version with TCLVER 
! # and the directory of your TCL installation with TCLDIR
! 
! !ifndef TCLVER
! TCLVER = 84
! !else
! WISHDEF = -DWISHAPP="\"wish$(TCLVER).exe\""
! !endif
! 
! !ifndef TCLDIR
! TCLDIR = C:\Tcl
! !ifndef TCLINC
! TCLINC = C:\Tcl\include
! !endif
! 
! !ifndef TCLLIB
! TCLLIB = ..\bin
! !endif
! !else
! TCLINC = $(TCLDIR)\include
! TCLLIB = $(TCLDIR)\lib
! !endif
! 
! ########################################################
! 
! INC = -I.\ -I$(TCLINC) -I$(PTHREADS) $(ASIOINC)
! !ifdef VC
! INC = $(INC) -I$(VC)\include -I"E:\Programme\Microsoft Platform SDK for Windows XP SP2"\include
! !endif
! 
! # the library directory might automatically be found
! #!ifdef LIB
! #LDIR = 
! #!else
! # the trailing slash is important!!
! #LDIR = $(VC)\lib\
! LDIR = "E:\Programme\Microsoft Platform SDK for Windows XP SP2"\Lib/
! #!endif
! 
! #LIBS = /NODEFAULTLIB:libc /NODEFAULTLIB:oldnames  /NODEFAULTLIB:kernel \
! #    /NODEFAULTLIB:uuid \
! #    $(LDIR)libcmt.lib $(LDIR)oldnames.lib $(LDIR)kernel32.lib \
! #    $(LDIR)wsock32.lib $(LDIR)winmm.lib $(PTHREADS)\pthreadVC.lib
! 
! LIBS = $(LDIR)\wsock32.lib $(LDIR)\winmm.lib $(PTHREADS)\pthreadVC.lib \
! 	$(LDIR)\ole32.lib $(LDIR)\user32.lib $(LDIR)\advapi32.lib 
! 
! GLIB =  $(LIBS) $(TCLLIB)\tcl$(TCLVER).lib $(TCLLIB)\tk$(TCLVER).lib
! CFLAGS = /nologo /W3 /DMSW /DNT /DPD /DPD_INTERNAL /DWIN32 /DWINDOWS \
! 	-DPA_LITTLE_ENDIAN -DUSEAPI_ASIO -DUSEAPI_MMIO -DUSEAPI_PORTAUDIO \
! 	 $(WISHDEF) /ZI /DDONTUSESIMD
! LFLAGS = /nologo /DEBUG /MAP /PROFILE
! 
! SYSSRC = s_audio_pa.c s_audio_mmio.c s_midi_pm.c 
  
  SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
***************
*** 36,66 ****
      x_arithmetic.c x_connective.c x_interface.c x_midi.c x_misc.c \
      x_time.c x_acoustics.c x_net.c x_qlist.c x_gui.c d_soundfile.c \
      $(SYSSRC)
  
! PADIR = ..\portaudio
  INCPA = -I$(PADIR) -I$(PADIR)\pa_common -I$(PADIR)\pablio -I..\lib\asio
  SRCPA = $(PADIR)/pa_common/pa_lib.c $(PADIR)/pa_common/pa_trace.c
  SRCASIO = $(PADIR)/pa_asio/pa_asio.cpp 
  
! ASIOLIB = $(LDIR)\user32.lib $(LDIR)\gdi32.lib $(LDIR)\winspool.lib $(LDIR)\comdlg32.lib \
! $(LDIR)\advapi32.lib $(LDIR)\shell32.lib $(LDIR)\ole32.lib $(LDIR)\oleaut32.lib $(LDIR)\uuid.lib \
! $(LDIR)\odbc32.lib $(LDIR)\odbccp32.lib ..\lib\asio\asiolib.lib
  
  
- PAOBJ = pa_lib.obj pa_trace.obj pa_asio.obj
  
  
! OBJC = $(SRC:.c=.obj) $(PAOBJ)
  
  GSRC =  t_main.c t_tkcmd.c
  
! GOBJ = $(GSRC:.c=.obj)
! .PHONY: pd gui
  
! ALLCF = $(CFLAGS)  $(INCLUDE) $(INCASIO) $(INCPA) $(INCPM) /D_WINDOWS /DPA_NO_DS
  
  .c.obj:
  	cl /c $(ALLCF) /Tc$*.c
  
  pd: ..\bin\pd.exe
  
--- 101,146 ----
      x_arithmetic.c x_connective.c x_interface.c x_midi.c x_misc.c \
      x_time.c x_acoustics.c x_net.c x_qlist.c x_gui.c d_soundfile.c \
+     m_simd.c m_simd_sse_vc.c m_simd_sse_gcc.c m_simd_ve_gcc.c \
      $(SYSSRC)
  
! PADIR = ..\portaudio_v18
  INCPA = -I$(PADIR) -I$(PADIR)\pa_common -I$(PADIR)\pablio -I..\lib\asio
  SRCPA = $(PADIR)/pa_common/pa_lib.c $(PADIR)/pa_common/pa_trace.c
  SRCASIO = $(PADIR)/pa_asio/pa_asio.cpp 
+ PAOBJ = pa_lib.obj pa_trace.obj pa_asio.obj pablio.obj pa_asio.obj \
+ 	ringbuffer.obj
  
! INCPM = -I$(PMDIR)\pm_common -I$(PMDIR)\pm_win -I$(PMDIR)\porttime
! SRCPM = \
!         $(PMDIR)/pm_common/portmidi.c     \
!         $(PMDIR)/pm_common/pmutil.c       \
!         $(PMDIR)/pm_win/pmwin.c           \
!         $(PMDIR)/pm_win/pmwinmm.c         \
!         $(PMDIR)/porttime/porttime.c         \
!         $(PMDIR)/porttime/ptwinmm.c         \
  
+ PMOBJ = portmidi.obj pmutil.obj pmwin.obj pmwinmm.obj porttime.obj ptwinmm.obj
  
  
+ OBJC = $(SRC:.c=.obj)  $(PMOBJ) $(PAOBJ)
  
! ASIOBJ = s_audio_asio.obj asio.obj asiolist.obj asiodrivers.obj
  
  GSRC =  t_main.c t_tkcmd.c
  
! GOBJ = $(GSRC:.c=.obj).PHONY: pd gui
  
! ALLCF = $(CFLAGS)  $(INC) $(INCPA)  $(INCPM) /D_WINDOWS
  
  .c.obj:
  	cl /c $(ALLCF) /Tc$*.c
  
+ ASIOBJ: 
+ 	cl /c $(ALLCF) $(ASIOINC) s_audio_asio.cpp
+ 	cl /c $(ALLCF) $(ASIOINC) $(ASIODIR)/common/asio.cpp 
+ 	cl /c $(ALLCF) $(ASIOINC) $(ASIODIR)/host/pc/asiolist.cpp 
+ 	cl /c $(ALLCF) $(ASIOINC) $(ASIODIR)/host/asiodrivers.cpp
+ 
+ 
  pd: ..\bin\pd.exe
  
***************
*** 69,77 ****
  ..\bin\pd.exe: s_entry.obj ..\bin\pd.lib
  	link $(LFLAGS) /out:..\bin\pd.exe /INCREMENTAL:NO s_entry.obj \
! 	    ..\bin\pd.lib $(LIB) $(ASIOLIB)
  
! ..\bin\pd.dll ..\bin\pd.lib: $(OBJC) $(OBJASIO)
  	link $(LFLAGS) /dll /export:sys_main /out:..\bin\pd.dll $(OBJC) \
! 	    $(OBJASIO) $(LIB) $(ASIOLIB)
  
  ..\bin\pdtcl.dll: t_tkcmd.obj
--- 149,157 ----
  ..\bin\pd.exe: s_entry.obj ..\bin\pd.lib
  	link $(LFLAGS) /out:..\bin\pd.exe /INCREMENTAL:NO s_entry.obj \
! 	    ..\bin\pd.lib $(LIBS)
  
! ..\bin\pd.dll ..\bin\pd.lib: $(OBJC) ASIOBJ
  	link $(LFLAGS) /dll /export:sys_main /out:..\bin\pd.dll $(OBJC) \
! 	     $(ASIOBJ) $(LIBS) /PDB:..\bin\pddll.pdb
  
  ..\bin\pdtcl.dll: t_tkcmd.obj
***************
*** 83,104 ****
  ..\bin\pdsend.exe: u_pdsend.obj
  	link $(LFLAGS) /out:..\bin\pdsend.exe /INCREMENTAL:NO u_pdsend.obj \
! 	    $(LIB)
  
  ..\bin\pdreceive.exe: u_pdreceive.obj
  	link $(LFLAGS) /out:..\bin\pdreceive.exe /INCREMENTAL:NO u_pdreceive.obj \
! 	    $(LIB)
  
  # explicit rules to compile portaudio sources:
  pa_lib.obj: $(PADIR)\pa_common\pa_lib.c
! 	cl /c $(ALLCF) $(PADIR)\pa_common\pa_lib.c
  pa_trace.obj: $(PADIR)\pa_common\pa_trace.c
! 	cl /c $(ALLCF) $(PADIR)\pa_common\pa_trace.c
! pablio_pd.obj: $(PADIR)\pablio\pablio_pd.c
! 	cl /c $(ALLCF) $(PADIR)\pablio\pablio_pd.c
! ringbuffer_pd.obj: $(PADIR)\pablio\ringbuffer_pd.c
! 	cl /c $(ALLCF) $(PADIR)\pablio\ringbuffer_pd.c
! 
  pa_asio.obj: $(PADIR)\pa_asio\pa_asio.cpp
! 	cl /c $(ALLCF) $(PADIR)\pa_asio\pa_asio.cpp
  
  # the following should also clean up "bin" but it doesn't because "bin" holds
--- 163,213 ----
  ..\bin\pdsend.exe: u_pdsend.obj
  	link $(LFLAGS) /out:..\bin\pdsend.exe /INCREMENTAL:NO u_pdsend.obj \
! 	    $(LIBS)
  
  ..\bin\pdreceive.exe: u_pdreceive.obj
  	link $(LFLAGS) /out:..\bin\pdreceive.exe /INCREMENTAL:NO u_pdreceive.obj \
! 	    $(LIBS)
  
  # explicit rules to compile portaudio sources:
  pa_lib.obj: $(PADIR)\pa_common\pa_lib.c
! 	cl /c $(ALLCF) $**
  pa_trace.obj: $(PADIR)\pa_common\pa_trace.c
! 	cl /c $(ALLCF) $**
! pa_stream.obj: $(PADIR)\pa_common\pa_stream.c
! 	cl /c $(ALLCF) $**
! pa_front.obj: $(PADIR)\pa_common\pa_front.c
! 	cl /c $(ALLCF) $**
! pa_allocation.obj: $(PADIR)\pa_common\pa_allocation.c
! 	cl /c $(ALLCF) $**
! pa_converters.obj: $(PADIR)\pa_common\pa_converters.c
! 	cl /c $(ALLCF) $**
! pa_cpuload.obj: $(PADIR)\pa_common\pa_cpuload.c
! 	cl /c $(ALLCF) $**
! pa_dither.obj: $(PADIR)\pa_common\pa_dither.c
! 	cl /c $(ALLCF) $**
! pa_process.obj: $(PADIR)\pa_common\pa_process.c
! 	cl /c $(ALLCF) $**
! pa_skeleton.obj: $(PADIR)\pa_common\pa_skeleton.c
! 	cl /c $(ALLCF) $**
! pa_winutil.obj: $(PADIR)\pa_win\pa_winutil.c
! 	cl /c $(ALLCF) $**
  pa_asio.obj: $(PADIR)\pa_asio\pa_asio.cpp
! 	cl /c $(ALLCF) $(ASIOINC) $**
! pablio.obj: $(PADIR)\pablio\pablio.c
! 	cl /c $(ALLCF) $**
! ringbuffer.obj: $(PADIR)\pablio\ringbuffer.c
! 	cl /c $(ALLCF) $**
! portmidi.obj: $(PMDIR)\pm_common\portmidi.c
! 	cl /c $(ALLCF) $**
! pmutil.obj: $(PMDIR)\pm_common\pmutil.c
! 	cl /c $(ALLCF) $**
! pmwin.obj: $(PMDIR)\pm_win\pmwin.c
! 	cl /c $(ALLCF) $**
! pmwinmm.obj: $(PMDIR)\pm_win\pmwinmm.c
! 	cl /c $(ALLCF) $**
! porttime.obj: $(PMDIR)\porttime\porttime.c
! 	cl /c $(ALLCF) $**
! ptwinmm.obj: $(PMDIR)\porttime\ptwinmm.c
! 	cl /c $(ALLCF) $**
  
  # the following should also clean up "bin" but it doesn't because "bin" holds

Index: makefile
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile,v
retrieving revision 1.6
retrieving revision 1.6.4.1
diff -C2 -d -r1.6 -r1.6.4.1
*** makefile	22 Feb 2004 16:00:02 -0000	1.6
--- makefile	5 Nov 2004 14:27:46 -0000	1.6.4.1
***************
*** 1,3 ****
! all:
! 	./configure
! 	make
--- 1,188 ----
! VPATH = ../obj:./
! OBJ_DIR = ../obj
! BIN_DIR = ../bin
! PDEXEC = $(BIN_DIR)/pd
! EXT= pd_linux
! GUINAME= pd-gui
! 
! CC = gcc
! 
! INSTALL_PREFIX = /usr/local
! GFLAGS = -DINSTALL_PREFIX=\"$(INSTALL_PREFIX)\"
! 
! MANDIR = ${prefix}/man
! 
! MORECFLAGS = -DDL_OPEN -DPA_USE_OSS -DPA_LITTLE_ENDIAN -DUNIX -DUNISTD    	 -DUSEAPI_OSS         -I../portaudio/pa_common -I../portaudio/pablio         -I../portaudio/portmidi-macosx 	-fno-strict-aliasing -DPA_USE_ALSA -DUSEAPI_ALSA -DUSEAPI_JACK -DGARRAY_THREAD_LOCK -DTHREADED_SF -D_GNU_SOURCE -DDEBUG
! 
! INCLUDE = -I.
! GINCLUDE = $(INCLUDE) 
! GLIB = -ltk8.4 -ltcl8.4  -lX11 -L/usr/X11R6/lib -lrt -ljack -ljack
! 
! LDFLAGS = -Wl,-export-dynamic -lasound -lrt -ljack
! LIB =   -ldl -lm -lpthread -lasound
! 
! OPT_CFLAGS = -O3 -funroll-loops -fomit-frame-pointer -mmmx -msse -mfpmath=sse
! WARN_CFLAGS = -Wall -W -Wstrict-prototypes \
!     -Wno-unused -Wno-parentheses -Wno-switch
! ARCH_CFLAGS = -DPD 
! 
! CFLAGS = -g -O2 $(ARCH_CFLAGS) $(WARN_CFLAGS) $(OPT_CFLAGS) $(MORECFLAGS)
! 
! # the sources
! 
! SYSSRC += s_midi_oss.c s_audio_oss.c s_audio_alsa.c s_audio_alsamm.c s_audio_jack.c
! 
! SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
!     g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c g_editor.c \
!     g_all_guis.c g_bang.c g_hdial.c g_hslider.c g_mycanvas.c g_numbox.c \
!     g_toggle.c g_vdial.c g_vslider.c g_vumeter.c \
!     m_pd.c m_class.c m_obj.c m_atom.c m_memory.c m_binbuf.c \
!     m_conf.c m_glob.c m_sched.c \
!     s_main.c s_inter.c s_file.c s_print.c \
!     s_loader.c s_path.c s_entry.c s_audio.c s_midi.c \
!     d_ugen.c d_ctl.c d_arithmetic.c d_osc.c d_filter.c d_dac.c d_misc.c \
!     d_math.c d_fft.c d_mayer_fft.c d_fftroutine.c d_array.c d_global.c \
!     d_delay.c d_resample.c \
!     x_arithmetic.c x_connective.c x_interface.c x_midi.c x_misc.c \
!     x_time.c x_acoustics.c x_net.c x_qlist.c x_gui.c d_soundfile.c \
!     $(SYSSRC) m_simd.c m_simd_sse_gcc.c
! 
! 
! OBJ = $(SRC:.c=.o) 
! 
! GSRC =  t_main.c t_tkcmd.c
! 
! GOBJ = $(GSRC:.c=.o)
! 
! #
! #  ------------------ targets ------------------------------------
! #
! 
! .PHONY: pd gui externs all
! 
! all: $(PDEXEC) $(BIN_DIR)/pd-watchdog $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend \
!     $(BIN_DIR)/pdreceive  $(BIN_DIR)/pd.tk externs
! 
! bin: $(PDEXEC) $(BIN_DIR)/pd-watchdog $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend \
!     $(BIN_DIR)/pdreceive  $(BIN_DIR)/pd.tk
! 
! $(OBJ) : %.o : %.c
! 	$(CC) $(CFLAGS) $(GFLAGS) $(INCLUDE) -c -o $(OBJ_DIR)/$*.o $*.c 
! 
! $(GOBJ) : %.o : %.c
! 	$(CC) $(CFLAGS) $(GFLAGS) $(GINCLUDE) -c -o $(OBJ_DIR)/$*.o $*.c 
! 
! pd: $(PDEXEC)
! 
! gui: $(BIN_DIR)/$(GUINAME)
! 
! pd-watchdog: $(BIN_DIR)/pd-watchdog
! 
! $(BIN_DIR)/pd-watchdog: s_watchdog.c
! 	$(CC) -O2 $(STRIPFLAG) -o $(BIN_DIR)/pd-watchdog s_watchdog.c
! 
! $(BIN_DIR)/pdsend: u_pdsend.c
! 	$(CC) $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdsend u_pdsend.c
! 
! $(BIN_DIR)/pdreceive: u_pdreceive.c
! 	$(CC) $(CFLAGS)  $(STRIPFLAG) -o $(BIN_DIR)/pdreceive u_pdreceive.c
! 
! $(PDEXEC): $(OBJ) 
! 	cd ../obj;  $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(OBJ) \
! 	$(LIB)
! 
! $(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC)
! 	cd ../obj; $(CC) $(INCLUDE) -o $(BIN_DIR)/$(GUINAME) $(GOBJ) \
! 	$(GLIB)
! 
! $(BIN_DIR)/pd.tk: u_main.tk
! 	echo set pd_nt 0 > $(BIN_DIR)/pd.tk
! 	grep -v "set pd_nt" < u_main.tk >> $(BIN_DIR)/pd.tk
! 
! #this is for Max OSX only...
! $(BIN_DIR)/pdtcl: $(GOBJ) $(GSRC)
! 	cd ../obj; libtool -dynamic -o $(BIN_DIR)/pdtcl $(GOBJ) \
! 	../../Frameworks/Tk.framework/Versions/Current/Tk \
! 	../../Frameworks/Tcl.framework/Versions/Current/Tcl \
! 	/usr/lib/libSystem.B.dylib
! 
! externs: 
! #	cd ../extra/bonk~;make 
! #	cd ../extra/choice;make 
! #	cd ../extra/expr~;make 
! #	cd ../extra/fiddle~;make 
! #	cd ../extra/loop~;make 
! #	cd ../extra/lrshift~;make 
! #	cd ../extra/pique;make 
! 
! INSTDIR = $(DESTDIR)/$(INSTALL_PREFIX)
! MANINSTDIR = $(DESTDIR)/$(INSTALL_PREFIX)/$(MANDIR)
! BINARYMODE=-m755
! 
! install:  all
! 	install -d $(INSTDIR)/lib/pd/bin
! 	install $(BIN_DIR)/$(GUINAME) $(INSTDIR)/lib/pd/bin/$(GUINAME)
! 	install $(BIN_DIR)/pd-watchdog $(INSTDIR)/lib/pd/bin/pd-watchdog
! 	install -m644 $(BIN_DIR)/pd.tk $(INSTDIR)/lib/pd/bin/pd.tk
! 	install -d $(INSTDIR)/bin
! 	install $(BINARYMODE) $(PDEXEC) $(INSTDIR)/bin/pd
! 	install -m755 $(BIN_DIR)/pdsend $(INSTDIR)/bin/pdsend
! 	install -m755 $(BIN_DIR)/pdreceive $(INSTDIR)/bin/pdreceive 
! 	cp -pr ../doc ../extra $(INSTDIR)/lib/pd/
! 	rm -f $(INSTDIR)/extra/*/*.o
! 	install -d $(INSTDIR)/include
! 	install -m644 m_pd.h $(INSTDIR)/include/m_pd.h
! 	install -d $(MANINSTDIR)/man1
! 	gzip < ../man/pd.1 >  $(MANINSTDIR)/man1/pd.1.gz
! 	chmod 644 $(MANINSTDIR)/man1/pd.1.gz
! 	gzip < ../man/pdsend.1 >  $(MANINSTDIR)/man1/pdsend.1.gz
! 	chmod 644 $(MANINSTDIR)/man1/pdsend.1.gz
! 	gzip < ../man/pdreceive.1 >  $(MANINSTDIR)/man1/pdreceive.1.gz
! 	chmod 644 $(MANINSTDIR)/man1/pdreceive.1.gz
! 
! local-clean:
! 	-rm -f ../obj/* $(BIN_DIR)/pd $(BIN_DIR)/$(GUINAME) $(BIN_DIR)/pdsend \
! 	    $(BIN_DIR)/pdreceive $(BIN_DIR)/pd-watchdog m_stamp.c
! 	-rm -f `find ../portaudio ../portaudio_v18 -name "*.o"` 
! 	-rm -f *~
! 	-(cd ../doc/6.externs; rm -f *.pd_linux)
! 	-rm -f makefile.dependencies
! 	touch makefile.dependencies
! 	chmod 666 makefile.dependencies
! 
! extra-clean:
! 	-rm -f `find ../extra/ -name "*.pd_*"`
! 	-rm -f tags
! 
! clean: extra-clean local-clean
! 
! distclean: clean
! 	rm -rf config.cache config.log config.status makefile tags \
! 	     autom4te-*.cache
! 	echo all: > makefile
! 	echo -e  "\t./configure" >> makefile
! 	echo -e "\tmake" >> makefile
! 
! tags: $(SRC) $(GSRC); ctags *.[ch]
! 
! depend: 
! 	$(CC) $(INCLUDE) $(CFLAGS) -M $(SRC) > makefile.dependencies
! 
! uninstall:
! 	rm -f -r $(INSTDIR)/lib/pd
! 	rm -f $(INSTDIR)/bin/pd
! 	rm -f $(INSTDIR)/bin/pdsend
! 	rm -f $(INSTDIR)/bin/pdreceive
! 	rm -f $(INSTDIR)/include/m_pd.h
! 	rm -f $(MANINSTDIR)/man1/pd.1.gz
! 	rm -f $(MANINSTDIR)/man1/pdsend.1.gz
! 	rm -f $(MANINSTDIR)/man1/pdreceive.1.gz
! 
! include makefile.dependencies
! 
! 
! 
! 
! 
! 
! 

Index: notes.txt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/notes.txt,v
retrieving revision 1.6
retrieving revision 1.6.4.1
diff -C2 -d -r1.6 -r1.6.4.1
*** notes.txt	6 Sep 2004 22:37:26 -0000	1.6
--- notes.txt	5 Nov 2004 14:27:46 -0000	1.6.4.1
***************
*** 29,32 ****
--- 29,33 ----
  sprout inlets/outlets on objects whose creation failed.
  uploaded to CVS
+ bug fix: click on minaturized subpatch fails to "vis" it
  
  doc:
***************
*** 36,40 ****
  
  problems:
- click on minaturized subpatch fails to "vis" it
  startup flags need to handle spaces, duh.
  test MIDI I/O on all platforms, inc. sysex...
--- 37,40 ----

Index: g_text.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_text.c,v
retrieving revision 1.5
retrieving revision 1.5.4.1
diff -C2 -d -r1.5 -r1.5.4.1
*** g_text.c	6 Sep 2004 22:37:26 -0000	1.5
--- g_text.c	5 Nov 2004 14:27:46 -0000	1.5.4.1
***************
*** 110,114 ****
      if (!x)
      {
-             
              /* LATER make the color reflect this */
          x = (t_text *)pd_new(text_class);
--- 110,113 ----
***************
*** 1172,1177 ****
                  glist_getcanvas(glist), tag,
                      x1, y1,  x2, y1,  x2, y2,  x1, y2,  x1, y1);
!     	    sys_vgui(".x%lx.c itemconfigure -dash %s\n",
! 	    	glist_getcanvas(glist), pattern);
  	}
      }
--- 1171,1176 ----
                  glist_getcanvas(glist), tag,
                      x1, y1,  x2, y1,  x2, y2,  x1, y2,  x1, y1);
!     	    sys_vgui(".x%lx.c itemconfigure %sR -dash %s\n",
! 	    	glist_getcanvas(glist), tag, pattern);
  	}
      }

Index: s_main.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_main.c,v
retrieving revision 1.7
retrieving revision 1.7.4.1
diff -C2 -d -r1.7 -r1.7.4.1
*** s_main.c	6 Sep 2004 22:37:26 -0000	1.7
--- s_main.c	5 Nov 2004 14:27:47 -0000	1.7.4.1
***************
*** 8,12 ****
   */
  
! char pd_version[] = "Pd version 0.38 TEST 6\n";
  char pd_compiletime[] = __TIME__;
  char pd_compiledate[] = __DATE__;
--- 8,12 ----
   */
  
! char pd_version[] = "Pd version 0.38 TEST7 devel\n";
  char pd_compiletime[] = __TIME__;
  char pd_compiledate[] = __DATE__;
***************
*** 32,35 ****
--- 32,40 ----
  #endif
  
+ #ifdef DAZ
+ #define _MM_DENORM_ZERO_ON    0x0040
+ #include <xmmintrin.h>
+ #endif
+ 
  void pd_init(void);
  int sys_argparse(int argc, char **argv);
***************
*** 41,44 ****
--- 46,53 ----
  void alsa_adddev(char *name);
  
+ #ifdef THREADED_SF
+ void sys_start_sfthread(void);
+ #endif /* THREDED_SF */
+ 
  int sys_debuglevel;
  int sys_verbose;
***************
*** 66,69 ****
--- 75,79 ----
  int sys_midioutdevlist[MAXMIDIOUTDEV] = {1};
  
+ char sys_font[] = "courier"; /* tb: font name */
  static int sys_main_srate;
  static int sys_main_advance;
***************
*** 280,283 ****
--- 290,307 ----
      if (sys_startgui(sys_guidir->s_name))       /* start the gui */
          return(1);
+ 	
+ 	/* tb: { *
+ 	 * start the soundfiler helper thread */
+ #ifdef THREADED_SF
+     sys_start_sfthread();     
+ #endif /* THREDED_SF */
+ 	
+     /* try to set ftz and daz */
+ #ifdef DAZ
+     _mm_setcsr(_MM_FLUSH_ZERO_ON | _MM_MASK_UNDERFLOW | _mm_getcsr());
+     _mm_setcsr(_MM_DENORM_ZERO_ON | _mm_getcsr());
+ #endif /* DAZ */
+ 	/* } tb */
+ 
      /* jsarlo { */
      if (sys_externalschedlib)
***************
*** 347,350 ****
--- 371,378 ----
  #endif
  
+ #ifdef USEAPI_ASIO
+ 	"-asio_native     -- use native ASIO API\n",
+ #endif
+ 
  #ifdef USEAPI_PORTAUDIO
  #ifdef MSW
***************
*** 377,380 ****
--- 405,409 ----
  "-lib <file>      -- load object library(s)\n",
  "-font <n>        -- specify default font size in points\n",
+ "-typeface <name> -- specify default font (default: courier)\n",
  "-verbose         -- extra printout on startup and when searching for files\n",
  "-version         -- don't run Pd; just print out which version it is \n",
***************
*** 646,649 ****
--- 675,686 ----
          }
  #endif
+ #ifdef USEAPI_ASIO
+     	else if (!strcmp(*argv, "-asio_native"))
+     	{
+     	    sys_set_audio_api(API_ASIO);
+ 			sys_mmio = 0;
+     	    argc--; argv++;
+     	}
+ #endif
  #ifdef USEAPI_MMIO
          else if (!strcmp(*argv, "-mmio"))
***************
*** 731,734 ****
--- 768,779 ----
              argv += 2;
          }
+ 		/* tb: font name { */
+     	else if (!strcmp(*argv, "-typeface") && argc > 1)
+     	{
+ 			strcpy(sys_font,*(argv+1));
+ 			argc -= 2;
+ 			argv += 2;
+ 		}
+ 		/* } tb */
          else if (!strcmp(*argv, "-verbose"))
          {

Index: g_io.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_io.c,v
retrieving revision 1.3
retrieving revision 1.3.4.1
diff -C2 -d -r1.3 -r1.3.4.1
*** g_io.c	6 Sep 2004 20:20:34 -0000	1.3
--- g_io.c	5 Nov 2004 14:27:46 -0000	1.3.4.1
***************
*** 24,31 ****
--- 24,33 ----
  
  #include "m_pd.h"
+ #include "m_simd.h"
  #include "g_canvas.h"
  #include <string.h>
  void signal_setborrowed(t_signal *sig, t_signal *sig2);
  void signal_makereusable(t_signal *sig);
+ void inlet_sethelp(t_inlet* i,t_symbol* s);
  
  /* ------------------------- vinlet -------------------------- */
***************
*** 54,58 ****
      t_vinlet *x = (t_vinlet *)pd_new(vinlet_class);
      x->x_canvas = canvas_getcurrent();
!     x->x_inlet = canvas_addinlet(x->x_canvas, &x->x_obj.ob_pd, 0);
      x->x_bufsize = 0;
      x->x_buf = 0;
--- 56,60 ----
      t_vinlet *x = (t_vinlet *)pd_new(vinlet_class);
      x->x_canvas = canvas_getcurrent();
!     x->x_inlet = canvas_addinlet(x->x_canvas, &x->x_obj.ob_pd, 0, s);
      x->x_bufsize = 0;
      x->x_buf = 0;
***************
*** 128,131 ****
--- 130,163 ----
  }
  
+ /* tb: vectorized */
+ t_int *vinlet_perf8(t_int *w)
+ {
+     t_vinlet *x = (t_vinlet *)(w[1]);
+     t_float *out = (t_float *)(w[2]);
+     int n = (int)(w[3]);
+     t_float *in = x->x_read;
+ 
+     for (; n; n -= 8, in += 8, out += 8)
+     {
+ 		out[0] = in[0]; out[1] = in[1]; out[2] = in[2]; out[3] = in[3]; 
+ 		out[4] = in[4]; out[5] = in[5]; out[6] = in[6]; out[7] = in[7]; 
+     }
+ 
+     if (in == x->x_endbuf) in = x->x_buf;
+     x->x_read = in;
+     return (w+4);
+ }
+ 
+ /* T.Grill: SIMD version */
+ t_int *vinlet_perfsimd(t_int *w)
+ {
+     t_vinlet *x = (t_vinlet *)(w[1]);
+     t_float *in = x->x_read;
+     copyvec_simd((t_float *)w[2],in,w[3]);
+     if (in == x->x_endbuf) in = x->x_buf;
+     x->x_read = in;
+     return (w+4);
+ }
+ 
  static void vinlet_dsp(t_vinlet *x, t_signal **sp)
  {
***************
*** 141,145 ****
      else
      {
!         dsp_add(vinlet_perform, 3, x, outsig->s_vec, outsig->s_n);
          x->x_read = x->x_buf;
      }
--- 173,184 ----
      else
      {
!         const int n = outsig->s_n;
! 	    if(n&7)
! 	        dsp_add(vinlet_perform, 3, x, outsig->s_vec,n);
! 	    else if(SIMD_CHECK1(n,outsig->s_vec))
!             /* if the outsig->s_vec is aligned the x->x_read will also be... */
! 	        dsp_add(vinlet_perfsimd, 3, x, outsig->s_vec,n);
! 	    else
! 	        dsp_add(vinlet_perf8, 3, x, outsig->s_vec,n);
          x->x_read = x->x_buf;
      }
***************
*** 212,217 ****
          {
              t_float *buf = x->x_buf;
!             t_freebytes(buf, oldbufsize * sizeof(*buf));
!             buf = (t_float *)t_getbytes(bufsize * sizeof(*buf));
              memset((char *)buf, 0, bufsize * sizeof(*buf));
              x->x_bufsize = bufsize;
--- 251,256 ----
          {
              t_float *buf = x->x_buf;
!     	    buf = (t_float *)resizealignedbytes(buf,oldbufsize * sizeof(*buf),
! 												bufsize * sizeof(*buf));
              memset((char *)buf, 0, bufsize * sizeof(*buf));
              x->x_bufsize = bufsize;
***************
*** 251,261 ****
  }
  
- //static void *vinlet_newsig(void)
  static void *vinlet_newsig(t_symbol *s)
  {
      t_vinlet *x = (t_vinlet *)pd_new(vinlet_class);
      x->x_canvas = canvas_getcurrent();
!     x->x_inlet = canvas_addinlet(x->x_canvas, &x->x_obj.ob_pd, &s_signal);
!     x->x_endbuf = x->x_buf = (t_float *)getbytes(0);
      x->x_bufsize = 0;
      x->x_directsignal = 0;
--- 290,299 ----
  }
  
  static void *vinlet_newsig(t_symbol *s)
  {
      t_vinlet *x = (t_vinlet *)pd_new(vinlet_class);
      x->x_canvas = canvas_getcurrent();
!     x->x_inlet = canvas_addinlet(x->x_canvas, &x->x_obj.ob_pd, &s_signal,s);
!     x->x_endbuf = x->x_buf = (t_float *)getalignedbytes(0);
      x->x_bufsize = 0;
      x->x_directsignal = 0;
***************
*** 388,398 ****
      if (tot < 5) post("-buf %lx endbuf %lx", x->x_buf, x->x_endbuf);
  #endif
      while (n--)
      {
          *out++ += *in++;
!         if (out == x->x_endbuf) out = x->x_buf;
      }
      outwas += x->x_hop;
!     if (outwas >= x->x_endbuf) outwas = x->x_buf;
      x->x_write = outwas;
      return (w+4);
--- 426,437 ----
      if (tot < 5) post("-buf %lx endbuf %lx", x->x_buf, x->x_endbuf);
  #endif
+     t_float *end = x->x_endbuf;
      while (n--)
      {
          *out++ += *in++;
!     	if (out == end) out = x->x_buf;
      }
      outwas += x->x_hop;
!     if (outwas >= end) outwas = x->x_buf;
      x->x_write = outwas;
      return (w+4);
***************
*** 422,426 ****
  {
      t_voutlet *x = (t_voutlet *)(w[1]);
-     //    t_float *dummy = (t_float *)(w[2]);
      int n = (int)(w[2]);
      t_float *in  = x->x_empty;
--- 461,464 ----
***************
*** 506,515 ****
              re_parentvecsize = 1;
          }
-         //      bigperiod = (downsample * myvecsize)/(upsample * parentvecsize); /* IOhannes */
          bigperiod = myvecsize/re_parentvecsize; /* IOhannes */
          if (!bigperiod) bigperiod = 1;
          epilogphase = phase & (bigperiod - 1);
          blockphase = (phase + period - 1) & (bigperiod - 1) & (- period);
-         //      bufsize = parentvecsize * upsample; /* IOhannes */
          bufsize = re_parentvecsize; /* IOhannes */
          if (bufsize < myvecsize) bufsize = myvecsize;
--- 544,551 ----
***************
*** 517,522 ****
          {
              t_float *buf = x->x_buf;
!             t_freebytes(buf, oldbufsize * sizeof(*buf));
!             buf = (t_float *)t_getbytes(bufsize * sizeof(*buf));
              memset((char *)buf, 0, bufsize * sizeof(*buf));
              x->x_bufsize = bufsize;
--- 553,557 ----
          {
              t_float *buf = x->x_buf;
!     	    buf = (t_float *)resizealignedbytes(buf,oldbufsize * sizeof(*buf),bufsize * sizeof(*buf));
              memset((char *)buf, 0, bufsize * sizeof(*buf));
              x->x_bufsize = bufsize;
***************
*** 569,573 ****
          &x->x_obj.ob_pd, &s_signal);
      inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
!     x->x_endbuf = x->x_buf = (t_float *)getbytes(0);
      x->x_bufsize = 0;
  
--- 604,608 ----
          &x->x_obj.ob_pd, &s_signal);
      inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_signal, &s_signal);
!     x->x_endbuf = x->x_buf = (t_float *)getalignedbytes(0);
      x->x_bufsize = 0;
  

Index: s_file.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_file.c,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -C2 -d -r1.2 -r1.2.4.1
*** s_file.c	6 Sep 2004 20:20:35 -0000	1.2
--- s_file.c	5 Nov 2004 14:27:47 -0000	1.2.4.1
***************
*** 85,91 ****
  static int sys_getpreference(const char *key, char *value, int size)
  {
      if (!sys_prefbuf)
          return (0);
-     char searchfor[80], *where, *whereend;
      sprintf(searchfor, "\n%s:", key);
      where = strstr(sys_prefbuf, searchfor);
--- 85,91 ----
  static int sys_getpreference(const char *key, char *value, int size)
  {
+     char searchfor[80], *where, *whereend;
      if (!sys_prefbuf)
          return (0);
      sprintf(searchfor, "\n%s:", key);
      where = strstr(sys_prefbuf, searchfor);
***************
*** 158,162 ****
  static int sys_getpreference(const char *key, char *value, int size)
  {
!     HKEY *hkey;
      DWORD bigsize = size;
      char *val2 = value;
--- 158,162 ----
  static int sys_getpreference(const char *key, char *value, int size)
  {
!     HKEY **hkey;
      DWORD bigsize = size;
      char *val2 = value;
***************
*** 193,197 ****
  static void sys_putpreference(const char *key, const char *value)
  {
!     HKEY *hkey;
      LONG err = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
          "Software\\Pd", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE,
--- 193,197 ----
  static void sys_putpreference(const char *key, const char *value)
  {
!     HKEY **hkey;
      LONG err = RegCreateKeyEx(HKEY_LOCAL_MACHINE,
          "Software\\Pd", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_SET_VALUE,

Index: s_audio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio.c,v
retrieving revision 1.5
retrieving revision 1.5.4.1
diff -C2 -d -r1.5 -r1.5.4.1
*** s_audio.c	6 Sep 2004 20:20:35 -0000	1.5
--- s_audio.c	5 Nov 2004 14:27:46 -0000	1.5.4.1
***************
*** 137,147 ****
  
      if (sys_soundin)
!         free(sys_soundin);
!     sys_soundin = (t_float *)malloc(inbytes);
      memset(sys_soundin, 0, inbytes);
  
      if (sys_soundout)
!         free(sys_soundout);
!     sys_soundout = (t_float *)malloc(outbytes);
      memset(sys_soundout, 0, outbytes);
  
--- 137,147 ----
  
      if (sys_soundin)
!     	freealignedbytes(sys_soundin,inbytes);
!     sys_soundin = (t_float *)getalignedbytes(inbytes);
      memset(sys_soundin, 0, inbytes);
  
      if (sys_soundout)
!     	freealignedbytes(sys_soundout,outbytes);
!     sys_soundout = (t_float *)getalignedbytes(outbytes);
      memset(sys_soundout, 0, outbytes);
  
***************
*** 342,345 ****
--- 342,351 ----
          else
  #endif
+ #ifdef USEAPI_ASIO
+ 		if (sys_audioapi == API_ASIO)
+ 			asio_open_audio(naudioindev, audioindev, nchindev, chindev,
+ 							naudiooutdev, audiooutdev, nchoutdev, choutdev, rate);
+ 		else
+ #endif
              post("unknown audio API specified");
      }
***************
*** 396,400 ****
      else
  #endif
!         post("sys_close_audio: unknown API %d", sys_audioapi);
      sys_inchannels = sys_outchannels = 0;
  }
--- 402,411 ----
      else
  #endif
! #ifdef USEAPI_ASIO
! 	if (sys_audioapi == API_ASIO)
! 		asio_close_audio();
! 	else
! #endif
!        post("sys_close_audio: unknown API %d", sys_audioapi);
      sys_inchannels = sys_outchannels = 0;
  }
***************
*** 469,472 ****
--- 480,488 ----
      else
  #endif
+ #ifdef USEAPI_ASIO
+     if (sys_audioapi == API_ASIO)
+     	return (asio_send_dacs());
+     else
+ #endif
      post("unknown API");    
      return (0);
***************
*** 564,567 ****
--- 580,591 ----
      else
  #endif
+ #ifdef USEAPI_ASIO
+     if (sys_audioapi == API_ASIO)
+     {
+     	asio_getdevs(indevlist, nindevs, outdevlist, noutdevs, canmulti,
+ 	    maxndev, devdescsize);
+     }
+     else
+ #endif
      {
              /* this shouldn't happen once all the above get filled in. */
***************
*** 688,692 ****
          rate, advance, canmulti, (flongform != 0));
      gfxstub_deleteforkey(0);
!     gfxstub_new(&glob_pdobject, glob_audio_properties, buf);
  }
  
--- 712,716 ----
          rate, advance, canmulti, (flongform != 0));
      gfxstub_deleteforkey(0);
!     gfxstub_new(&glob_pdobject, (void *)glob_audio_properties, buf);
  }
  
***************
*** 853,856 ****
--- 877,883 ----
      sprintf(buf + strlen(buf), "{OSS %d} ", API_OSS); n++;
  #endif
+ #ifdef USEAPI_ASIO
+     sprintf(buf + strlen(buf), "{ASIO %d} ", API_ASIO); n++;
+ #endif
  #ifdef USEAPI_MMIO
      sprintf(buf + strlen(buf), "{\"standard (MMIO)\" %d} ", API_MMIO); n++;


Index: g_graph.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_graph.c,v
retrieving revision 1.3
retrieving revision 1.3.4.1
diff -C2 -d -r1.3 -r1.3.4.1
*** g_graph.c	6 Sep 2004 20:20:33 -0000	1.3
--- g_graph.c	5 Nov 2004 14:27:45 -0000	1.3.4.1
***************
*** 259,265 ****
  
  
! t_inlet *canvas_addinlet(t_canvas *x, t_pd *who, t_symbol *s)
  {
      t_inlet *ip = inlet_new(&x->gl_obj, who, s, 0);
      if (!x->gl_loading && x->gl_owner && glist_isvisible(x->gl_owner))
      {
--- 259,266 ----
  
  
! t_inlet *canvas_addinlet(t_canvas *x, t_pd *who, t_symbol *s, t_symbol* h)
  {
      t_inlet *ip = inlet_new(&x->gl_obj, who, s, 0);
+     inlet_settip(ip,h);
      if (!x->gl_loading && x->gl_owner && glist_isvisible(x->gl_owner))
      {

Index: g_canvas.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_canvas.h,v
retrieving revision 1.3
retrieving revision 1.3.4.1
diff -C2 -d -r1.3 -r1.3.4.1
*** g_canvas.h	6 Sep 2004 20:20:33 -0000	1.3
--- g_canvas.h	5 Nov 2004 14:27:45 -0000	1.3.4.1
***************
*** 37,44 ****
--- 37,50 ----
  in future releases.  The public (stable) API is in m_pd.h. */  
  
+ #ifndef __G_CANVAS_H
+ 
  #if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus)
  extern "C" {
  #endif
  
+ #ifdef GARRAY_THREAD_LOCK 
+ #include <pthread.h> /* TB: for t_garray */
+ #endif
+ 
  /* --------------------- geometry ---------------------------- */
  #define IOWIDTH 7       /* width of an inlet/outlet in pixels */
***************
*** 219,222 ****
--- 225,247 ----
  };
  
+ struct _garray
+ {
+     t_gobj x_gobj;
+     t_glist *x_glist;
+     t_array x_array;	    /* actual array; note only 4 fields used as below */
+     t_symbol *x_name;
+     t_symbol *x_realname;   /* name with "$" expanded */
+     t_float x_firstx;	    /* X value of first item */
+     t_float x_xinc; 	    /* X increment */
+     char x_usedindsp;	    /* true if some DSP routine is using this */
+     char x_saveit;   	    /* true if we should save this with parent */
+     char x_drawasrects;     /* draw as rectangles, not a polygon */
+     double x_lastupdate;    /* T.Grill - clock_getlogicaltime() of last array update */
+ #ifdef GARRAY_THREAD_LOCK
+     pthread_mutex_t * x_mutex; /* TB: mutex */
+ #endif
+ };
+ 
+ 
      /* structure for traversing all the connections in a glist */
  typedef struct _linetraverser
***************
*** 447,451 ****
  EXTERN void canvas_redraw(t_canvas *x);
  
! EXTERN t_inlet *canvas_addinlet(t_canvas *x, t_pd *who, t_symbol *sym);
  EXTERN void canvas_rminlet(t_canvas *x, t_inlet *ip);
  EXTERN t_outlet *canvas_addoutlet(t_canvas *x, t_pd *who, t_symbol *sym);
--- 472,477 ----
  EXTERN void canvas_redraw(t_canvas *x);
  
! EXTERN t_inlet *canvas_addinlet(t_canvas *x, t_pd *who, t_symbol *sym,
! 				t_symbol* h);
  EXTERN void canvas_rminlet(t_canvas *x, t_inlet *ip);
  EXTERN t_outlet *canvas_addoutlet(t_canvas *x, t_pd *who, t_symbol *sym);
***************
*** 603,604 ****
--- 629,636 ----
  }
  #endif
+ 
+ #else
+ #define __G_CANVAS_H
+ 
+ #endif
+ 

Index: g_canvas.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_canvas.c,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -C2 -d -r1.4 -r1.4.4.1
*** g_canvas.c	6 Sep 2004 20:20:33 -0000	1.4
--- g_canvas.c	5 Nov 2004 14:27:45 -0000	1.4.4.1
***************
*** 724,729 ****
      if (flag)
      {
              /* test if we're already visible and toplevel */
!         if (glist_isvisible(x) && !x->gl_isgraph)
          {           /* just put us in front */
  #ifdef MSW
--- 724,732 ----
      if (flag)
      {
+     	/* post("havewindow %d, isgraph %d, isvisible %d  editor %d",
+ 	    x->gl_havewindow, x->gl_isgraph, glist_isvisible(x),
+ 	    	(x->gl_editor != 0)); */
              /* test if we're already visible and toplevel */
!         if (x->gl_editor)
          {           /* just put us in front */
  #ifdef MSW
***************
*** 736,740 ****
  #endif
          }
!         else
          {
              canvas_create_editor(x, 1);
--- 739,743 ----
  #endif
          }
! 	else
          {
              canvas_create_editor(x, 1);
***************
*** 1115,1118 ****
--- 1118,1129 ----
      if (ac && av->a_type == A_SYMBOL)
          canvas_rename(x, av->a_w.w_symbol, 0);
+     else if (ac && av->a_type == A_DOLLSYM)
+     {
+         t_canvasenvironment *e = canvas_getenv(x);
+ 	canvas_setcurrent(x);
+         canvas_rename(x, binbuf_realizedollsym(av->a_w.w_symbol,
+             e->ce_argc, e->ce_argv, 1), 0); 
+ 	canvas_unsetcurrent(x);
+     }
      else canvas_rename(x, gensym("Pd"), 0);
  }



Index: s_audio_alsa.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_alsa.c,v
retrieving revision 1.5
retrieving revision 1.5.4.1
diff -C2 -d -r1.5 -r1.5.4.1
*** s_audio_alsa.c	6 Sep 2004 20:20:35 -0000	1.5
--- s_audio_alsa.c	5 Nov 2004 14:27:47 -0000	1.5.4.1
***************
*** 135,139 ****
  
          /* set the sampling rate */
!     err = snd_pcm_hw_params_set_rate_min(dev->a_handle, hw_params, rate, 0);
      check_error(err, "snd_pcm_hw_params_set_rate_min (input)");
  #if 0
--- 135,140 ----
  
          /* set the sampling rate */
!     err = snd_pcm_hw_params_set_rate_min(dev->a_handle, hw_params, 
!     	(unsigned int *)rate, 0);
      check_error(err, "snd_pcm_hw_params_set_rate_min (input)");
  #if 0
***************
*** 349,354 ****
  }
  
- // #define DEBUG_ALSA_XFER
- 
  int alsa_send_dacs(void)
  {
--- 350,353 ----

Index: s_loader.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_loader.c,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -C2 -d -r1.4 -r1.4.4.1
*** s_loader.c	6 Sep 2004 20:20:35 -0000	1.4
--- s_loader.c	5 Nov 2004 14:27:47 -0000	1.4.4.1
***************
*** 41,45 ****
      ".pd_darwin";
  #endif
! #ifdef MSW
      ".dll";
  #endif
--- 41,45 ----
      ".pd_darwin";
  #endif
! #if defined(MSW) || defined(__CYGWIN__)
      ".dll";
  #endif

Index: s_midi.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_midi.c,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -C2 -d -r1.4 -r1.4.4.1
*** s_midi.c	6 Sep 2004 20:20:36 -0000	1.4
--- s_midi.c	5 Nov 2004 14:27:47 -0000	1.4.4.1
***************
*** 449,455 ****
--- 449,457 ----
  /******************** dialog window and device listing ********************/
  
+ #ifndef USEAPI_ALSA
  #ifdef USEAPI_OSS
  void midi_oss_init( void);
  #endif
+ #endif
  
      /* last requested parameters */
***************
*** 487,493 ****
--- 489,497 ----
      int nmidioutdev, int *midioutdev, int enable)
  {
+ #ifndef USEAPI_ALSA
  #ifdef USEAPI_OSS
      midi_oss_init();
  #endif
+ #endif
      if (enable)
          sys_do_open_midi(nmidiindev, midiindev, nmidioutdev, midioutdev);
***************
*** 594,601 ****
      midioutdev4 = (noutdev > 3 && midioutdev[3]>=0 ? midioutdev[3]+1 : 0);  
  
      sprintf(buf,
  "pdtk_midi_dialog %%s \
  %s %d %d %d %d %s %d %d %d %d \
! %d\n",
          indevliststring,
          midiindev1, midiindev2, midiindev3, midiindev4, 
--- 598,617 ----
      midioutdev4 = (noutdev > 3 && midioutdev[3]>=0 ? midioutdev[3]+1 : 0);  
  
+ #ifndef USEAPI_ALSA
+ 	sprintf(buf,
+ 			"pdtk_midi_dialog %%s \
+  %s %d %d %d %d %s %d %d %d %d \
+  %d 0\n",
+ 			indevliststring,
+ 			midiindev1, midiindev2, midiindev3, midiindev4, 
+ 			outdevliststring,
+ 			midioutdev1, midioutdev2, midioutdev3, midioutdev4,
+ 			(flongform != 0));
+ #endif
+ #ifdef USEAPI_ALSA
      sprintf(buf,
  "pdtk_midi_dialog %%s \
  %s %d %d %d %d %s %d %d %d %d \
! %d 1\n",
          indevliststring,
          midiindev1, midiindev2, midiindev3, midiindev4, 
***************
*** 603,608 ****
          midioutdev1, midioutdev2, midioutdev3, midioutdev4,
          (flongform != 0));
      gfxstub_deleteforkey(0);
!     gfxstub_new(&glob_pdobject, glob_midi_properties, buf);
  }
  
--- 619,625 ----
          midioutdev1, midioutdev2, midioutdev3, midioutdev4,
          (flongform != 0));
+ #endif
      gfxstub_deleteforkey(0);
!     gfxstub_new(&glob_pdobject, (void *)glob_midi_properties, buf);
  }
  
***************
*** 614,617 ****
--- 631,635 ----
      int i, nindev, noutdev;
      int newmidiindev[4], newmidioutdev[4];
+     int alsadevin, alsadevout;
  
      for (i = 0; i < 4; i++)
***************
*** 637,642 ****
--- 655,668 ----
          }
      }
+     alsadevin = atom_getintarg(8, argc, argv);
+     alsadevout = atom_getintarg(9, argc, argv);
+ 	
  
      sys_close_midi();
+ #ifndef USEAPI_ALSA
      sys_open_midi(nindev, newmidiindev, noutdev, newmidioutdev, 1);
+ #endif
+ #ifdef USEAPI_ALSA
+     sys_open_midi(alsadevin, newmidiindev, alsadevout, newmidioutdev, 1);
+ #endif
  }

Index: m_obj.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_obj.c,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -C2 -d -r1.2 -r1.2.4.1
*** m_obj.c	6 Sep 2004 20:20:35 -0000	1.2
--- m_obj.c	5 Nov 2004 14:27:46 -0000	1.2.4.1
***************
*** 23,26 ****
--- 23,28 ----
  };
  
+ int sys_tooltips = 1;
+ 
  struct _inlet
  {
***************
*** 31,34 ****
--- 33,37 ----
      t_symbol *i_symfrom;
      union inletunion i_un;
+     t_symbol* i_tip;
  };
  
***************
*** 58,61 ****
--- 61,65 ----
      x->i_symfrom = s1;
      x->i_next = 0;
+     x->i_tip = gensym("?");
      if (y = owner->ob_inlet)
      {
***************
*** 73,76 ****
--- 77,103 ----
  }
  
+ void inlet_settip(t_inlet* i,t_symbol* s)
+ {
+   i->i_tip = s;
+ }
+ 
+ void glob_tooltips(t_pd *dummy, t_float f)
+ {
+   sys_tooltips = f;
+ }
+ 
+ char* inlet_tip(t_inlet* i,int num) 
+ {
+   if (num < 0) return "???";
+   while (num-- && i)
+     i = i->i_next;
+ 
+   if (i)
+     if (i->i_tip) {
+       return i->i_tip->s_name;
+     }
+   return "?";
+ }
+ 
      /* LATER figure out how to make these efficient: */
  static void inlet_bang(t_inlet *x)

Index: s_audio_alsamm.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_alsamm.c,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -C2 -d -r1.1 -r1.1.4.1
*** s_audio_alsamm.c	6 Sep 2004 20:20:35 -0000	1.1
--- s_audio_alsamm.c	5 Nov 2004 14:27:47 -0000	1.1.4.1
***************
*** 489,497 ****
      int maxchs,minchs,channels = *chs;
  
!     if((err = snd_pcm_hw_params_get_channels_max(params,&maxchs)) < 0){
        check_error(err,"Getting channels_max not available");
        return err;
      }
!     if((err = snd_pcm_hw_params_get_channels_min(params,&minchs)) < 0){
        check_error(err,"Getting channels_min not available");
        return err;
--- 489,499 ----
      int maxchs,minchs,channels = *chs;
  
!     if((err = snd_pcm_hw_params_get_channels_max(params,
!     	(unsigned int *)&maxchs)) < 0){
        check_error(err,"Getting channels_max not available");
        return err;
      }
!     if((err = snd_pcm_hw_params_get_channels_min(params,
!     	(unsigned int *)&minchs)) < 0){
        check_error(err,"Getting channels_min not available");
        return err;
***************
*** 524,528 ****
  
    /* testing for channels */
!   if((err = snd_pcm_hw_params_get_channels(params,chs)) < 0)
      check_error(err,"Get channels not available");
  #ifdef ALSAMM_DEBUG
--- 526,530 ----
  
    /* testing for channels */
!   if((err = snd_pcm_hw_params_get_channels(params,(unsigned int *)chs)) < 0)
      check_error(err,"Get channels not available");
  #ifdef ALSAMM_DEBUG
***************
*** 543,547 ****
      alsamm_buffer_size = alsamm_buffersize;
  
!     err = snd_pcm_hw_params_set_buffer_size_near(handle, params, &alsamm_buffer_size);
      if (err < 0) {
        check_error(err,"Unable to set max buffer size");
--- 545,550 ----
      alsamm_buffer_size = alsamm_buffersize;
  
!     err = snd_pcm_hw_params_set_buffer_size_near(handle, params, 
!     	(unsigned long *)&alsamm_buffer_size);
      if (err < 0) {
        check_error(err,"Unable to set max buffer size");
***************
*** 560,564 ****
  #endif
  
!     err = snd_pcm_hw_params_set_buffer_time_near(handle, params, &alsamm_buffertime, &dir);
      if (err < 0) {
        check_error(err,"Unable to set max buffer time");
--- 563,568 ----
  #endif
  
!     err = snd_pcm_hw_params_set_buffer_time_near(handle, params,
!     	&alsamm_buffertime, &dir);
      if (err < 0) {
        check_error(err,"Unable to set max buffer time");
***************
*** 567,571 ****
    }
  
!   err = snd_pcm_hw_params_get_buffer_time(params, &alsamm_buffertime, &dir);
    if (err < 0) {
      check_error(err,"Unable to get buffer time");
--- 571,576 ----
    }
  
!   err = snd_pcm_hw_params_get_buffer_time(params, 
!     (unsigned int *)&alsamm_buffertime, &dir);
    if (err < 0) {
      check_error(err,"Unable to get buffer time");
***************
*** 579,583 ****
  #endif
  
!   err = snd_pcm_hw_params_get_buffer_size(params, &alsamm_buffer_size);
    if (err < 0) {
      check_error(err,"Unable to get buffer size");
--- 584,589 ----
  #endif
  
!   err = snd_pcm_hw_params_get_buffer_size(params, 
!     (unsigned long *)&alsamm_buffer_size);
    if (err < 0) {
      check_error(err,"Unable to get buffer size");
***************
*** 590,594 ****
  #endif
  
!   err = snd_pcm_hw_params_get_period_size(params, &alsamm_period_size, &dir);
    if (err > 0) {
      check_error(err,"Unable to get period size");
--- 596,601 ----
  #endif
  
!   err = snd_pcm_hw_params_get_period_size(params, 
!     (unsigned long *)&alsamm_period_size, &dir);
    if (err > 0) {
      check_error(err,"Unable to get period size");
***************
*** 1174,1178 ****
        oframes = size;
  
!       err =  alsamm_get_channels(out, &oframes, &ooffset,ochannels,dev->a_addr);
  
  #ifdef ALSAMM_DEBUG
--- 1181,1186 ----
        oframes = size;
  
!       err =  alsamm_get_channels(out, (unsigned long *)&oframes, 
!       	(unsigned long *)&ooffset,ochannels,dev->a_addr);
  
  #ifdef ALSAMM_DEBUG
***************
*** 1284,1288 ****
        snd_pcm_sframes_t iframes = size;
  
!       err =  alsamm_get_channels(in, &iframes, &ioffset,ichannels,dev->a_addr);
        if (err < 0){
          if ((err = xrun_recovery(in, err)) < 0) {
--- 1292,1297 ----
        snd_pcm_sframes_t iframes = size;
  
!       err =  alsamm_get_channels(in, 
!       	(unsigned long *)&iframes, (unsigned long *)&ioffset,ichannels,dev->a_addr);
        if (err < 0){
          if ((err = xrun_recovery(in, err)) < 0) {


Index: t_tkcmd.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/t_tkcmd.c,v
retrieving revision 1.2
retrieving revision 1.2.4.1
diff -C2 -d -r1.2 -r1.2.4.1
*** t_tkcmd.c	6 Sep 2004 20:20:36 -0000	1.2
--- t_tkcmd.c	5 Nov 2004 14:27:47 -0000	1.2.4.1
***************
*** 438,442 ****
  #endif
      if (listen(xsock, 5) < 0) pd_sockerror("listen");
!     sockfd = accept(xsock, (struct sockaddr *) &server, &len);
      if (sockfd < 0) pd_sockerror("accept");
  #ifdef DEBUGCONNECT
--- 438,442 ----
  #endif
      if (listen(xsock, 5) < 0) pd_sockerror("listen");
!     sockfd = accept(xsock, (struct sockaddr *) &server, (unsigned int *)&len);
      if (sockfd < 0) pd_sockerror("accept");
  #ifdef DEBUGCONNECT

Index: s_inter.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_inter.c,v
retrieving revision 1.5
retrieving revision 1.5.4.1
diff -C2 -d -r1.5 -r1.5.4.1
*** s_inter.c	6 Sep 2004 20:20:35 -0000	1.5
--- s_inter.c	5 Nov 2004 14:27:47 -0000	1.5.4.1
***************
*** 28,32 ****
--- 28,34 ----
  #include <process.h>
  #include <winsock.h>
+ #include <windows.h>
  typedef int pid_t;
+ typedef int socklen_t;
  #define EADDRINUSE WSAEADDRINUSE
  #endif
***************
*** 86,89 ****
--- 88,92 ----
  extern char pd_version[];
  extern int sys_guisetportnumber;
+ extern char sys_font[]; /* tb: typeface */
  
  static int sys_nfdpoll;
***************
*** 163,166 ****
--- 166,174 ----
          for (fp = sys_fdpoll, i = sys_nfdpoll; i--; fp++)
              FD_SET(fp->fdp_fd, &readset);
+ #ifdef MSW
+ 		if (sys_maxfd == 0)
+ 			Sleep(microsec/1000);
+ 		else
+ #endif
          select(sys_maxfd+1, &readset, &writeset, &exceptset, &timout);
          for (i = 0; i < sys_nfdpoll; i++)
***************
*** 174,177 ****
--- 182,190 ----
      else
      {
+ #ifdef MSW
+         if (sys_maxfd == 0)
+               Sleep(microsec/1000);
+ 	else
+ #endif
          select(0, 0, 0, 0, &timout);
          return (0);
***************
*** 249,252 ****
--- 262,269 ----
  #endif
  
+ #ifdef _POSIX_MEMLOCK
+ #include <sys/resource.h>
+ #endif
+ 
  void sys_set_priority(int higher) 
  {
***************
*** 267,270 ****
--- 284,294 ----
  
  #ifdef _POSIX_MEMLOCK
+ 	/* tb: force memlock to physical memory { */
+ 	struct rlimit mlock_limit;
+ 	mlock_limit.rlim_cur=0;
+ 	mlock_limit.rlim_max=0;
+ 	setrlimit(RLIMIT_MEMLOCK,&mlock_limit);
+ 	/* } tb */
+ 
      if (mlockall(MCL_FUTURE) != -1) 
          fprintf(stderr, "memory locking enabled.\n");
***************
*** 612,616 ****
          sys_guibufhead = sys_guibuftail = 0;
      }
!     if (sys_guibufhead > sys_guibufsize - 50)
          sys_trytogetmoreguibuf(sys_guibufsize + GUI_ALLOCCHUNK);
      va_start(ap, fmt);
--- 636,640 ----
          sys_guibufhead = sys_guibuftail = 0;
      }
!     if (sys_guibufhead > sys_guibufsize - (GUI_ALLOCCHUNK/2))
          sys_trytogetmoreguibuf(sys_guibufsize + GUI_ALLOCCHUNK);
      va_start(ap, fmt);
***************
*** 620,633 ****
      if (msglen >= sys_guibufsize - sys_guibufhead)
      {
!         int newsize = sys_guibufsize + 1 +
              (msglen > GUI_ALLOCCHUNK ? msglen : GUI_ALLOCCHUNK);
          sys_trytogetmoreguibuf(newsize);
  
          va_start(ap, fmt);
!         msglen = vsnprintf(sys_guibuf + sys_guibufhead,
!             sys_guibufsize + 1 - sys_guibufhead, fmt, ap);
          va_end(ap);
          if (msglen >= sys_guibufsize - sys_guibufhead)
!             msglen = sys_guibufsize - sys_guibufhead - 1;
      }
      if (sys_debuglevel & DEBUG_MESSUP)
--- 644,659 ----
      if (msglen >= sys_guibufsize - sys_guibufhead)
      {
!         int msglen2, newsize = sys_guibufsize + 1 +
              (msglen > GUI_ALLOCCHUNK ? msglen : GUI_ALLOCCHUNK);
          sys_trytogetmoreguibuf(newsize);
  
          va_start(ap, fmt);
!         msglen2 = vsnprintf(sys_guibuf + sys_guibufhead,
!             sys_guibufsize - sys_guibufhead, fmt, ap);
          va_end(ap);
+ 	if (msglen2 != msglen)
+ 	    bug("sys_vgui");
          if (msglen >= sys_guibufsize - sys_guibufhead)
!             msglen = sys_guibufsize - sys_guibufhead;
      }
      if (sys_debuglevel & DEBUG_MESSUP)
***************
*** 1146,1150 ****
          int policy = SCHED_RR;
          int err;
!         param.sched_priority = 80; // adjust 0 : 100
  
          err = pthread_setschedparam(pthread_self(), policy, &param);
--- 1172,1176 ----
          int policy = SCHED_RR;
          int err;
!         param.sched_priority = 80; /* adjust 0 : 100 */
  
          err = pthread_setschedparam(pthread_self(), policy, &param);
***************
*** 1159,1164 ****
              fprintf(stderr, "Waiting for connection request... \n");
          if (listen(xsock, 5) < 0) sys_sockerror("listen");
  
!         sys_guisock = accept(xsock, (struct sockaddr *) &server, &len);
  #ifdef OOPS
          close(xsock);
--- 1185,1192 ----
              fprintf(stderr, "Waiting for connection request... \n");
          if (listen(xsock, 5) < 0) sys_sockerror("listen");
+ 		
  
!         sys_guisock = accept(xsock, (struct sockaddr *) &server, 
! 	    (socklen_t *)&len);
  #ifdef OOPS
          close(xsock);
***************
*** 1181,1185 ****
  #endif
           sys_get_audio_apis(buf);
!          sys_vgui("pdtk_pd_startup {%s} %s\n", pd_version, buf); 
      }
      return (0);
--- 1209,1214 ----
  #endif
           sys_get_audio_apis(buf);
!          sys_vgui("pdtk_pd_startup {%s} %s {%s}\n", pd_version, buf, 
! 				  sys_font); 
      }
      return (0);

Index: m_pd.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_pd.h,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -C2 -d -r1.4 -r1.4.4.1
*** m_pd.h	6 Sep 2004 20:20:35 -0000	1.4
--- m_pd.h	5 Nov 2004 14:27:46 -0000	1.4.4.1
***************
*** 12,15 ****
--- 12,17 ----
  #define PD_MINOR_VERSION 38   
  
+ #define PD_DEVEL_VERSION 1  /* T.Grill - mark for devel branch */
+ 
  /* old name for "MSW" flag -- we have to take it for the sake of many old
  "nmakefiles" for externs, which will define NT and not MSW */
***************
*** 18,23 ****
  #endif
  
! #ifdef MSW
! // #pragma warning( disable : 4091 ) 
  #pragma warning( disable : 4305 )  /* uncast const double to float */
  #pragma warning( disable : 4244 )  /* uncast float/int conversion etc. */
--- 20,25 ----
  #endif
  
! #if defined(MSW) && !defined (__GNUC__)
! /* #pragma warning( disable : 4091 ) */
  #pragma warning( disable : 4305 )  /* uncast const double to float */
  #pragma warning( disable : 4244 )  /* uncast float/int conversion etc. */
***************
*** 25,30 ****
  #endif /* MSW */
  
!     /* the external storage class is "extern" in UNIX; in MSW it's ugly. */
! #ifdef MSW
  #ifdef PD_INTERNAL
  #define EXTERN __declspec(dllexport) extern
--- 27,32 ----
  #endif /* MSW */
  
!     /* the external storage class is "extern" in GCC; in MS-C it's ugly. */
! #if defined(MSW) && !defined (__GNUC__)
  #ifdef PD_INTERNAL
  #define EXTERN __declspec(dllexport) extern
***************
*** 244,247 ****
--- 246,253 ----
  EXTERN void *resizebytes(void *x, size_t oldsize, size_t newsize);
  
+ /* T.Grill - functions for aligned memory (according to CPU SIMD architecture) */
+ EXTERN void *getalignedbytes(size_t nbytes);
+ EXTERN void freealignedbytes(void *x,size_t nbytes);
+ EXTERN void *resizealignedbytes(void *x,size_t oldsize, size_t newsize);
  /* -------------------- atoms ----------------------------- */
  
***************
*** 333,336 ****
--- 339,347 ----
  
  /* ----------------- patchable "objects" -------------- */
+ EXTERN_STRUCT _inlet;
+ #define t_inlet struct _inlet
+ EXTERN_STRUCT _outlet;
+ #define t_outlet struct _outlet
+ 
  EXTERN t_inlet *inlet_new(t_object *owner, t_pd *dest, t_symbol *s1,
      t_symbol *s2);
***************
*** 339,342 ****
--- 350,355 ----
  EXTERN t_inlet *symbolinlet_new(t_object *owner, t_symbol **sp);
  EXTERN void inlet_free(t_inlet *x);
+ EXTERN void class_settip(t_class *x,t_symbol* s);
+ EXTERN void inlet_settip(t_inlet* i,t_symbol* s);
  
  EXTERN t_outlet *outlet_new(t_object *owner, t_symbol *s);
***************
*** 429,432 ****
--- 442,448 ----
  #endif
  
+ EXTERN void class_settip(t_class *x,t_symbol* s);
+ EXTERN void inlet_settip(t_inlet* i,t_symbol* s);
+ 
  /* ------------   printing --------------------------------- */
  EXTERN void post(const char *fmt, ...);
***************
*** 483,490 ****
  typedef t_int *(*t_perfroutine)(t_int *args);
  
! EXTERN t_int *plus_perform(t_int *args);
  EXTERN t_int *zero_perform(t_int *args);
  EXTERN t_int *copy_perform(t_int *args);
  
  EXTERN void dsp_add_plus(t_sample *in1, t_sample *in2, t_sample *out, int n);
  EXTERN void dsp_add_copy(t_sample *in, t_sample *out, int n);
--- 499,570 ----
  typedef t_int *(*t_perfroutine)(t_int *args);
  
! /* tb: exporting basic arithmetic dsp functions { 
!  *
!  * for (n % 8) != 0
!  */
  EXTERN t_int *zero_perform(t_int *args);
  EXTERN t_int *copy_perform(t_int *args);
  
+ EXTERN t_int *plus_perform(t_int *args);
+ EXTERN t_int *scalarplus_perform(t_int *args);
+ EXTERN t_int *minus_perform(t_int *args);
+ EXTERN t_int *scalarminus_perform(t_int *args);
+ EXTERN t_int *times_perform(t_int *args);
+ EXTERN t_int *scalartimes_perform(t_int *args);
+ EXTERN t_int *over_perform(t_int *args);
+ EXTERN t_int *scalarover_perform(t_int *args);
+ 
+ EXTERN t_int *max_perform(t_int *args);
+ EXTERN t_int *scalarmax_perform(t_int *args);
+ EXTERN t_int *min_perform(t_int *args);
+ EXTERN t_int *scalarmin_perform(t_int *args);
+ 
+ EXTERN t_int *sig_tilde_perform(t_int *args);
+ 
+ /* for (n % 8) == 0 */
+ EXTERN t_int *zero_perf8(t_int *args);
+ EXTERN t_int *copy_perf8(t_int *args);
+ 
+ EXTERN t_int *plus_perf8(t_int *args);
+ EXTERN t_int *scalarplus_perf8(t_int *args);
+ EXTERN t_int *minus_perf8(t_int *args);
+ EXTERN t_int *scalarminus_perf8(t_int *args);
+ EXTERN t_int *times_perf8(t_int *args);
+ EXTERN t_int *scalartimes_perf8(t_int *args);
+ EXTERN t_int *sqr_perf8(t_int *args);
+ EXTERN t_int *over_perf8(t_int *args);
+ EXTERN t_int *scalarover_perf8(t_int *args);
+ 
+ EXTERN t_int *max_perf8(t_int *args);
+ EXTERN t_int *scalarmax_perf8(t_int *args);
+ EXTERN t_int *min_perf8(t_int *args);
+ EXTERN t_int *scalarmin_perf8(t_int *args);
+ 
+ EXTERN t_int *sig_tilde_perf8(t_int *args);
+ 
+ /* for (n % 8) == 0 && aligned signal vectors
+  * check with simd_checkX functions !!!
+  */
+ EXTERN t_int *zero_perf_simd(t_int *args);
+ EXTERN t_int *copy_perf_simd(t_int *args);
+ 
+ EXTERN t_int *plus_perf_simd(t_int *args);
+ EXTERN t_int *scalarplus_perf_simd(t_int *args);
+ EXTERN t_int *minus_perf_simd(t_int *args);
+ EXTERN t_int *scalarminus_perf_simd(t_int *args);
+ EXTERN t_int *times_perf_simd(t_int *args);
+ EXTERN t_int *scalartimes_perf_simd(t_int *args);
+ EXTERN t_int *sqr_perf_simd(t_int *args);
+ EXTERN t_int *over_perf_simd(t_int *args);
+ EXTERN t_int *scalarover_perf_simd(t_int *args);
+ 
+ EXTERN t_int *max_perf_simd(t_int *args);
+ EXTERN t_int *scalarmax_perf_simd(t_int *args);
+ EXTERN t_int *min_perf_simd(t_int *args);
+ EXTERN t_int *scalarmin_perf_simd(t_int *args);
+ 
+ EXTERN t_int *sig_tilde_perf_simd(t_int *args);
+ /* } tb */
+ 
  EXTERN void dsp_add_plus(t_sample *in1, t_sample *in2, t_sample *out, int n);
  EXTERN void dsp_add_copy(t_sample *in, t_sample *out, int n);
***************
*** 542,545 ****
--- 622,653 ----
  /* } IOhannes */
  
+ 
+ /* tb: exporting basic simd coded dsp functions { */
+ 
+ /* vectorized, not simd functions*/
+ EXTERN void zerovec_8(t_float *dst,int n);
+ EXTERN void setvec_8(t_float *dst,t_float v,int n);
+ EXTERN void copyvec_8(t_float *dst,const t_float *src,int n);
+ EXTERN void addvec_8(t_float *dst,const t_float *src,int n);
+ EXTERN void testcopyvec_8(t_float *dst,const t_float *src,int n);
+ EXTERN void testaddvec_8(t_float *dst,const t_float *src,int n);
+ 
+ /* vectorized, simd functions *
+  * dst and src are assumed to be aligned */
+ EXTERN void zerovec_simd(t_float *dst,int n);
+ EXTERN void setvec_simd(t_float *dst,t_float v,int n);
+ EXTERN void copyvec_simd(t_float *dst,const t_float *src,int n);
+ EXTERN void addvec_simd(t_float *dst,const t_float *src,int n);
+ EXTERN void testcopyvec_simd(t_float *dst,const t_float *src,int n);
+ EXTERN void testaddvec_simd(t_float *dst,const t_float *src,int n);
+ 
+ EXTERN int simd_runtime_check(void);
+ EXTERN int simd_check1(t_int n, t_float* ptr1);
+ EXTERN int simd_check2(t_int n, t_float* ptr1, t_float* ptr2);
+ EXTERN int simd_check3(t_int n, t_float* ptr1, t_float* ptr2, t_float* ptr3);
+ 
+ /* } tb */
+ 
+ 
  /* ----------------------- utility functions for signals -------------- */
  EXTERN float mtof(float);
***************
*** 566,569 ****
--- 674,678 ----
  EXTERN float garray_get(t_garray *x, t_symbol *s, t_int indx);
  EXTERN void garray_redraw(t_garray *x);
+ EXTERN double garray_updatetime(t_garray *x); /* T.Grill - get last update time (clock_getlogicaltime) */
  EXTERN int garray_npoints(t_garray *x);
  EXTERN char *garray_vec(t_garray *x);
***************
*** 571,574 ****
--- 680,687 ----
  EXTERN void garray_usedindsp(t_garray *x);
  EXTERN void garray_setsaveit(t_garray *x, int saveit);
+ EXTERN void garray_lock(t_garray *x);   /* TB: array locking */
+ EXTERN void garray_unlock(t_garray *x);
+ EXTERN int garray_trylock(t_garray *x);
+ 
  EXTERN t_class *scalar_class;
  

Index: g_editor.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_editor.c,v
retrieving revision 1.4
retrieving revision 1.4.4.1
diff -C2 -d -r1.4 -r1.4.4.1
*** g_editor.c	6 Sep 2004 20:20:33 -0000	1.4
--- g_editor.c	5 Nov 2004 14:27:45 -0000	1.4.4.1
***************
*** 16,19 ****
--- 16,20 ----
  void open_via_helppath(const char *name, const char *dir);
  char *class_gethelpdir(t_class *c);
+ char* inlet_tip(t_inlet* i,int num);
  
  /* ------------------ forward declarations --------------- */
***************
*** 752,755 ****
--- 753,769 ----
  }
  
+ void canvas_inlettip(t_canvas* x,t_object* ob,int closest,int xpos,int ypos)
+ {
+ 	if (!sys_tooltips) return;
+ 	if (ob->ob_pd->c_firstin) closest--;
+ 	if (closest < 0)
+ 		sys_vgui(".x%lx.c create text %d %d -anchor sw -text \"%s\" -tags y\n",
+ 				 (t_int)x, xpos, ypos,ob->ob_pd->c_firsttip->s_name);
+ 	else
+ 		sys_vgui(".x%lx.c create text %d %d -anchor sw -text \"%s\" -tags y\n",
+ 				 (t_int)x, xpos, ypos-4,inlet_tip(ob->te_inlet,closest));
+ }
+ 
+ 
      /* check if a point lies in a gobj.  */
  int canvas_hitbox(t_canvas *x, t_gobj *y, int xpos, int ypos,
***************
*** 1065,1069 ****
          {
                  /* look for an outlet */
!             int noutlet;
              if (ob && (noutlet = obj_noutlets(ob)) && ypos >= y2-4)
              {
--- 1079,1083 ----
          {
                  /* look for an outlet */
!             int noutlet, ninlet;
              if (ob && (noutlet = obj_noutlets(ob)) && ypos >= y2-4)
              {
***************
*** 1092,1096 ****
                      goto nooutletafterall;
              }
!                 /* not in an outlet; select and move */
              else if (doit)
              {
--- 1106,1126 ----
                      goto nooutletafterall;
              }
!  
! 			/* look for an inlet */
! 			else if (ob && (ninlet = obj_ninlets(ob)) && ypos <= y1+4)
! 			{
! 				int width = x2 - x1;
! 				int nin1 = (ninlet > 1 ? ninlet - 1 : 1);
! 				int closest = ((xpos-x1) * (nin1) + width/2)/width;
! 				int hotspot = x1 +
! 					(width - IOWIDTH) * closest / (nin1);
! 				if (closest < ninlet &&
! 					xpos >= (hotspot-1) && xpos <= hotspot + (IOWIDTH+1))
! 				{
! 					canvas_inlettip(x,ob,closest,xpos,ypos);
! 				}
! 			}
! 
! 			/* not in an outlet; select and move */
              else if (doit)
              {
***************
*** 1276,1280 ****
                          "connect");
              }
!             else canvas_setcursor(x, CURSOR_EDITMODE_CONNECT);
              return;
          }
--- 1306,1314 ----
                          "connect");
              }
!             else 
! 			{
! 				canvas_setcursor(x, CURSOR_EDITMODE_CONNECT);
! 				canvas_inlettip(x,ob2,closest2,xpos,ypos);
! 			}
              return;
          }
***************
*** 1502,1505 ****
--- 1536,1542 ----
          return;
      }
+ 
+ 	sys_vgui(".x%lx.c delete y\n",x); /* GG: bad hack */
+ 	
      glist_setlastxy(x, xpos, ypos);
      if (x->gl_editor->e_onmotion == MA_MOVE)
***************
*** 2063,2066 ****
--- 2100,2104 ----
              (src? class_getname(pd_class(&src->g_pd)) : "???"),
              (sink? class_getname(pd_class(&sink->g_pd)) : "???"));
+    abort();
  }
  





More information about the Pd-cvs mailing list