diff --git a/src/g_undo.c b/src/g_undo.c index dadde7413d23e797ff4f68ed5a960c40dda4a947..a3740ee47e99931629679a634856c3fd9d284cbc 100644 --- a/src/g_undo.c +++ b/src/g_undo.c @@ -53,6 +53,7 @@ t_undo_action *canvas_undo_add(t_canvas *x, int type, const char *name, void *da void canvas_undo_undo(t_canvas *x) { + int dspwas = canvas_suspend_dsp(); if (x->u_queue && x->u_last != x->u_queue) { we_are_undoing = 1; //fprintf(stderr,"canvas_undo_undo %d\n", x->u_last->type); @@ -86,10 +87,12 @@ void canvas_undo_undo(t_canvas *x) sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x); } } + canvas_resume_dsp(dspwas); } void canvas_undo_redo(t_canvas *x) { + int dspwas = canvas_suspend_dsp(); if (x->u_queue && x->u_last->next) { we_are_undoing = 1; x->u_last = x->u_last->next; @@ -123,10 +126,12 @@ void canvas_undo_redo(t_canvas *x) sys_vgui("pdtk_canvas_getscroll .x%lx.c\n", x); } } + canvas_resume_dsp(dspwas); } void canvas_undo_rebranch(t_canvas *x) { + int dspwas = canvas_suspend_dsp(); t_undo_action *a1, *a2; //fprintf(stderr,"canvas_undo_rebranch"); if (x->u_last->next) { @@ -154,6 +159,7 @@ void canvas_undo_rebranch(t_canvas *x) a1 = a2; } } + canvas_resume_dsp(dspwas); //fprintf(stderr,"done!\n"); } @@ -169,6 +175,7 @@ void canvas_undo_purge_abstraction_actions(t_canvas *x) void canvas_undo_free(t_canvas *x) { + int dspwas = canvas_suspend_dsp(); t_undo_action *a1, *a2; //fprintf(stderr,"canvas_undo_free"); if (x->u_queue) { @@ -197,6 +204,7 @@ void canvas_undo_free(t_canvas *x) a1 = a2; } } + canvas_resume_dsp(dspwas); //fprintf(stderr,"done!\n"); }