From d313ec9fc9c500213f3af58bfa4a4147504f94db Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Sun, 23 Oct 2011 15:06:17 +0000 Subject: nailed down finish-bang logic svn path=/trunk/externals/hcs/; revision=15647 --- sys_gui.c | 51 ++++++++++++++++++--------------------------------- 1 file changed, 18 insertions(+), 33 deletions(-) diff --git a/sys_gui.c b/sys_gui.c index 578e3f5..753c190 100644 --- a/sys_gui.c +++ b/sys_gui.c @@ -3,8 +3,6 @@ #include #include "g_canvas.h" -#define DEBUG(x) - static t_class *sys_gui_class; typedef struct _sys_gui @@ -15,17 +13,27 @@ typedef struct _sys_gui char *send_buffer; } t_sys_gui; -static void sys_gui_send_finished(t_sys_gui *x) +static void execute_buffer(t_sys_gui *x, int argc, t_atom *argv) { - char message[MAXPDSTRING]; - sprintf(message,"pdsend \"%s finished\";", x->x_receive_symbol->s_name ); - sys_gui(message); + int i = 0; + char buf[MAXPDSTRING]; + + for(i=0;isend_buffer, buf, MAXPDSTRING - strlen(x->send_buffer)); + strncat(x->send_buffer, " ", MAXPDSTRING - strlen(x->send_buffer)); + } + strncat(x->send_buffer, " ;\n", MAXPDSTRING - strlen(x->send_buffer)); + snprintf(buf, MAXPDSTRING - strlen(x->send_buffer), + "pdsend \"%s finished\";\n", x->x_receive_symbol->s_name ); + strncat(x->send_buffer, buf, MAXPDSTRING - strlen(x->send_buffer)); + sys_gui(x->send_buffer); } static void sys_gui_bang(t_sys_gui *x) { sys_gui(x->send_buffer); - sys_gui_send_finished(x); } static void sys_gui_finished(t_sys_gui *x) @@ -35,37 +43,14 @@ static void sys_gui_finished(t_sys_gui *x) static void sys_gui_anything(t_sys_gui *x, t_symbol *s, int argc, t_atom *argv) { - DEBUG(post("sys_gui_anything");); - int i = 0; - char buf[MAXPDSTRING]; - snprintf(x->send_buffer, MAXPDSTRING, "%s ", s->s_name); - for(i=0;isend_buffer, buf, MAXPDSTRING - strlen(x->send_buffer)); - strncat(x->send_buffer, " ", MAXPDSTRING - strlen(x->send_buffer)); - } - strncat(x->send_buffer, " ;\n", 3); - sys_gui(x->send_buffer); - sys_gui_send_finished(x); + execute_buffer(x, argc, argv); } static void sys_gui_list(t_sys_gui *x, t_symbol *s, int argc, t_atom *argv) { - DEBUG(post("sys_gui_list");); - int i = 0; - char buf[MAXPDSTRING]; - - for(i=0;isend_buffer, buf, MAXPDSTRING - strlen(x->send_buffer)); - strncat(x->send_buffer, " ", MAXPDSTRING - strlen(x->send_buffer)); - } - strncat(x->send_buffer, " ;\n", MAXPDSTRING - strlen(x->send_buffer)); - sys_gui(x->send_buffer); - sys_gui_send_finished(x); + x->send_buffer = '\0'; + execute_buffer(x, argc, argv); } static void sys_gui_free(t_sys_gui *x) -- cgit v1.2.1