[PD-cvs] pd/src CHANGELOG.txt, 1.4, 1.5 configure.in, 1.20, 1.21 g_bang.c, 1.4, 1.5 g_canvas.c, 1.15, 1.16 g_editor.c, 1.17, 1.18 g_hdial.c, 1.6, 1.7 g_hslider.c, 1.5, 1.6 g_numbox.c, 1.7, 1.8 g_template.c, 1.16, 1.17 g_text.c, 1.13, 1.14 g_toggle.c, 1.4, 1.5 g_vdial.c, 1.5, 1.6 g_vslider.c, 1.5, 1.6 m_pd.h, 1.12, 1.13 makefile.in, 1.13, 1.14 notes.txt, 1.29, 1.30 s_audio.c, 1.9, 1.10 s_audio_alsa.c, 1.7, 1.8 s_loader.c, 1.11, 1.12 s_main.c, 1.25, 1.26 s_midi.c, 1.7, 1.8 s_path.c, 1.10, 1.11 u_main.tk, 1.22, 1.23 x_midi.c, 1.3, 1.4

Miller Puckette millerpuckette at users.sourceforge.net
Sat Sep 9 01:45:33 CEST 2006


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

Modified Files:
	CHANGELOG.txt configure.in g_bang.c g_canvas.c g_editor.c 
	g_hdial.c g_hslider.c g_numbox.c g_template.c g_text.c 
	g_toggle.c g_vdial.c g_vslider.c m_pd.h makefile.in notes.txt 
	s_audio.c s_audio_alsa.c s_loader.c s_main.c s_midi.c s_path.c 
	u_main.tk x_midi.c 
Log Message:
Many bug fixes



Index: g_toggle.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_toggle.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** g_toggle.c	6 Sep 2004 20:20:34 -0000	1.4
--- g_toggle.c	8 Sep 2006 23:45:30 -0000	1.5
***************
*** 364,369 ****
      int bflcol[]={-262144, -1, -1};
      int a=IEM_GUI_DEFAULTSIZE, f=0;
!     int ldx=0, ldy=-6;
!     int fs=8;
      float on=0.0, nonzero=1.0;
      char str[144];
--- 364,369 ----
      int bflcol[]={-262144, -1, -1};
      int a=IEM_GUI_DEFAULTSIZE, f=0;
!     int ldx=17, ldy=7;
!     int fs=10;
      float on=0.0, nonzero=1.0;
      char str[144];

Index: u_main.tk
===================================================================
RCS file: /cvsroot/pure-data/pd/src/u_main.tk,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** u_main.tk	15 Aug 2006 16:09:57 -0000	1.22
--- u_main.tk	8 Sep 2006 23:45:31 -0000	1.23
***************
*** 227,232 ****
  
  #enquote a string to send it to Pd.  Blow off semi and comma; alias spaces
  proc pdtk_unspace {x} {
!     string map {" " "_" ";" "" "," ""} $x
  }
  
--- 227,235 ----
  
  #enquote a string to send it to Pd.  Blow off semi and comma; alias spaces
+ #we also blow off "{", "}", "\" because they'll just cause bad trouble later.
  proc pdtk_unspace {x} {
!     set y [string map {" " "_" ";" "" "," "" "{" "" "}" "" "\\" ""} $x]
!     if {$y == ""} {set y "empty"}
!     concat $y
  }
  
***************
*** 861,865 ****
     }
     wm geometry $name $geometry
!     canvas $name.c -width $width -height $height -background white \
          -yscrollcommand "$name.scrollvert set" \
          -xscrollcommand "$name.scrollhort set" \
--- 864,868 ----
     }
     wm geometry $name $geometry
!    canvas $name.c -width $width -height $height -background white \
          -yscrollcommand "$name.scrollvert set" \
          -xscrollcommand "$name.scrollhort set" \
***************
*** 1437,1440 ****
--- 1440,1444 ----
  set pdtk_lastcanvasconfigured ""
  set pdtk_lastcanvasconfiguration ""
+ set pdtk_lastcanvasconfiguration2 ""
  
  proc pdtk_canvas_checkgeometry {topname} {
***************
*** 1443,1450 ****
      global pdtk_lastcanvasconfigured
      global pdtk_lastcanvasconfiguration
      if {$topname != $pdtk_lastcanvasconfigured || \
!         $boo != $pdtk_lastcanvasconfiguration} {
              set pdtk_lastcanvasconfigured $topname
              set pdtk_lastcanvasconfiguration $boo
              pd $topname relocate $boo $boo2 \;
      }
--- 1447,1457 ----
      global pdtk_lastcanvasconfigured
      global pdtk_lastcanvasconfiguration
+     global pdtk_lastcanvasconfiguration2
      if {$topname != $pdtk_lastcanvasconfigured || \
!         $boo != $pdtk_lastcanvasconfiguration || \
!         $boo2 != $pdtk_lastcanvasconfiguration2} {
              set pdtk_lastcanvasconfigured $topname
              set pdtk_lastcanvasconfiguration $boo
+             set pdtk_lastcanvasconfiguration2 $boo2
              pd $topname relocate $boo $boo2 \;
      }
***************
*** 3517,3523 ****
  # on and restart the dialog.
  
! proc pdtk_audio_dialog {id indevlist indev1 indev2 indev3 indev4 \
          inchan1 inchan2 inchan3 inchan4 \
!         outdevlist outdev1 outdev2 outdev3 outdev4 \
          outchan1 outchan2 outchan3 outchan4 sr advance multi longform} {
      global audio_indev1 audio_indev2 audio_indev3 audio_indev4 
--- 3524,3530 ----
  # on and restart the dialog.
  
! proc pdtk_audio_dialog {id indev1 indev2 indev3 indev4 \
          inchan1 inchan2 inchan3 inchan4 \
!         outdev1 outdev2 outdev3 outdev4 \
          outchan1 outchan2 outchan3 outchan4 sr advance multi longform} {
      global audio_indev1 audio_indev2 audio_indev3 audio_indev4 
***************
*** 3529,3532 ****
--- 3536,3540 ----
      global audio_sr audio_advance
      global audio_indevlist audio_outdevlist
+     global pd_indev pd_outdev
  
      set audio_indev1 $indev1
***************
*** 3560,3565 ****
      set audio_sr $sr
      set audio_advance $advance
-     set audio_indevlist $indevlist
-     set audio_outdevlist $outdevlist
  
      toplevel $id
--- 3568,3571 ----
***************
*** 3595,3600 ****
      checkbutton $id.in1f.x0 -variable audio_inenable1 \
          -text {input device 1} -anchor e
!     button $id.in1f.x1 -text [lindex $indevlist $audio_indev1] \
!         -command [list audio_popup $id $id.in1f.x1 audio_indev1 $indevlist]
      label $id.in1f.l2 -text "channels:"
      entry $id.in1f.x2 -textvariable audio_inchan1 -width 3
--- 3601,3606 ----
      checkbutton $id.in1f.x0 -variable audio_inenable1 \
          -text {input device 1} -anchor e
!     button $id.in1f.x1 -text [lindex $audio_indevlist $audio_indev1] \
!         -command [list audio_popup $id $id.in1f.x1 audio_indev1 $audio_indevlist]
      label $id.in1f.l2 -text "channels:"
      entry $id.in1f.x2 -textvariable audio_inchan1 -width 3
***************
*** 3602,3606 ****
  
          # input device 2
!     if {$longform && $multi > 1 && [llength $indevlist] > 1} {
          frame $id.in2f
          pack $id.in2f -side top
--- 3608,3612 ----
  
          # input device 2
!     if {$longform && $multi > 1 && [llength $audio_indevlist] > 1} {
          frame $id.in2f
          pack $id.in2f -side top
***************
*** 3608,3613 ****
          checkbutton $id.in2f.x0 -variable audio_inenable2 \
              -text {input device 2} -anchor e
!         button $id.in2f.x1 -text [lindex $indevlist $audio_indev2] \
!             -command [list audio_popup $id $id.in2f.x1 audio_indev2 $indevlist]
          label $id.in2f.l2 -text "channels:"
          entry $id.in2f.x2 -textvariable audio_inchan2 -width 3
--- 3614,3620 ----
          checkbutton $id.in2f.x0 -variable audio_inenable2 \
              -text {input device 2} -anchor e
!         button $id.in2f.x1 -text [lindex $audio_indevlist $audio_indev2] \
!             -command [list audio_popup $id $id.in2f.x1 audio_indev2 \
!                 $audio_indevlist]
          label $id.in2f.l2 -text "channels:"
          entry $id.in2f.x2 -textvariable audio_inchan2 -width 3
***************
*** 3616,3620 ****
  
          # input device 3
!     if {$longform && $multi > 1 && [llength $indevlist] > 2} {
          frame $id.in3f
          pack $id.in3f -side top
--- 3623,3627 ----
  
          # input device 3
!     if {$longform && $multi > 1 && [llength $audio_indevlist] > 2} {
          frame $id.in3f
          pack $id.in3f -side top
***************
*** 3622,3627 ****
          checkbutton $id.in3f.x0 -variable audio_inenable3 \
              -text {input device 3} -anchor e
!         button $id.in3f.x1 -text [lindex $indevlist $audio_indev3] \
!             -command [list audio_popup $id $id.in3f.x1 audio_indev3 $indevlist]
          label $id.in3f.l2 -text "channels:"
          entry $id.in3f.x2 -textvariable audio_inchan3 -width 3
--- 3629,3635 ----
          checkbutton $id.in3f.x0 -variable audio_inenable3 \
              -text {input device 3} -anchor e
!         button $id.in3f.x1 -text [lindex $audio_indevlist $audio_indev3] \
!             -command [list audio_popup $id $id.in3f.x1 audio_indev3 \
!                 $audio_indevlist]
          label $id.in3f.l2 -text "channels:"
          entry $id.in3f.x2 -textvariable audio_inchan3 -width 3
***************
*** 3630,3634 ****
  
          # input device 4
!     if {$longform && $multi > 1 && [llength $indevlist] > 3} {
          frame $id.in4f
          pack $id.in4f -side top
--- 3638,3642 ----
  
          # input device 4
!     if {$longform && $multi > 1 && [llength $audio_indevlist] > 3} {
          frame $id.in4f
          pack $id.in4f -side top
***************
*** 3636,3641 ****
          checkbutton $id.in4f.x0 -variable audio_inenable4 \
              -text {input device 4} -anchor e
!         button $id.in4f.x1 -text [lindex $indevlist $audio_indev4] \
!             -command [list audio_popup $id $id.in4f.x1 audio_indev4 $indevlist]
          label $id.in4f.l2 -text "channels:"
          entry $id.in4f.x2 -textvariable audio_inchan4 -width 3
--- 3644,3650 ----
          checkbutton $id.in4f.x0 -variable audio_inenable4 \
              -text {input device 4} -anchor e
!         button $id.in4f.x1 -text [lindex $audio_indevlist $audio_indev4] \
!             -command [list audio_popup $id $id.in4f.x1 audio_indev4 \
!                 $audio_indevlist]
          label $id.in4f.l2 -text "channels:"
          entry $id.in4f.x2 -textvariable audio_inchan4 -width 3
***************
*** 3647,3659 ****
      pack $id.out1f -side top
  
!     checkbutton $id.out1f.x0 -variable audio_outenable1 -text {output device 1} \
!         -anchor e
      if {$multi == 0} {
          label $id.out1f.l1 \
              -text "(same as input device) ..............      "
      } else {
!         button $id.out1f.x1 -text [lindex $outdevlist $audio_outdev1] \
!             -command \
!             [list audio_popup $id $id.out1f.x1 audio_outdev1 $outdevlist]
      }
      label $id.out1f.l2 -text "channels:"
--- 3656,3668 ----
      pack $id.out1f -side top
  
!     checkbutton $id.out1f.x0 -variable audio_outenable1 \
!         -text {output device 1} -anchor e
      if {$multi == 0} {
          label $id.out1f.l1 \
              -text "(same as input device) ..............      "
      } else {
!         button $id.out1f.x1 -text [lindex $audio_outdevlist $audio_outdev1] \
!             -command  [list audio_popup $id $id.out1f.x1 audio_outdev1 \
!                 $audio_outdevlist]
      }
      label $id.out1f.l2 -text "channels:"
***************
*** 3666,3670 ****
  
          # output device 2
!     if {$longform && $multi > 1 && [llength $indevlist] > 1} {
          frame $id.out2f
          pack $id.out2f -side top
--- 3675,3679 ----
  
          # output device 2
!     if {$longform && $multi > 1 && [llength $audio_outdevlist] > 1} {
          frame $id.out2f
          pack $id.out2f -side top
***************
*** 3672,3678 ****
          checkbutton $id.out2f.x0 -variable audio_outenable2 \
              -text {output device 2} -anchor e
!         button $id.out2f.x1 -text [lindex $outdevlist $audio_outdev2] \
              -command \
!             [list audio_popup $id $id.out2f.x1 audio_outdev2 $outdevlist]
          label $id.out2f.l2 -text "channels:"
          entry $id.out2f.x2 -textvariable audio_outchan2 -width 3
--- 3681,3687 ----
          checkbutton $id.out2f.x0 -variable audio_outenable2 \
              -text {output device 2} -anchor e
!         button $id.out2f.x1 -text [lindex $audio_outdevlist $audio_outdev2] \
              -command \
!             [list audio_popup $id $id.out2f.x1 audio_outdev2 $audio_outdevlist]
          label $id.out2f.l2 -text "channels:"
          entry $id.out2f.x2 -textvariable audio_outchan2 -width 3
***************
*** 3681,3685 ****
  
          # output device 3
!     if {$longform && $multi > 1 && [llength $indevlist] > 2} {
          frame $id.out3f
          pack $id.out3f -side top
--- 3690,3694 ----
  
          # output device 3
!     if {$longform && $multi > 1 && [llength $audio_outdevlist] > 2} {
          frame $id.out3f
          pack $id.out3f -side top
***************
*** 3687,3693 ****
          checkbutton $id.out3f.x0 -variable audio_outenable3 \
              -text {output device 3} -anchor e
!         button $id.out3f.x1 -text [lindex $outdevlist $audio_outdev3] \
              -command \
!             [list audio_popup $id $id.out3f.x1 audio_outdev3 $outdevlist]
          label $id.out3f.l2 -text "channels:"
          entry $id.out3f.x2 -textvariable audio_outchan3 -width 3
--- 3696,3702 ----
          checkbutton $id.out3f.x0 -variable audio_outenable3 \
              -text {output device 3} -anchor e
!         button $id.out3f.x1 -text [lindex $audio_outdevlist $audio_outdev3] \
              -command \
!             [list audio_popup $id $id.out3f.x1 audio_outdev3 $audio_outdevlist]
          label $id.out3f.l2 -text "channels:"
          entry $id.out3f.x2 -textvariable audio_outchan3 -width 3
***************
*** 3696,3700 ****
  
          # output device 4
!     if {$longform && $multi > 1 && [llength $indevlist] > 3} {
          frame $id.out4f
          pack $id.out4f -side top
--- 3705,3709 ----
  
          # output device 4
!     if {$longform && $multi > 1 && [llength $audio_outdevlist] > 3} {
          frame $id.out4f
          pack $id.out4f -side top
***************
*** 3702,3708 ****
          checkbutton $id.out4f.x0 -variable audio_outenable4 \
              -text {output device 4} -anchor e
!         button $id.out4f.x1 -text [lindex $outdevlist $audio_outdev4] \
              -command \
!             [list audio_popup $id $id.out4f.x1 audio_outdev4 $outdevlist]
          label $id.out4f.l2 -text "channels:"
          entry $id.out4f.x2 -textvariable audio_outchan4 -width 3
--- 3711,3717 ----
          checkbutton $id.out4f.x0 -variable audio_outenable4 \
              -text {output device 4} -anchor e
!         button $id.out4f.x1 -text [lindex $audio_outdevlist $audio_outdev4] \
              -command \
!             [list audio_popup $id $id.out4f.x1 audio_outdev4 $audio_outdevlist]
          label $id.out4f.l2 -text "channels:"
          entry $id.out4f.x2 -textvariable audio_outchan4 -width 3
***************
*** 3737,3741 ****
  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 \
--- 3746,3751 ----
  proc midi_apply {id} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
!     global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4
!     global midi_alsain midi_alsaout
  
      pd [concat pd midi-dialog \
***************
*** 3786,3791 ****
  # controls for opening several devices; if not, we get an extra button to
  # turn longform on and restart the dialog.
! 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
--- 3796,3801 ----
  # controls for opening several devices; if not, we get an extra button to
  # turn longform on and restart the dialog.
! proc pdtk_midi_dialog {id indev1 indev2 indev3 indev4 \
!         outdev1 outdev2 outdev3 outdev4 longform} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
      global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4
***************
*** 3801,3808 ****
      set midi_outdev3 $outdev3
      set midi_outdev4 $outdev4
!     set midi_indevlist $indevlist
!     set midi_outdevlist $outdevlist
!     set midi_alsain [llength $indevlist]
!     set midi_alsaout [llength $outdevlist]
  
      toplevel $id
--- 3811,3816 ----
      set midi_outdev3 $outdev3
      set midi_outdev4 $outdev4
!     set midi_alsain [llength $midi_indevlist]
!     set midi_alsaout [llength $midi_outdevlist]
  
      toplevel $id
***************
*** 3827,3864 ****
  
      label $id.in1f.l1 -text "input device 1:"
!     button $id.in1f.x1 -text [lindex $indevlist $midi_indev1] \
!         -command [list midi_popup $id $id.in1f.x1 midi_indev1 $indevlist]
      pack $id.in1f.l1 $id.in1f.x1 -side left
  
          # input device 2
!     if {$longform && [llength $indevlist] > 2} {
          frame $id.in2f
          pack $id.in2f -side top
  
          label $id.in2f.l1 -text "input device 2:"
!         button $id.in2f.x1 -text [lindex $indevlist $midi_indev2] \
!             -command [list midi_popup $id $id.in2f.x1 midi_indev2 $indevlist]
          pack $id.in2f.l1 $id.in2f.x1 -side left
      }
  
          # input device 3
!     if {$longform && [llength $indevlist] > 3} {
          frame $id.in3f
          pack $id.in3f -side top
  
          label $id.in3f.l1 -text "input device 3:"
!         button $id.in3f.x1 -text [lindex $indevlist $midi_indev3] \
!             -command [list midi_popup $id $id.in3f.x1 midi_indev3 $indevlist]
          pack $id.in3f.l1 $id.in3f.x1 -side left
      }
  
          # input device 4
!     if {$longform && [llength $indevlist] > 4} {
          frame $id.in4f
          pack $id.in4f -side top
  
          label $id.in4f.l1 -text "input device 4:"
!         button $id.in4f.x1 -text [lindex $indevlist $midi_indev4] \
!             -command [list midi_popup $id $id.in4f.x1 midi_indev4 $indevlist]
          pack $id.in4f.l1 $id.in4f.x1 -side left
      }
--- 3835,3875 ----
  
      label $id.in1f.l1 -text "input device 1:"
!     button $id.in1f.x1 -text [lindex $midi_indevlist $midi_indev1] \
!         -command [list midi_popup $id $id.in1f.x1 midi_indev1 $midi_indevlist]
      pack $id.in1f.l1 $id.in1f.x1 -side left
  
          # input device 2
!     if {$longform && [llength $midi_indevlist] > 2} {
          frame $id.in2f
          pack $id.in2f -side top
  
          label $id.in2f.l1 -text "input device 2:"
!         button $id.in2f.x1 -text [lindex $midi_indevlist $midi_indev2] \
!             -command [list midi_popup $id $id.in2f.x1 midi_indev2 \
!                 $midi_indevlist]
          pack $id.in2f.l1 $id.in2f.x1 -side left
      }
  
          # input device 3
!     if {$longform && [llength $midi_indevlist] > 3} {
          frame $id.in3f
          pack $id.in3f -side top
  
          label $id.in3f.l1 -text "input device 3:"
!         button $id.in3f.x1 -text [lindex $midi_indevlist $midi_indev3] \
!             -command [list midi_popup $id $id.in3f.x1 midi_indev3 \
!                 $midi_indevlist]
          pack $id.in3f.l1 $id.in3f.x1 -side left
      }
  
          # input device 4
!     if {$longform && [llength $midi_indevlist] > 4} {
          frame $id.in4f
          pack $id.in4f -side top
  
          label $id.in4f.l1 -text "input device 4:"
!         button $id.in4f.x1 -text [lindex $midi_indevlist $midi_indev4] \
!             -command [list midi_popup $id $id.in4f.x1 midi_indev4 \
!                 $midi_indevlist]
          pack $id.in4f.l1 $id.in4f.x1 -side left
      }
***************
*** 3869,3906 ****
      pack $id.out1f -side top
      label $id.out1f.l1 -text "output device 1:"
!     button $id.out1f.x1 -text [lindex $outdevlist $midi_outdev1] \
!         -command [list midi_popup $id $id.out1f.x1 midi_outdev1 $outdevlist]
      pack $id.out1f.l1 $id.out1f.x1 -side left
  
          # output device 2
!     if {$longform && [llength $indevlist] > 2} {
          frame $id.out2f
          pack $id.out2f -side top
          label $id.out2f.l1 -text "output device 2:"
!         button $id.out2f.x1 -text [lindex $outdevlist $midi_outdev2] \
              -command \
!             [list midi_popup $id $id.out2f.x1 midi_outdev2 $outdevlist]
          pack $id.out2f.l1 $id.out2f.x1 -side left
      }
  
          # output device 3
!     if {$longform && [llength $indevlist] > 3} {
          frame $id.out3f
          pack $id.out3f -side top
          label $id.out3f.l1 -text "output device 3:"
!         button $id.out3f.x1 -text [lindex $outdevlist $midi_outdev3] \
              -command \
!             [list midi_popup $id $id.out3f.x1 midi_outdev3 $outdevlist]
          pack $id.out3f.l1 $id.out3f.x1 -side left
      }
  
          # output device 4
!     if {$longform && [llength $indevlist] > 4} {
          frame $id.out4f
          pack $id.out4f -side top
          label $id.out4f.l1 -text "output device 4:"
!         button $id.out4f.x1 -text [lindex $outdevlist $midi_outdev4] \
              -command \
!             [list midi_popup $id $id.out4f.x1 midi_outdev4 $outdevlist]
          pack $id.out4f.l1 $id.out4f.x1 -side left
      }
--- 3880,3918 ----
      pack $id.out1f -side top
      label $id.out1f.l1 -text "output device 1:"
!     button $id.out1f.x1 -text [lindex $midi_outdevlist $midi_outdev1] \
!         -command [list midi_popup $id $id.out1f.x1 midi_outdev1 \
!             $midi_outdevlist]
      pack $id.out1f.l1 $id.out1f.x1 -side left
  
          # output device 2
!     if {$longform && [llength $midi_outdevlist] > 2} {
          frame $id.out2f
          pack $id.out2f -side top
          label $id.out2f.l1 -text "output device 2:"
!         button $id.out2f.x1 -text [lindex $midi_outdevlist $midi_outdev2] \
              -command \
!             [list midi_popup $id $id.out2f.x1 midi_outdev2 $midi_outdevlist]
          pack $id.out2f.l1 $id.out2f.x1 -side left
      }
  
          # output device 3
!     if {$longform && [llength $midi_midi_outdevlist] > 3} {
          frame $id.out3f
          pack $id.out3f -side top
          label $id.out3f.l1 -text "output device 3:"
!         button $id.out3f.x1 -text [lindex $midi_outdevlist $midi_outdev3] \
              -command \
!             [list midi_popup $id $id.out3f.x1 midi_outdev3 $midi_outdevlist]
          pack $id.out3f.l1 $id.out3f.x1 -side left
      }
  
          # output device 4
!     if {$longform && [llength $midi_midi_outdevlist] > 4} {
          frame $id.out4f
          pack $id.out4f -side top
          label $id.out4f.l1 -text "output device 4:"
!         button $id.out4f.x1 -text [lindex $midi_outdevlist $midi_outdev4] \
              -command \
!             [list midi_popup $id $id.out4f.x1 midi_outdev4 $midi_outdevlist]
          pack $id.out4f.l1 $id.out4f.x1 -side left
      }
***************
*** 3918,3923 ****
  }
  
! proc pdtk_alsa_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
--- 3930,3935 ----
  }
  
! proc pdtk_alsa_midi_dialog {id indev1 indev2 indev3 indev4 \
!         outdev1 outdev2 outdev3 outdev4 longform alsa} {
      global midi_indev1 midi_indev2 midi_indev3 midi_indev4 
      global midi_outdev1 midi_outdev2 midi_outdev3 midi_outdev4
***************
*** 3933,3940 ****
      set midi_outdev3 $outdev3
      set midi_outdev4 $outdev4
!     set midi_indevlist $indevlist
!     set midi_outdevlist $outdevlist
!     set midi_alsain [llength $indevlist]
!     set midi_alsaout [llength $outdevlist]
      
      toplevel $id
--- 3945,3950 ----
      set midi_outdev3 $outdev3
      set midi_outdev4 $outdev4
!     set midi_alsain [llength $midi_indevlist]
!     set midi_alsaout [llength $midi_outdevlist]
      
      toplevel $id
***************
*** 3960,3997 ****
          # input device 1
      label $id.in1f.l1 -text "input device 1:"
!     button $id.in1f.x1 -text [lindex $indevlist $midi_indev1] \
!         -command [list midi_popup $id $id.in1f.x1 midi_indev1 $indevlist]
      pack $id.in1f.l1 $id.in1f.x1 -side left
  
          # input device 2
!     if {$longform && [llength $indevlist] > 2} {
          frame $id.in2f
          pack $id.in2f -side top
  
          label $id.in2f.l1 -text "input device 2:"
!         button $id.in2f.x1 -text [lindex $indevlist $midi_indev2] \
!             -command [list midi_popup $id $id.in2f.x1 midi_indev2 $indevlist]
          pack $id.in2f.l1 $id.in2f.x1 -side left
      }
  
          # input device 3
!     if {$longform && [llength $indevlist] > 3} {
          frame $id.in3f
          pack $id.in3f -side top
  
          label $id.in3f.l1 -text "input device 3:"
!         button $id.in3f.x1 -text [lindex $indevlist $midi_indev3] \
!             -command [list midi_popup $id $id.in3f.x1 midi_indev3 $indevlist]
          pack $id.in3f.l1 $id.in3f.x1 -side left
      }
  
          # input device 4
!     if {$longform && [llength $indevlist] > 4} {
          frame $id.in4f
          pack $id.in4f -side top
  
          label $id.in4f.l1 -text "input device 4:"
!         button $id.in4f.x1 -text [lindex $indevlist $midi_indev4] \
!             -command [list midi_popup $id $id.in4f.x1 midi_indev4 $indevlist]
          pack $id.in4f.l1 $id.in4f.x1 -side left
      }
--- 3970,4010 ----
          # input device 1
      label $id.in1f.l1 -text "input device 1:"
!     button $id.in1f.x1 -text [lindex $midi_indevlist $midi_indev1] \
!         -command [list midi_popup $id $id.in1f.x1 midi_indev1 $midi_indevlist]
      pack $id.in1f.l1 $id.in1f.x1 -side left
  
          # input device 2
!     if {$longform && [llength $midi_indevlist] > 2} {
          frame $id.in2f
          pack $id.in2f -side top
  
          label $id.in2f.l1 -text "input device 2:"
!         button $id.in2f.x1 -text [lindex $midi_indevlist $midi_indev2] \
!             -command [list midi_popup $id $id.in2f.x1 midi_indev2 \
!                 $midi_indevlist]
          pack $id.in2f.l1 $id.in2f.x1 -side left
      }
  
          # input device 3
!     if {$longform && [llength $midi_indevlist] > 3} {
          frame $id.in3f
          pack $id.in3f -side top
  
          label $id.in3f.l1 -text "input device 3:"
!         button $id.in3f.x1 -text [lindex $midi_indevlist $midi_indev3] \
!             -command [list midi_popup $id $id.in3f.x1 midi_indev3 \
!                 $midi_indevlist]
          pack $id.in3f.l1 $id.in3f.x1 -side left
      }
  
          # input device 4
!     if {$longform && [llength $midi_indevlist] > 4} {
          frame $id.in4f
          pack $id.in4f -side top
  
          label $id.in4f.l1 -text "input device 4:"
!         button $id.in4f.x1 -text [lindex $midi_indevlist $midi_indev4] \
!             -command [list midi_popup $id $id.in4f.x1 midi_indev4 \
!                 $midi_indevlist]
          pack $id.in4f.l1 $id.in4f.x1 -side left
      }
***************
*** 4002,4039 ****
      pack $id.out1f -side top
      label $id.out1f.l1 -text "output device 1:"
!     button $id.out1f.x1 -text [lindex $outdevlist $midi_outdev1] \
!         -command [list midi_popup $id $id.out1f.x1 midi_outdev1 $outdevlist]
      pack $id.out1f.l1 $id.out1f.x1 -side left
  
          # output device 2
!     if {$longform && [llength $indevlist] > 2} {
          frame $id.out2f
          pack $id.out2f -side top
          label $id.out2f.l1 -text "output device 2:"
!         button $id.out2f.x1 -text [lindex $outdevlist $midi_outdev2] \
              -command \
!             [list midi_popup $id $id.out2f.x1 midi_outdev2 $outdevlist]
          pack $id.out2f.l1 $id.out2f.x1 -side left
      }
  
          # output device 3
!     if {$longform && [llength $indevlist] > 3} {
          frame $id.out3f
          pack $id.out3f -side top
          label $id.out3f.l1 -text "output device 3:"
!         button $id.out3f.x1 -text [lindex $outdevlist $midi_outdev3] \
              -command \
!             [list midi_popup $id $id.out3f.x1 midi_outdev3 $outdevlist]
          pack $id.out3f.l1 $id.out3f.x1 -side left
      }
  
          # output device 4
!     if {$longform && [llength $indevlist] > 4} {
          frame $id.out4f
          pack $id.out4f -side top
          label $id.out4f.l1 -text "output device 4:"
!         button $id.out4f.x1 -text [lindex $outdevlist $midi_outdev4] \
              -command \
!             [list midi_popup $id $id.out4f.x1 midi_outdev4 $outdevlist]
          pack $id.out4f.l1 $id.out4f.x1 -side left
      }
--- 4015,4053 ----
      pack $id.out1f -side top
      label $id.out1f.l1 -text "output device 1:"
!     button $id.out1f.x1 -text [lindex $midi_outdevlist $midi_outdev1] \
!         -command [list midi_popup $id $id.out1f.x1 midi_outdev1 \
!             $midi_outdevlist]
      pack $id.out1f.l1 $id.out1f.x1 -side left
  
          # output device 2
!     if {$longform && [llength $midi_outdevlist] > 2} {
          frame $id.out2f
          pack $id.out2f -side top
          label $id.out2f.l1 -text "output device 2:"
!         button $id.out2f.x1 -text [lindex $midi_outdevlist $midi_outdev2] \
              -command \
!             [list midi_popup $id $id.out2f.x1 midi_outdev2 $midi_outdevlist]
          pack $id.out2f.l1 $id.out2f.x1 -side left
      }
  
          # output device 3
!     if {$longform && [llength $midi_outdevlist] > 3} {
          frame $id.out3f
          pack $id.out3f -side top
          label $id.out3f.l1 -text "output device 3:"
!         button $id.out3f.x1 -text [lindex $midi_outdevlist $midi_outdev3] \
              -command \
!             [list midi_popup $id $id.out3f.x1 midi_outdev3 $midi_outdevlist]
          pack $id.out3f.l1 $id.out3f.x1 -side left
      }
  
          # output device 4
!     if {$longform && [llength $midi_outdevlist] > 4} {
          frame $id.out4f
          pack $id.out4f -side top
          label $id.out4f.l1 -text "output device 4:"
!         button $id.out4f.x1 -text [lindex $midi_outdevlist $midi_outdev4] \
              -command \
!             [list midi_popup $id $id.out4f.x1 midi_outdev4 $midi_outdevlist]
          pack $id.out4f.l1 $id.out4f.x1 -side left
      }

Index: s_path.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_path.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -C2 -d -r1.10 -r1.11
*** s_path.c	15 Aug 2006 04:54:15 -0000	1.10
--- s_path.c	8 Sep 2006 23:45:31 -0000	1.11
***************
*** 343,347 ****
  gotone:
      close (fd);
!     glob_evalfile(0, gensym((char*)realname), gensym(dirbuf));
  }
  
--- 343,347 ----
  gotone:
      close (fd);
!     glob_evalfile(0, gensym((char*)basename), gensym(dirbuf));
  }
  

Index: configure.in
===================================================================
RCS file: /cvsroot/pure-data/pd/src/configure.in,v
retrieving revision 1.20
retrieving revision 1.21
diff -C2 -d -r1.20 -r1.21
*** configure.in	24 Aug 2006 15:23:51 -0000	1.20
--- configure.in	8 Sep 2006 23:45:30 -0000	1.21
***************
*** 252,256 ****
      if test `uname -r` = 7.9.0;
      then
!         MORECFLAGS="-DPA_BIG_ENDIAN -Wno-error"
      	EXTERNTARGET=d_ppc
      else
--- 252,256 ----
      if test `uname -r` = 7.9.0;
      then
!         MORECFLAGS="-DMACOSX3 -DPA_BIG_ENDIAN -Wno-error"
      	EXTERNTARGET=d_ppc
      else

Index: CHANGELOG.txt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/CHANGELOG.txt,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** CHANGELOG.txt	11 Aug 2006 20:09:07 -0000	1.4
--- CHANGELOG.txt	8 Sep 2006 23:45:30 -0000	1.5
***************
*** 1,4 ****
  This file describes implementation and API changes; stuff more visible to the
! user appears in the "release notes" instead.
  
  0.40.0
--- 1,5 ----
  This file describes implementation and API changes; stuff more visible to the
! user appears in the "release notes" instead.  See the bottom of this file
! for original notes on source stype and organization.
  
  0.40.0
***************
*** 120,122 ****
--- 121,249 ----
  make an "nrt" flag so mac can disable pthread_setschedparam call if yu want.
  
+ ------------------- original source notes -------------
+ 
+ 0.  structure definition roadmap.  First, the containment tree of things
+ that can be sent messages ("pure data").  (note that t_object and t_text,
+ and t_graph and t_canvas, should be unified...)
+ 
+ ------------ BFFORE 0.35: ---------
+ m_pd.h	    t_pd    	    	    anything with a class
+     	    	t_gobj	    	    "graphic object"
+     	    	    t_text  	    text object
+ g_canvas.h  
+     	    	    t_glist 	    list of graphic objects
+ g_canvas.c  	    	t_canvas    Pd "document"
+ 
+ ------------ AFTER 0.35: ---------
+ m_pd.h	    t_pd    	    	    anything with a class
+     	    	t_gobj	    	    "graphic object"
+     	    	    t_text  	    patchable object, AKA t_object
+ g_canvas.h     	    	t_glist     list of graphic objects, AKA t_canvas
+ 
+ ... and other structures:
+ g_canvas.h  t_selection -- linked list of gobjs
+     	    t_editor -- editor state, allocated for visible glists
+ m_imp.h     t_methodentry -- method handler
+     	    t_widgetbehavior -- class-dependent editing behavior for gobjs
+     	    t_parentwidgetbehavior -- objects' behavior on parent window
+     	    t_class -- method definitions, instance size, flags, etc.
+ 
+ 
+ 1.  C coding style.  The source should pass most "warnings" of C compilers
+ (-Wall on linux, for instance; see the makefile.)  Some informalities
+ are intentional, for instance the loose use of function prototypes (see
+ below) and uncast conversions from longer to shorter numerical formats.
+ The code doesn't respect "const" yet.
+ 
+ 1.1.  Prefixes in structure elements.  The names of structure elements always
+ have a K&R-style prefix, as in ((t_atom)x)->a_type, where the "a_" prefix
+ indicates "atom."  This is intended to enhance readability (although the
+ convention arose from a limitation of early C compilers.)  Common prefixes are
+ "w_" (word), "a_" (atom), "s_" (symbol), "ob_" (object), "te_" (text object),
+ "g_" (graphical object), and "gl_" (glist, a list of graphical objects).  Also,
+ global symbols sometimes get prefixes, as in "s_float" (the symbol whose string
+ is "float).  Typedefs are prefixed by "t_".  Most _private_ structures, i.e.,
+ structures whose definitions appear in a ".c" file, are prefixed by "x_".
+ 
+ 1.2.   Function arguments.  Many functions take as their first
+ argument a pointer named "x", which is a pointer to a structure suggested
+ by the function prefix; e.g., canvas_dirty(x, n) where "x" points to a canvas
+ (t_canvas *x).
+ 
+ 1.3.  Function Prototypes.  Functions which are used in at least two different
+ files (besides where they originate) are prototyped in the appropriate include
+ file. Functions which are provided in one file and used in one other are
+ prototyped right where they are used.  This is just to keep the size of the
+ ".h" files down for readability's sake.
+ 
+ 1.4.  Whacko private terminology.  Some terms are lifted from other historically
+ relevant programs, notably "ugen" (which is just a tilde object; see d_ugen.c.)
+ 
+ 1.5.  Spacing.  Tabs are 8 spaces; indentation is 4 spaces.  Indenting
+ curly brackets are by themselves on their own lines, as in:
+ 
+     if (x)
+     {
+ 	x = 0;
+     }
+ 
+ Lines should fit within 80 spaces.
+ 
+ 2.  Max patch-level compatibility.  "Import" and "Export" functions are
+ provided which aspire to strict compatibility with 0.26 patches (ISPW version),
+ but which don't get anywhere close to that yet.  Where possible, features
+ appearing on the Mac will comeday also be provided; for instance, the connect
+ message on the Mac offers segmented patch cords; these will devolve into
+ straight lines in Pd.  Many, many UI objects in Opcode Max will not appear in
+ Pd, at least at first.
+ 
+ 3.  Compatibility with Max 0.26 "externs", i.e., source-level compatibility. Pd
+ objects follow the style of 0.26 objects as closely as possible, making
+ exceptions in cases where the 0.26 model is clearly deficient.  These are:
+ 
+ 3.1.  Anything involving the MacIntosh "Handle" data type is changed to use
+ char * or void * instead.
+ 
+ 3.2.  Pd passes true single-precision floating-point arguments to methods;
+ Max uses double.
+ Typedefs are provided:
+     t_floatarg, t_intarg for arguments passed by the message system
+     t_float, t_int for the "word" union (in atoms, for example.)
+ 
+ 3.3.  Badly-named entities got name changes:
+ 
+     w_long --> w_int (in the "union word" structure)
+ 
+ 3.4.  Many library functions are renamed and have different arguments;
+ I hope to provide an include file to alias them when compiling Max externs.
+ 
+ 4.  Function name prefixes.
+ Many function names have prefixes which indicate what "package" they belong
+ to.  The exceptions are:
+     typedmess, vmess, getfn, gensym (m_class.c)
+     getbytes, freebytes, resizebytes (m_memory.c)
+     post, error, bug (s_print.c)
+ which are all frequently called and which don't fit into simple categories.
+ Important packages are:
+ (pd-gui:)   pdgui -- everything
+ (pd:)	    pd -- functions common to all "pd" objects
+     	    obj -- fuctions common to all "patchable" objects ala Max
+     	    sys -- "system" level functions
+     	    binbuf -- functions manipulating binbufs
+     	    class -- functions manipulating classes
+     	    (other) -- functions common to the named Pd class
+ 
+ 5. Source file prefixes. 
+ PD:
+ s    system interface
+ m    message system
+ g    graphics stuff
+ d    DSP objects
+ x    control objects
+ z    other
+ 
+ PD-GUI:
+ t    TK front end
+ 
+ 
  

Index: g_canvas.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_canvas.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** g_canvas.c	15 Aug 2006 04:54:15 -0000	1.15
--- g_canvas.c	8 Sep 2006 23:45:30 -0000	1.16
***************
*** 73,77 ****
              {
                  char tbuf[1024];
!                 sprintf(tbuf, "{%s .x%lx} ", gl->gl_name->s_name,
                      (t_int)canvas);
                  strcat(sbuf, tbuf);
--- 73,77 ----
              {
                  char tbuf[1024];
!                 sprintf(tbuf, "{{%s} .x%lx} ", gl->gl_name->s_name,
                      (t_int)canvas);
                  strcat(sbuf, tbuf);

Index: g_vslider.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_vslider.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** g_vslider.c	16 Aug 2005 04:06:28 -0000	1.5
--- g_vslider.c	8 Sep 2006 23:45:30 -0000	1.6
***************
*** 508,513 ****
      int bflcol[]={-262144, -1, -1};
      int w=IEM_GUI_DEFAULTSIZE, h=IEM_SL_DEFAULTSIZE;
!     int lilo=0, f=0, ldx=0, ldy=-8;
!     int fs=8, v=0, steady=1;
      double min=0.0, max=(double)(IEM_SL_DEFAULTSIZE-1);
      char str[144];
--- 508,513 ----
      int bflcol[]={-262144, -1, -1};
      int w=IEM_GUI_DEFAULTSIZE, h=IEM_SL_DEFAULTSIZE;
!     int lilo=0, f=0, ldx=0, ldy=-9;
!     int fs=10, v=0, steady=1;
      double min=0.0, max=(double)(IEM_SL_DEFAULTSIZE-1);
      char str[144];

Index: g_template.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_template.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** g_template.c	15 Aug 2006 21:57:29 -0000	1.16
--- g_template.c	8 Sep 2006 23:45:30 -0000	1.17
***************
*** 95,99 ****
          {
              pd_error(x, "%s: no such type", newtypesym->s_name);
!             return (0);
          }
          newn = (oldn = x->t_n) + 1;
--- 95,99 ----
          {
              pd_error(x, "%s: no such type", newtypesym->s_name);
!             goto bad;
          }
          newn = (oldn = x->t_n) + 1;
***************
*** 515,519 ****
      if ((x = (t_template *)pd_findbyclass(templatesym, template_class)))
      {
!         t_template *y = template_new(&s_, argc, argv);
              /* If the new template is the same as the old one,
              there's nothing to do.  */
--- 515,519 ----
      if ((x = (t_template *)pd_findbyclass(templatesym, template_class)))
      {
!         t_template *y = template_new(&s_, argc, argv), *y2;
              /* If the new template is the same as the old one,
              there's nothing to do.  */
***************
*** 532,536 ****
                  template_conform(x, y);
                  pd_free(&x->t_pdobj);
!                 template_new(templatesym, argc, argv);
              }
          }
--- 532,537 ----
                  template_conform(x, y);
                  pd_free(&x->t_pdobj);
!                 y2 = template_new(templatesym, argc, argv);
!                 y2->t_list = 0;
              }
          }
***************
*** 657,660 ****
--- 658,662 ----
          /* get off the template's list */
      t_template *t = x->x_template;
+     t_gtemplate *y;
      if (x == t->t_list)
      {
***************
*** 664,674 ****
                  /* if we were first on the list, and there are others on
                  the list, make a new template corresponding to the new
!                 first-on-list and replace teh existing template with it. */
!             t_template *z = template_new(&s_, x->x_argc, x->x_argv);
              template_conform(t, z);
              pd_free(&t->t_pdobj);
              pd_free(&z->t_pdobj);
!             z = template_new(x->x_sym, x->x_argc, x->x_argv);
              z->t_list = x->x_next;
          }
          else t->t_list = 0;
--- 666,679 ----
                  /* if we were first on the list, and there are others on
                  the list, make a new template corresponding to the new
!                 first-on-list and replace the existing template with it. */
!             t_template *z = template_new(&s_,
!                 x->x_next->x_argc, x->x_next->x_argv);
              template_conform(t, z);
              pd_free(&t->t_pdobj);
              pd_free(&z->t_pdobj);
!             z = template_new(x->x_sym, x->x_next->x_argc, x->x_next->x_argv);
              z->t_list = x->x_next;
+             for (y = z->t_list; y ; y = y->x_next)
+                 y->x_template = z;
          }
          else t->t_list = 0;

Index: g_hdial.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_hdial.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** g_hdial.c	16 Aug 2005 04:06:28 -0000	1.6
--- g_hdial.c	8 Sep 2006 23:45:30 -0000	1.7
***************
*** 547,552 ****
      int bflcol[]={-262144, -1, -1};
      int a=IEM_GUI_DEFAULTSIZE, on=0, f=0;
!     int ldx=0, ldy=-6, chg=1, num=8;
!     int fs=8;
      int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME, fthold=IEM_BNG_DEFAULTHOLDFLASHTIME;
      char str[144];
--- 547,552 ----
      int bflcol[]={-262144, -1, -1};
      int a=IEM_GUI_DEFAULTSIZE, on=0, f=0;
!     int ldx=0, ldy=-8, chg=1, num=8;
!     int fs=10;
      int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME, fthold=IEM_BNG_DEFAULTHOLDFLASHTIME;
      char str[144];

Index: makefile.in
===================================================================
RCS file: /cvsroot/pure-data/pd/src/makefile.in,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** makefile.in	24 Aug 2006 15:23:52 -0000	1.13
--- makefile.in	8 Sep 2006 23:45:30 -0000	1.14
***************
*** 142,145 ****
--- 142,146 ----
  	cd ../extra/lrshift~;make @EXTERNTARGET@
  	cd ../extra/pique;make @EXTERNTARGET@
+ 	cd ../extra/sigmund~;make @EXTERNTARGET@
  
  BINARYMODE=@binarymode@

Index: notes.txt
===================================================================
RCS file: /cvsroot/pure-data/pd/src/notes.txt,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** notes.txt	24 Aug 2006 15:23:52 -0000	1.29
--- notes.txt	8 Sep 2006 23:45:30 -0000	1.30
***************
*** 1,9 ****
  ---------------- dolist --------------------
  
- fix:
- look again at array vis/invis conundrum, g_template.c
- subpatches appear at top left of screen regardless
- $1-args not evaluated (z.pd)
- 
  test:
  compile on various versions of linux
--- 1,4 ----
***************
*** 12,22 ****
    check the right-click-on-empty-canvas
    MIDI I/O (inc. sysex)
  mac:
-   text paste broken
    clicking on windows seems sometimes not to open them
  what does OSX do when jack is compiled into Pd but not installed??
  turn on paMacCore_ChangeDeviceParameters for mac (pa_mac_core.h)
  
! done:
  openpanel directory
  big-soundfile support
--- 7,19 ----
    check the right-click-on-empty-canvas
    MIDI I/O (inc. sysex)
+   "-audiodev" with no args in registry can't start up?
  mac:
    clicking on windows seems sometimes not to open them
  what does OSX do when jack is compiled into Pd but not installed??
  turn on paMacCore_ChangeDeviceParameters for mac (pa_mac_core.h)
+ Gnome: why don't windows pop up when clicked on?
  
! doc:
! declare help window
  openpanel directory
  big-soundfile support
***************
*** 24,29 ****
  infrastructure for adding externs in non-ascii languages
  '$' patch (multiple dollar-sign expansion)
- 
- doc:
  -x flag for curves
  object list
--- 21,24 ----
***************
*** 36,88 ****
  list length
  send inlet
  
  problems:
  open_via_path call in d_soundfile.c isn't threadsafe
- Jack interface never goes idle? (Michael Berkowski, Pd list Aug 11 2006)
  crashed Pd putting vec and template in wrong order in array element of struct
- z.pd - list to numbox misbehaves (inlet and object but object is noinlet)
  floor, ciel functions in expr misdeclared
- graphics updates in data sometimes don't happen?
  graph names don't appear until graph moved? (invis/vis on new array/rename)
- flag to defeat .pdsettings
- '{' bug
- "-audiodev" with no args in registry can't start up in MSW
- "save as" with spaces in filename still messes up
  don't filter locked click() through getrect
- better scalar hit detection (getrect is too greedy)
  when retyping abstractions, offer to save dirty one
  should linux stop grabbing focus on vis?  Is there a way to detect whether
      the mouse is in a window when it opens?
- TK commands to nonexistent windows? (occasionally still happens)
  arrays that don't fit in bounds don't update (same as red rectangle problem?)
  look in d_resample.pd to understand inlet~ upsampling...
  patcher inlets don't deal with scalars (zbug.pd)
  check if there's a problem loading libs on startup if superuser
- '[' in numbox label breaks it (Yury Sept. 3)
  read xx.txt in "bad" gives warnings
- qlist - 'next 1' seems not to work
  Krzysztof's qlist_next reentrancy bug
  don't draw in/outlets on gui objects in graph-on-parent
- reasonable font size default for GUIs
- moving a bang toward top of window creates problem (invisible label)
  get rid of messages causing renaming; try to prevent patches closing themselves.
  scofo reports error on reading score1.txt
  loading e-mailed patches without removing headers crashes pd
- pd $1 bug ($1 is saved as it was evaluated, not as '$1')
  check if _vsnprintf with zero argument in windows works any better...
  detect adc~ and dac~ reblocking
  
  features:
! sprout inlet for "route", "sel" if one arg; also send
! list length and nth functions
! poly inlet to turn stealing on/off
! .dll to .msw32 or .pd_msw (then offer .pd_msw64, .pd_lnx64, etc.)
  integrate video into tilde objects
  graph "hide name" flag controllable from dialog
! flag to suppress scrollbars in canvases
  fix copyright notices
  pixel font sizes
  pd to find running ones (pd -new to defeat)
- rename windowname-pd instead of pd-windowname
  tables:
      if there's just one array, don't do stringent hit check.
--- 31,80 ----
  list length
  send inlet
+ bug fix: list to numbox (inlet and object but object is noinlet)
+ bug fix: pd $1 bug ($1 is saved as it was evaluated, not as '$1')
+ flag to defeat .pdsettings
+ '{' dropped better
+ '[' in numbox label breaks it (Yury Sept. 3)
+ more reasonable font size default for GUIs
  
  problems:
+ help browser (offer both versions?)
+ look again at array vis/invis conundrum, g_template.c
+ TK commands to nonexistent windows? (occasionally still happens)
+ still can't detect when a window is moved or resized
  open_via_path call in d_soundfile.c isn't threadsafe
  crashed Pd putting vec and template in wrong order in array element of struct
  floor, ciel functions in expr misdeclared
  graph names don't appear until graph moved? (invis/vis on new array/rename)
  don't filter locked click() through getrect
  when retyping abstractions, offer to save dirty one
  should linux stop grabbing focus on vis?  Is there a way to detect whether
      the mouse is in a window when it opens?
  arrays that don't fit in bounds don't update (same as red rectangle problem?)
  look in d_resample.pd to understand inlet~ upsampling...
  patcher inlets don't deal with scalars (zbug.pd)
  check if there's a problem loading libs on startup if superuser
  read xx.txt in "bad" gives warnings
  Krzysztof's qlist_next reentrancy bug
  don't draw in/outlets on gui objects in graph-on-parent
  get rid of messages causing renaming; try to prevent patches closing themselves.
  scofo reports error on reading score1.txt
  loading e-mailed patches without removing headers crashes pd
  check if _vsnprintf with zero argument in windows works any better...
  detect adc~ and dac~ reblocking
  
  features:
! flag to defeat .pdsettings
! externs able to usurp built-ins (+mem alignment for SSE)
! replace gatom_escapit with a quoting mechanism (handle '[', spaces, etc.)
! sprout inlet for "route", "sel" if one arg
! more list functions (see x_list.c)
! poly inlet to turn stealing on/off, plus mode to handle note-with-duration
  integrate video into tilde objects
  graph "hide name" flag controllable from dialog
! "installation mode" - turn off Pd window, accelerators, menu bars, scrollbars
  fix copyright notices
  pixel font sizes
  pd to find running ones (pd -new to defeat)
  tables:
      if there's just one array, don't do stringent hit check.
***************
*** 93,97 ****
  think of a way to embed abstractions in a patch
  make watchdog work for MACOSX
- search path to include both calling patch and abstraction, if different
  pasting should look at current mouse location
  delete-in-rectangle message to Pds
--- 85,88 ----
***************
*** 101,105 ****
  expr to parse exponential notation
  pipe to handle symbols&pointers (just takes floats now???)
! use snd_pcm_poll_descriptors_count, etc., to set alsa FDs CLOEXEC?
  editing:
      "enter" into object box to create new one (also, change border? forking?)
--- 92,96 ----
  expr to parse exponential notation
  pipe to handle symbols&pointers (just takes floats now???)
! fix "system" (google CLOEXEC alsa)
  editing:
      "enter" into object box to create new one (also, change border? forking?)
***************
*** 113,117 ****
  
  data:
! hook for table mousing
  data to save as succession of "list" messages that textfile can store, etc.
  implement list field (GOP or subwindow, perhaps GOP could suppress bounds rect?)
--- 104,108 ----
  
  data:
! hooks for table mousing, other changes (scalars?)
  data to save as succession of "list" messages that textfile can store, etc.
  implement list field (GOP or subwindow, perhaps GOP could suppress bounds rect?)
***************
*** 121,130 ****
  vget, vset traversal objects
  cursor to show (x, y) location
! typing at drawnumbers
! test and debug list elements of templates
  sublists should display on parent if desired? (new drawing instruction)
  sublists seem not to handle canvas allocation right (get.pd->pointer.pd bug)
- scalar hook to catch the mouse
- protect against "plots" going away while you drag on them
  append doesn't do symbols yet.
  
--- 112,119 ----
  vget, vset traversal objects
  cursor to show (x, y) location
! improve typing at drawnumbers
  sublists should display on parent if desired? (new drawing instruction)
+ test and debug list elements of templates
  sublists seem not to handle canvas allocation right (get.pd->pointer.pd bug)
  append doesn't do symbols yet.
  
***************
*** 137,141 ****
  security module system in 2.6 - see the kernel module replacing jackstart
  signal inlets to sense signals; fix +~ etc, vcf~, biquad~, other filters
- mess with RME ALSA some more; ALSA readn doesn't work yet; use mmap?
  try to reduce startup time
  investigate gcc 3.3 warnings; try to reinstate -fstrict-aliasing
--- 126,129 ----
***************
*** 145,149 ****
  show results of opening audio and MIDI on dialogs
  windows escape from control-C
- settable netsend and netreceive port numbers
  new: abs~, nexttick~, extend threshold~ and snapshot~ (vthreshold~ etc)
  incorporate pddp doc
--- 133,136 ----
***************
*** 154,176 ****
  netreceive (and netsend?) message to set port number
  graph_vis() to decorate graphs when they're toplevel (parent_glist == 0)
- suita.chopin.edu.pl/~czaja/miXed/externs/xeq.html -- MIDI file reader
  in glist_delete, consider why this can't be just "vis 0" -- why do we need it?
  closebang
  check that -blocksize really reflects in audiobuf calc for Hammerfall
  makefile to have make install depend on make local.
- Float method for random
  put in something for tilde order forcing
  extensible "toolbar" so people can add external GUI objects
  variable send and receive -- check how max/MSP does it?
  number boxes to darken for typing and/or received messages
- pique~ and fiddle~ unification (notice pique filtering is different!)
  new message box look
  figure out what to do when "pd sym" conflicts with window title as in Pluton?
  bonk~ file path handling
- unify arrays and garrays
  dialog to give values of $1, ... for the canvas
  bang at end of line~, tabwrite~, etc.
  recording to part of a table
- printout to main window
  should sys_bail kill all "threads" on the way out?
  check a_valid usage
--- 141,158 ----
***************
*** 187,313 ****
  obj_new should do a longjmp on out-of-memory
  
- --------------------- source notes --------------------------
- 
- 0.  structure definition roadmap.  First, the containment tree of things
- that can be sent messages ("pure data").  (note that t_object and t_text,
- and t_graph and t_canvas, should be unified...)
- 
- ------------ BFFORE 0.35: ---------
- m_pd.h	    t_pd    	    	    anything with a class
-     	    	t_gobj	    	    "graphic object"
-     	    	    t_text  	    text object
- g_canvas.h  
-     	    	    t_glist 	    list of graphic objects
- g_canvas.c  	    	t_canvas    Pd "document"
- 
- ------------ AFTER 0.35: ---------
- m_pd.h	    t_pd    	    	    anything with a class
-     	    	t_gobj	    	    "graphic object"
-     	    	    t_text  	    patchable object, AKA t_object
- g_canvas.h     	    	t_glist     list of graphic objects, AKA t_canvas
- 
- ... and other structures:
- g_canvas.h  t_selection -- linked list of gobjs
-     	    t_editor -- editor state, allocated for visible glists
- m_imp.h     t_methodentry -- method handler
-     	    t_widgetbehavior -- class-dependent editing behavior for gobjs
-     	    t_parentwidgetbehavior -- objects' behavior on parent window
-     	    t_class -- method definitions, instance size, flags, etc.
- 
- 
- 1.  C coding style.  The source should pass most "warnings" of C compilers
- (-Wall on linux, for instance; see the makefile.)  Some informalities
- are intentional, for instance the loose use of function prototypes (see
- below) and uncast conversions from longer to shorter numerical formats.
- The code doesn't respect "const" yet.
- 
- 1.1.  Prefixes in structure elements.  The names of structure elements always
- have a K&R-style prefix, as in ((t_atom)x)->a_type, where the "a_" prefix
- indicates "atom."  This is intended to enhance readability (although the
- convention arose from a limitation of early C compilers.)  Common prefixes are
- "w_" (word), "a_" (atom), "s_" (symbol), "ob_" (object), "te_" (text object),
- "g_" (graphical object), and "gl_" (glist, a list of graphical objects).  Also,
- global symbols sometimes get prefixes, as in "s_float" (the symbol whose string
- is "float).  Typedefs are prefixed by "t_".  Most _private_ structures, i.e.,
- structures whose definitions appear in a ".c" file, are prefixed by "x_".
- 
- 1.2.   Function arguments.  Many functions take as their first
- argument a pointer named "x", which is a pointer to a structure suggested
- by the function prefix; e.g., canvas_dirty(x, n) where "x" points to a canvas
- (t_canvas *x).
- 
- 1.3.  Function Prototypes.  Functions which are used in at least two different
- files (besides where they originate) are prototyped in the appropriate include
- file. Functions which are provided in one file and used in one other are
- prototyped right where they are used.  This is just to keep the size of the
- ".h" files down for readability's sake.
- 
- 1.4.  Whacko private terminology.  Some terms are lifted from other historically
- relevant programs, notably "ugen" (which is just a tilde object; see d_ugen.c.)
- 
- 1.5.  Spacing.  Tabs are 8 spaces; indentation is 4 spaces.  Indenting
- curly brackets are by themselves on their own lines, as in:
- 
-     if (x)
-     {
- 	x = 0;
-     }
- 
- Lines should fit within 80 spaces.
- 
- 2.  Max patch-level compatibility.  "Import" and "Export" functions are
- provided which aspire to strict compatibility with 0.26 patches (ISPW version),
- but which don't get anywhere close to that yet.  Where possible, features
- appearing on the Mac will comeday also be provided; for instance, the connect
- message on the Mac offers segmented patch cords; these will devolve into
- straight lines in Pd.  Many, many UI objects in Opcode Max will not appear in
- Pd, at least at first.
- 
- 3.  Compatibility with Max 0.26 "externs", i.e., source-level compatibility. Pd
- objects follow the style of 0.26 objects as closely as possible, making
- exceptions in cases where the 0.26 model is clearly deficient.  These are:
- 
- 3.1.  Anything involving the MacIntosh "Handle" data type is changed to use
- char * or void * instead.
- 
- 3.2.  Pd passes true single-precision floating-point arguments to methods;
- Max uses double.
- Typedefs are provided:
-     t_floatarg, t_intarg for arguments passed by the message system
-     t_float, t_int for the "word" union (in atoms, for example.)
- 
- 3.3.  Badly-named entities got name changes:
- 
-     w_long --> w_int (in the "union word" structure)
- 
- 3.4.  Many library functions are renamed and have different arguments;
- I hope to provide an include file to alias them when compiling Max externs.
- 
- 4.  Function name prefixes.
- Many function names have prefixes which indicate what "package" they belong
- to.  The exceptions are:
-     typedmess, vmess, getfn, gensym (m_class.c)
-     getbytes, freebytes, resizebytes (m_memory.c)
-     post, error, bug (s_print.c)
- which are all frequently called and which don't fit into simple categories.
- Important packages are:
- (pd-gui:)   pdgui -- everything
- (pd:)	    pd -- functions common to all "pd" objects
-     	    obj -- fuctions common to all "patchable" objects ala Max
-     	    sys -- "system" level functions
-     	    binbuf -- functions manipulating binbufs
-     	    class -- functions manipulating classes
-     	    (other) -- functions common to the named Pd class
- 
- 5. Source file prefixes. 
- PD:
- s    system interface
- m    message system
- g    graphics stuff
- d    DSP objects
- x    control objects
- z    other
- 
- PD-GUI:
- t    TK front end
- 
--- 169,170 ----

Index: s_audio_alsa.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio_alsa.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** s_audio_alsa.c	18 May 2005 04:28:51 -0000	1.7
--- s_audio_alsa.c	8 Sep 2006 23:45:30 -0000	1.8
***************
*** 38,41 ****
--- 38,43 ----
  static void alsa_checkiosync( void);
  static void alsa_numbertoname(int iodev, char *devname, int nchar);
+ static int alsa_jittermax;
+ #define ALSA_DEFJITTERMAX 3
  
      /* don't assume we can turn all 31 bits when doing float-to-fix; 
***************
*** 241,244 ****
--- 243,247 ----
      alsa_buf_samps = nfrags * frag_size;
      alsa_nindev = alsa_noutdev = 0;
+     alsa_jittermax = ALSA_DEFJITTERMAX;
  
      if (sys_verbose)
***************
*** 656,659 ****
--- 659,663 ----
          {
              post("tried but couldn't sync A/D/A");
+             alsa_jittermax += 1;
              return;
          }
***************
*** 713,717 ****
              at a time, we just ask that the spread be not more than 3/4
              of a block.  */
!         if (maxphase <= minphase + (3 * DEFDACBLKSIZE / 4))
                  break;
  
--- 717,721 ----
              at a time, we just ask that the spread be not more than 3/4
              of a block.  */
!         if (maxphase <= minphase + (alsa_jittermax * (DEFDACBLKSIZE / 4)))
                  break;
  

Index: x_midi.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/x_midi.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** x_midi.c	31 Dec 2005 20:55:25 -0000	1.3
--- x_midi.c	8 Sep 2006 23:45:31 -0000	1.4
***************
*** 649,653 ****
          SETFLOAT(at, portno);
          SETFLOAT(at+1, SysMsg);
!         pd_list(midirealtimein_sym->s_thing, &s_list, 1, at);
      }
  }
--- 649,653 ----
          SETFLOAT(at, portno);
          SETFLOAT(at+1, SysMsg);
!         pd_list(midirealtimein_sym->s_thing, &s_list, 2, at);
      }
  }

Index: g_hslider.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_hslider.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** g_hslider.c	16 Aug 2005 04:06:28 -0000	1.5
--- g_hslider.c	8 Sep 2006 23:45:30 -0000	1.6
***************
*** 527,532 ****
      int bflcol[]={-262144, -1, -1};
      int w=IEM_SL_DEFAULTSIZE, h=IEM_GUI_DEFAULTSIZE;
!     int lilo=0, ldx=-2, ldy=-6, f=0, v=0, steady=1;
!     int fs=8;
      double min=0.0, max=(double)(IEM_SL_DEFAULTSIZE-1);
      char str[144];
--- 527,532 ----
      int bflcol[]={-262144, -1, -1};
      int w=IEM_SL_DEFAULTSIZE, h=IEM_GUI_DEFAULTSIZE;
!     int lilo=0, ldx=-2, ldy=-8, f=0, v=0, steady=1;
!     int fs=10;
      double min=0.0, max=(double)(IEM_SL_DEFAULTSIZE-1);
      char str[144];

Index: s_audio.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_audio.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** s_audio.c	3 Jun 2006 19:13:07 -0000	1.9
--- s_audio.c	8 Sep 2006 23:45:30 -0000	1.10
***************
*** 171,175 ****
      int i, *ip;
      int defaultchannels = SYS_DEFAULTCH;
!     int inchans, outchans;
      int realinchans[MAXAUDIOINDEV], realoutchans[MAXAUDIOOUTDEV];
  
--- 171,176 ----
      int i, *ip;
      int defaultchannels = SYS_DEFAULTCH;
!     int inchans, outchans, nrealindev, nrealoutdev;
!     int realindev[MAXAUDIOINDEV], realoutdev[MAXAUDIOOUTDEV];
      int realinchans[MAXAUDIOINDEV], realoutchans[MAXAUDIOOUTDEV];
  
***************
*** 297,304 ****
      
          /* count total number of input and output channels */
!     for (i = inchans = 0; i < naudioindev; i++)
!         inchans += (realinchans[i] = (chindev[i] > 0 ? chindev[i] : 0));
!     for (i = outchans = 0; i < naudiooutdev; i++)
!         outchans += (realoutchans[i] = (choutdev[i] > 0 ? choutdev[i] : 0));
          /* if no input or output devices seem to have been specified,
          this really means just disable audio, which we now do. */
--- 298,317 ----
      
          /* count total number of input and output channels */
!     for (i = nrealindev = inchans = 0; i < naudioindev; i++)
!         if (chindev[i] > 0)
!     {
!         realinchans[nrealindev] = chindev[i];
!         realindev[nrealindev] = audioindev[i];
!         inchans += chindev[i];
!         nrealindev++;
!     }
!     for (i = nrealoutdev = outchans = 0; i < naudiooutdev; i++)
!         if (choutdev[i] > 0)
!     {
!         realoutchans[nrealoutdev] = choutdev[i];
!         realoutdev[nrealoutdev] = audiooutdev[i];
!         outchans += choutdev[i];
!         nrealoutdev++;
!     }
          /* if no input or output devices seem to have been specified,
          this really means just disable audio, which we now do. */
***************
*** 323,328 ****
  #ifdef USEAPI_JACK
          if (sys_audioapi == API_JACK) 
!             jack_open_audio((naudioindev > 0 ? realinchans[0] : 0),
!                             (naudiooutdev > 0 ? realoutchans[0] : 0), rate);
  
          else
--- 336,341 ----
  #ifdef USEAPI_JACK
          if (sys_audioapi == API_JACK) 
!             jack_open_audio((nrealindev > 0 ? realinchans[0] : 0),
!                 (nrealoutdev > 0 ? realoutchans[0] : 0), rate);
  
          else
***************
*** 330,335 ****
  #ifdef USEAPI_OSS
          if (sys_audioapi == API_OSS)
!             oss_open_audio(naudioindev, audioindev, nchindev, realinchans,
!                     naudiooutdev, audiooutdev, nchoutdev, realoutchans, rate);
          else
  #endif
--- 343,348 ----
  #ifdef USEAPI_OSS
          if (sys_audioapi == API_OSS)
!             oss_open_audio(nrealindev, realindev, nrealindev, realinchans,
!                 nrealoutdev, realoutdev, nrealoutdev, realoutchans, rate);
          else
  #endif
***************
*** 338,343 ****
              be open for both input and output. */
          if (sys_audioapi == API_ALSA)
!             alsa_open_audio(naudioindev, audioindev, nchindev, realinchans,
!                     naudiooutdev, audiooutdev, nchoutdev, realoutchans, rate);
          else 
  #endif
--- 351,356 ----
              be open for both input and output. */
          if (sys_audioapi == API_ALSA)
!             alsa_open_audio(nrealindev, audioindev, nrealindev, realinchans,
!                 nrealoutdev, audiooutdev, nrealoutdev, realoutchans, rate);
          else 
  #endif
***************
*** 355,360 ****
  #ifdef USEAPI_MMIO
          if (sys_audioapi == API_MMIO)
!             mmio_open_audio(naudioindev, audioindev, nchindev, realinchans,
!                     naudiooutdev, audiooutdev, nchoutdev, realoutchans, rate);
          else
  #endif
--- 368,373 ----
  #ifdef USEAPI_MMIO
          if (sys_audioapi == API_MMIO)
!             mmio_open_audio(nrealindev, audioindev, nrealindev, realinchans,
!                 nrealoutdev, audiooutdev, nrealoutdev, realoutchans, rate);
          else
  #endif
***************
*** 639,665 ****
      int nindevs = 0, noutdevs = 0, canmulti = 0, i;
  
-     char indevliststring[MAXNDEV*(DEVDESCSIZE+4)+80],
-         outdevliststring[MAXNDEV*(DEVDESCSIZE+4)+80];
- 
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti,
          MAXNDEV, DEVDESCSIZE);
  
!     strcpy(indevliststring, "{");
      for (i = 0; i < nindevs; i++)
!     {
!         strcat(indevliststring, "\"");
!         strcat(indevliststring, indevlist + i * DEVDESCSIZE);
!         strcat(indevliststring, "\" ");
!     }
!     strcat(indevliststring, "}");
  
!     strcpy(outdevliststring, "{");
      for (i = 0; i < noutdevs; i++)
!     {
!         strcat(outdevliststring, "\"");
!         strcat(outdevliststring, outdevlist + i * DEVDESCSIZE);
!         strcat(outdevliststring, "\" ");
!     }
!     strcat(outdevliststring, "}");
  
      sys_get_audio_params(&naudioindev, audioindev, chindev,
--- 652,667 ----
      int nindevs = 0, noutdevs = 0, canmulti = 0, i;
  
      audio_getdevs(indevlist, &nindevs, outdevlist, &noutdevs, &canmulti,
          MAXNDEV, DEVDESCSIZE);
  
!     sys_gui("set audio_indevlist {}\n");
      for (i = 0; i < nindevs; i++)
!         sys_vgui("lappend audio_indevlist \"%s\"\n",
!             indevlist + i * DEVDESCSIZE);
  
!     sys_gui("set audio_outdevlist {}\n");
      for (i = 0; i < noutdevs; i++)
!         sys_vgui("lappend audio_outdevlist \"%s\"\n",
!             outdevlist + i * DEVDESCSIZE);
  
      sys_get_audio_params(&naudioindev, audioindev, chindev,
***************
*** 671,675 ****
          flongform = 1;
  
- 
      audioindev1 = (naudioindev > 0 &&  audioindev[0]>= 0 ? audioindev[0] : 0);
      audioindev2 = (naudioindev > 1 &&  audioindev[1]>= 0 ? audioindev[1] : 0);
--- 673,676 ----
***************
*** 690,700 ****
      sprintf(buf,
  "pdtk_audio_dialog %%s \
! %s %d %d %d %d %d %d %d %d \
! %s %d %d %d %d %d %d %d %d \
  %d %d %d %d\n",
-         indevliststring,
          audioindev1, audioindev2, audioindev3, audioindev4, 
          audioinchan1, audioinchan2, audioinchan3, audioinchan4, 
-         outdevliststring,
          audiooutdev1, audiooutdev2, audiooutdev3, audiooutdev4,
          audiooutchan1, audiooutchan2, audiooutchan3, audiooutchan4, 
--- 691,699 ----
      sprintf(buf,
  "pdtk_audio_dialog %%s \
! %d %d %d %d %d %d %d %d \
! %d %d %d %d %d %d %d %d \
  %d %d %d %d\n",
          audioindev1, audioindev2, audioindev3, audioindev4, 
          audioinchan1, audioinchan2, audioinchan3, audioinchan4, 
          audiooutdev1, audiooutdev2, audiooutdev3, audiooutdev4,
          audiooutchan1, audiooutchan2, audiooutchan3, audiooutchan4, 

Index: s_loader.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_loader.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** s_loader.c	15 Aug 2006 16:09:57 -0000	1.11
--- s_loader.c	8 Sep 2006 23:45:30 -0000	1.12
***************
*** 43,47 ****
  #endif
  #ifdef MACOSX
! #ifdef __i386__
  static char sys_dllextent[] = ".d_fat", sys_dllextent2[] = ".pd_darwin";
  #else
--- 43,47 ----
  #endif
  #ifdef MACOSX
! #ifndef MACOSX3
  static char sys_dllextent[] = ".d_fat", sys_dllextent2[] = ".pd_darwin";
  #else

Index: g_text.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_text.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -d -r1.13 -r1.14
*** g_text.c	11 Aug 2006 20:09:07 -0000	1.13
--- g_text.c	8 Sep 2006 23:45:30 -0000	1.14
***************
*** 903,907 ****
      t_gatom *x = (t_gatom *)z;
      char buf[200];
!     sprintf(buf, "pdtk_gatom_dialog %%s %d %g %g %d %s %s %s\n",
          x->a_text.te_width, x->a_draglo, x->a_draghi,
              x->a_wherelabel, gatom_escapit(x->a_label)->s_name,
--- 903,907 ----
      t_gatom *x = (t_gatom *)z;
      char buf[200];
!     sprintf(buf, "pdtk_gatom_dialog %%s %d %g %g %d {%s} {%s} {%s}\n",
          x->a_text.te_width, x->a_draglo, x->a_draghi,
              x->a_wherelabel, gatom_escapit(x->a_label)->s_name,

Index: s_main.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_main.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** s_main.c	15 Aug 2006 04:54:15 -0000	1.25
--- s_main.c	8 Sep 2006 23:45:30 -0000	1.26
***************
*** 257,260 ****
--- 257,261 ----
  int sys_main(int argc, char **argv)
  {
+     int i, noprefs;
      sys_externalschedlib = 0;
      sys_extraflags = 0;
***************
*** 264,268 ****
      pd_init();                                  /* start the message system */
      sys_findprogdir(argv[0]);                   /* set sys_progname, guipath */
!     sys_loadpreferences();                      /* load default settings */
  #ifndef MSW
      sys_rcfile();                               /* parse the startup file */
--- 265,273 ----
      pd_init();                                  /* start the message system */
      sys_findprogdir(argv[0]);                   /* set sys_progname, guipath */
!     for (i = noprefs = 0; i < argc; i++)        /* prescan args for noprefs */
!         if (!strcmp(argv[i], "-noprefs"))
!             noprefs = 1;
!     if (!noprefs)
!         sys_loadpreferences();                  /* load default settings */
  #ifndef MSW
      sys_rcfile();                               /* parse the startup file */
***************
*** 388,391 ****
--- 393,397 ----
  "-guicmd \"cmd...\" -- start alternatve GUI program (e.g., remote via ssh)\n",
  "-send \"msg...\"   -- send a message at startup, after patches are loaded\n",
+ "-noprefs         -- suppress loading preferences on startup\n",
  #ifdef UNISTD
  "-rt or -realtime -- use real-time priority\n",
***************
*** 853,856 ****
--- 859,864 ----
              argc -= 2; argv += 2;
          }
+         else if (!strcmp(*argv, "-noprefs")) /* did this earlier */
+             ;
          else
          {

Index: s_midi.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/s_midi.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** s_midi.c	16 Jul 2005 01:43:18 -0000	1.7
--- s_midi.c	8 Sep 2006 23:45:31 -0000	1.8
***************
*** 651,677 ****
      int nindevs = 0, noutdevs = 0, i;
  
-     char indevliststring[MAXNDEV*(DEVDESCSIZE+4)+80],
-         outdevliststring[MAXNDEV*(DEVDESCSIZE+4)+80];
- 
      midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs,
          MAXNDEV, DEVDESCSIZE);
  
!     strcpy(indevliststring, "{ {none} ");
      for (i = 0; i < nindevs; i++)
!     {
!         strcat(indevliststring, "\"");
!         strcat(indevliststring, indevlist + i * DEVDESCSIZE);
!         strcat(indevliststring, "\" ");
!     }
!     strcat(indevliststring, "}");
  
!     strcpy(outdevliststring, "{ {none} ");
      for (i = 0; i < noutdevs; i++)
!     {
!         strcat(outdevliststring, "\"");
!         strcat(outdevliststring, outdevlist + i * DEVDESCSIZE);
!         strcat(outdevliststring, "\" ");
!     }
!     strcat(outdevliststring, "}");
  
      sys_get_midi_params(&nindev, midiindev, &noutdev, midioutdev);
--- 651,666 ----
      int nindevs = 0, noutdevs = 0, i;
  
      midi_getdevs(indevlist, &nindevs, outdevlist, &noutdevs,
          MAXNDEV, DEVDESCSIZE);
  
!     sys_gui("set midi_indevlist {none}\n");
      for (i = 0; i < nindevs; i++)
!         sys_vgui("lappend midi_indevlist \"%s\"\n",
!             indevlist + i * DEVDESCSIZE);
  
!     sys_gui("set midi_outdevlist {none}\n");
      for (i = 0; i < noutdevs; i++)
!         sys_vgui("lappend midi_outdevlist \"%s\"\n",
!             outdevlist + i * DEVDESCSIZE);
  
      sys_get_midi_params(&nindev, midiindev, &noutdev, midioutdev);
***************
*** 693,701 ****
      sprintf(buf,
  "pdtk_alsa_midi_dialog %%s \
! %s %d %d %d %d %s %d %d %d %d \
  %d 1\n",
-         indevliststring,
          midiindev1, midiindev2, midiindev3, midiindev4, 
-         outdevliststring,
          midioutdev1, midioutdev2, midioutdev3, midioutdev4,
          (flongform != 0));
--- 682,688 ----
      sprintf(buf,
  "pdtk_alsa_midi_dialog %%s \
! %d %d %d %d %d %d %d %d \
  %d 1\n",
          midiindev1, midiindev2, midiindev3, midiindev4, 
          midioutdev1, midioutdev2, midioutdev3, midioutdev4,
          (flongform != 0));
***************
*** 704,712 ****
      sprintf(buf,
  "pdtk_midi_dialog %%s \
! %s %d %d %d %d %s %d %d %d %d \
  %d\n",
-         indevliststring,
          midiindev1, midiindev2, midiindev3, midiindev4, 
-         outdevliststring,
          midioutdev1, midioutdev2, midioutdev3, midioutdev4,
          (flongform != 0));
--- 691,697 ----
      sprintf(buf,
  "pdtk_midi_dialog %%s \
! %d %d %d %d %d %d %d %d \
  %d\n",
          midiindev1, midiindev2, midiindev3, midiindev4, 
          midioutdev1, midioutdev2, midioutdev3, midioutdev4,
          (flongform != 0));

Index: g_vdial.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_vdial.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** g_vdial.c	16 Aug 2005 04:06:28 -0000	1.5
--- g_vdial.c	8 Sep 2006 23:45:30 -0000	1.6
***************
*** 551,556 ****
      int bflcol[]={-262144, -1, -1};
      int a=IEM_GUI_DEFAULTSIZE, on=0, f=0;
!     int ldx=0, ldy=-6, chg=1, num=8;
!     int fs=8;
      int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME, fthold=IEM_BNG_DEFAULTHOLDFLASHTIME;
      char str[144];
--- 551,556 ----
      int bflcol[]={-262144, -1, -1};
      int a=IEM_GUI_DEFAULTSIZE, on=0, f=0;
!     int ldx=0, ldy=-8, chg=1, num=8;
!     int fs=10;
      int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME, fthold=IEM_BNG_DEFAULTHOLDFLASHTIME;
      char str[144];

Index: m_pd.h
===================================================================
RCS file: /cvsroot/pure-data/pd/src/m_pd.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** m_pd.h	24 Aug 2006 15:23:52 -0000	1.12
--- m_pd.h	8 Sep 2006 23:45:30 -0000	1.13
***************
*** 12,16 ****
  #define PD_MINOR_VERSION 40
  #define PD_BUGFIX_VERSION 0
! #define PD_TEST_VERSION "test05"
  
  /* old name for "MSW" flag -- we have to take it for the sake of many old
--- 12,16 ----
  #define PD_MINOR_VERSION 40
  #define PD_BUGFIX_VERSION 0
! #define PD_TEST_VERSION "test07"
  
  /* old name for "MSW" flag -- we have to take it for the sake of many old

Index: g_editor.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_editor.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -C2 -d -r1.17 -r1.18
*** g_editor.c	15 Aug 2006 04:54:15 -0000	1.17
--- g_editor.c	8 Sep 2006 23:45:30 -0000	1.18
***************
*** 1019,1027 ****
          canvas_properties(x);
      else if (which == 2)
!     {
!         strcpy(pathbuf, sys_libdir->s_name);
!         strcat(pathbuf, "/doc/5.reference/0.INTRO.txt");
!         sys_vgui("menu_opentext %s\n", pathbuf);
!     }
  }
  
--- 1019,1023 ----
          canvas_properties(x);
      else if (which == 2)
!         open_via_helppath("intro.pd", canvas_getdir((t_canvas *)x)->s_name);
  }
  
***************
*** 1481,1485 ****
      if (keynum == '\\' || keynum == '{' || keynum == '}')
      {
!         post("%c: dropped", (int)keynum);
          return;
      }
--- 1477,1481 ----
      if (keynum == '\\' || keynum == '{' || keynum == '}')
      {
!         post("keycode %d: dropped", (int)keynum);
          return;
      }

Index: g_bang.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_bang.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** g_bang.c	6 Sep 2004 20:20:33 -0000	1.4
--- g_bang.c	8 Sep 2006 23:45:30 -0000	1.5
***************
*** 434,439 ****
      int bflcol[]={-262144, -1, -1};
      int a=IEM_GUI_DEFAULTSIZE;
!     int ldx=0, ldy=-6;
!     int fs=8;
      int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME,
          fthold=IEM_BNG_DEFAULTHOLDFLASHTIME;
--- 434,439 ----
      int bflcol[]={-262144, -1, -1};
      int a=IEM_GUI_DEFAULTSIZE;
!     int ldx=17, ldy=7;
!     int fs=10;
      int ftbreak=IEM_BNG_DEFAULTBREAKFLASHTIME,
          fthold=IEM_BNG_DEFAULTHOLDFLASHTIME;

Index: g_numbox.c
===================================================================
RCS file: /cvsroot/pure-data/pd/src/g_numbox.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** g_numbox.c	16 Aug 2005 04:06:28 -0000	1.7
--- g_numbox.c	8 Sep 2006 23:45:30 -0000	1.8
***************
*** 750,754 ****
      int bflcol[]={-262144, -1, -1};
      int w=5, h=14;
!     int lilo=0, f=0, ldx=0, ldy=-6;
      int fs=10;
      int log_height=256;
--- 750,754 ----
      int bflcol[]={-262144, -1, -1};
      int w=5, h=14;
!     int lilo=0, f=0, ldx=0, ldy=-8;
      int fs=10;
      int log_height=256;





More information about the Pd-cvs mailing list