1
0
Fork 0
forked from len0rd/rockbox

More work on PDBox by Wincent Balin. The PDBox plug-in is now working with the pdpod_test.pd file from the PureData.zip archive

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21816 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Peter D'Hoye 2009-07-12 18:44:26 +00:00
parent a3a8708cdf
commit 66a0492ab7
6 changed files with 208 additions and 155 deletions

View file

@ -2307,7 +2307,7 @@ void glob_quit(void* dummy)
reentered = true;
/* Close audio subsystem. */
sys_close_audio();
/* Will be done by the main program: sys_close_audio(); */
/* Stop main loop. */
quit = true;
@ -2318,12 +2318,13 @@ void glob_quit(void* dummy)
void glob_evalfile(t_pd *ignore, t_symbol *name, t_symbol *dir);
void openit(const char *dirname, const char *filename)
{
char dirbuf[MAXPDSTRING], *nameptr;
char* nameptr;
char* dirbuf = getbytes(MAXPDSTRING);
/* Workaround: If the file resides in the root directory,
add a trailing slash to prevent directory part
of the filename from being removed. */
char ffilename[MAXPDSTRING];
of the filename from being removed -- W.B. */
char* ffilename = getbytes(MAXPDSTRING);
ffilename[0] = '/';
ffilename[1] = '\0';
strcat(ffilename, filename);
@ -2337,6 +2338,10 @@ void openit(const char *dirname, const char *filename)
}
else
error("%s: can't open", filename);
/* Clean up. */
freebytes(dirbuf, MAXPDSTRING);
freebytes(ffilename, MAXPDSTRING);
}
@ -2344,14 +2349,20 @@ void openit(const char *dirname, const char *filename)
extern char* filename;
char* rb_getcwd(char* buf, ssize_t size)
{
char* end_of_dir = strrchr(filename, '/');
/* Initialize buffer. */
buf[0] = '\0';
/* Check whether buffer may hold enough data. */
if(size < end_of_dir - filename)
/* Search for the last slash. */
char* end_of_dir = strrchr(filename, '/');
int dirlen = end_of_dir - filename;
/* Check whether length of directory path is correct.
If not, abort. */
if(size < dirlen || dirlen == 0)
return NULL;
/* Copy current working directory to buffer. */
strncpy(buf, filename, end_of_dir - filename);
strncat(buf, filename, dirlen);
return buf;
}
@ -2369,7 +2380,7 @@ void glob_initfromgui(void *dummy, t_symbol *s, int argc, t_atom *argv)
(void) argv;
t_namelist *nl;
char cwd[MAXPDSTRING];
char* cwd = getbytes(MAXPDSTRING);
/* Get current working directory. */
rb_getcwd(cwd, MAXPDSTRING);
@ -2377,8 +2388,12 @@ void glob_initfromgui(void *dummy, t_symbol *s, int argc, t_atom *argv)
/* open patches specifies with "-open" args */
for(nl = sys_openlist; nl; nl = nl->nl_next)
openit(cwd, nl->nl_string);
namelist_free(sys_openlist);
sys_openlist = 0;
/* Clean up. */
freebytes(cwd, MAXPDSTRING);
}
/* Fake GUI start. Originally in s_inter.c */
@ -2390,7 +2405,7 @@ int sys_startgui(const char *guidir)
{
unsigned int i;
t_atom zz[23];
char cmdbuf[4*MAXPDSTRING];
char* cmdbuf = getbytes(4*MAXPDSTRING);
(void) guidir;
@ -2398,13 +2413,16 @@ int sys_startgui(const char *guidir)
if(!rb_getcwd(cmdbuf, MAXPDSTRING))
strcpy(cmdbuf, ".");
SETSYMBOL(zz, gensym(cmdbuf));
for (i = 1; i < 22; i++)
SETFLOAT(zz + i, defaultfontshit[i-1]);
SETFLOAT(zz+22,0);
glob_initfromgui(0, 0, 23, zz);
/* Clean up. */
freebytes(cmdbuf, 4*MAXPDSTRING);
return 0;
}
@ -2418,11 +2436,14 @@ int sys_getblksize(void)
/* Find library directory and set it. */
void sys_findlibdir(const char* filename)
{
char sbuf[MAXPDSTRING];
(void) filename;
char* sbuf = getbytes(MAXPDSTRING);
/* Make current working directory the system library directory. */
rb_getcwd(sbuf, MAXPDSTRING);
sys_libdir = gensym(sbuf);
/* Clean up. */
freebytes(sbuf, MAXPDSTRING);
}