diff --git a/doc/1.manual/x5.htm b/doc/1.manual/x5.htm index ab950b9e17aabb94baf90383ebfbdf0d123fe881..6d40c6208f5571101e02943faead7284ee2f3912 100644 --- a/doc/1.manual/x5.htm +++ b/doc/1.manual/x5.htm @@ -20,6 +20,56 @@ <H3> <A name="s2"> 5.1. release notes </A> </H3> +<P> ------------------ 0.41 ---------------------------- + +<P> Pd may be compiled in 64 bit address spaces; this is well tested on +linux and at least seems to work on Microsoft and MacOS. On linux, in fact, +if you compile Pd in a 64-bit version of the OS it's automatically in the +64 bit address space. + +<P> In linux, a "-nosleep" flag causes Pd to poll instead of sleeping as it +waits for dac and adc; this is useful on multiprocessors when you don't mind +having Pd occupy 100% of one processor and want to get latency as low as +possible. (If you don't use this, latency on multiprocessors---Intel Core 2 at +least---is much worse for some reason than it is on uniprocessors.) It's +"experimental" but I use it every day. + +<P> added an experimental callback scheduler. This might reduce latency in +MacOS and/or Microsoft, although I haven't seen that actually happen yet. + +<P> removed limitation on huge messages from text files; this prevented long +"data" arrays from reloading from disk correctly. + +<P> fixed crash bug closing patches with open GOPs. + +<P> changed selection strategy so that, right after duplicating a collection +of objects, clicking tends to select an already-selected object. + +<P> the cursor changes slightly more apprpriately when switching between edit +to run modes. + +<P> got really confused about the proper role of "declare 'path" in abstractions; +for the moment they are ignored. I the future, it may be worthwhile to allow +them but to have them act only locally to the abstraction; but this might mean +a lot more computation overhead when opening files. + +<P> limited window sizes to that of the screen (otherwise, on Mac OS, it's +impossible to resize them.) + +<P> fixed "startup" dialogs to allow unlimited "path" and "lib" entries + +<P> started, but didn't finish, the process of getting Pd to compile with +t_float as 64 bits. This would slow Pd down but improve tabread4~'s accuracy. + +<P> made IEM Guis respect "-font" flag and friends. New startup flags: +"-font-face" (badly named); "-font-size" sysnonym of "-font". (Large patch from +HC). + +<P> String overflow protection here and there. + +<P> migrated to ".net" compiler ("VC 2005", a free download). + + <P> ------------------ 0.40-1 -------------------------- <P> Fixed "declare" which wasn't working properly yet in 0.40-0, and diff --git a/src/notes.txt b/src/notes.txt index b8f65b707fde027e1b952517e58698f0efb8576b..168bd18407be62c6a76b30fa1b87243fb0930595 100644 --- a/src/notes.txt +++ b/src/notes.txt @@ -1,11 +1,4 @@ ---------------- dolist -------------------- -fixed crash bug closing patches with open GOPs -fixed PC device counting problem (first device invoked by -audiodev 0) -fixed MSTACKSIZE limitation in m_binbuf.c -fixed so that if more than one object is selected, clicking prefers to - "hit" a selected one (better dragging after "duplicate") - - test: compile on various versions of linux windows: diff --git a/src/s_loader.c b/src/s_loader.c index 4788c13cb4e1b179c0b6ba875e28cdc1f30df284..da2732f390059a103072628cee3b40fd84eb49b6 100644 --- a/src/s_loader.c +++ b/src/s_loader.c @@ -238,3 +238,37 @@ int sys_load_lib(t_canvas *canvas, char *classname) return ok; } +int sys_run_scheduler(const char *externalschedlibname, + const char *sys_extraflagsstring) +{ + typedef int (*t_externalschedlibmain)(const char *); + t_externalschedlibmain externalmainfunc; + char filename[MAXPDSTRING]; + snprintf(filename, sizeof(filename), "%s.%s", externalschedlibname, + sys_dllextent); + sys_bashfilename(filename, filename); +#ifdef MSW + { + HINSTANCE ntdll = LoadLibrary(filename); + if (!ntdll) + { + post("%s: couldn't load external scheduler lib ", filename); + return (0); + } + externalmainfunc = + (t_externalschedlibmain)GetProcAddress(ntdll, "main"); + } +#else + { + void *dlobj = dlopen(filename, RTLD_NOW | RTLD_GLOBAL); + if (!dlobj) + { + post("%s: %s", filename, dlerror()); + return (0); + } + externalmainfunc = (t_externalschedlibmain)dlsym(dlobj, + "pd_extern_sched"); + } +#endif + return((*externalmainfunc)(sys_extraflagsstring)); +} diff --git a/src/s_main.c b/src/s_main.c index d8d8602d1abf7099356fb0772c979d05c7214653..1838a0a7d02b65092979f0a378154f9a5a80f832 100644 --- a/src/s_main.c +++ b/src/s_main.c @@ -77,7 +77,8 @@ int sys_externalschedlib; char sys_externalschedlibname[MAXPDSTRING]; int sys_extraflags; char sys_extraflagsstring[MAXPDSTRING]; - +int sys_run_scheduler(const char *externalschedlibname, + const char *sys_extraflagsstring); /* here the "-1" counts signify that the corresponding vector hasn't been specified in command line arguments; sys_set_audio_settings will detect it @@ -291,28 +292,8 @@ int sys_main(int argc, char **argv) if (sys_startgui(sys_guidir->s_name)) /* start the gui */ return(1); if (sys_externalschedlib) - { -#ifdef MSW - typedef int (*t_externalschedlibmain)(char *); - t_externalschedlibmain externalmainfunc; - HINSTANCE ntdll; - char filename[MAXPDSTRING]; - - snprintf(filename, sizeof(filename), "%s.dll", sys_externalschedlibname); - sys_bashfilename(filename, filename); - ntdll = LoadLibrary(filename); - if (!ntdll) - { - post("%s: couldn't load external scheduler lib ", filename); - return (0); - } - externalmainfunc = (t_externalschedlibmain)GetProcAddress(ntdll, - "main"); - return((*externalmainfunc)(sys_extraflagsstring)); -#else - return (0); -#endif - } + return (sys_run_scheduler(sys_externalschedlibname, + sys_extraflagsstring)); else { /* open audio and MIDI */