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, ¶m); --- 1172,1176 ---- int policy = SCHED_RR; int err; ! param.sched_priority = 80; /* adjust 0 : 100 */
err = pthread_setschedparam(pthread_self(), policy, ¶m); *************** *** 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(); }