static void *Undo_Do_Sequencer( struct Tracker_Windows *window, struct WBlocks *wblock, struct WTracks *wtrack, int realline, void *pointer ){ hash_t *ret = SEQUENCER_get_state(); SEQUENCER_create_from_state(pointer); return ret; }
void ADD_UNDO_FUNC(Sequencer(void)){ struct Tracker_Windows *window = root->song->tracker_windows; Undo_Add( window->l.num, window->wblock->l.num, window->curr_track, window->wblock->curr_realline, SEQUENCER_get_state(), Undo_Do_Sequencer, "Sequencer" ); }
void ADD_UNDO_FUNC(Block_Delete(NInt blockpos)){ struct Tracker_Windows *window=root->song->tracker_windows; struct WBlocks *wblock=window->wblock; struct Undo_Block_InsertDelete *ubi=talloc(sizeof(struct Undo_Block_InsertDelete)); ubi->blockpos=blockpos; ubi->wblock=(struct WBlocks *)ListFindElement1(&window->wblocks->l,blockpos); ubi->sequencer_state=SEQUENCER_get_state(); Undo_Add( window->l.num, wblock->l.num, window->curr_track, wblock->curr_realline, ubi, Undo_Do_Block_Delete, "Block delete" ); }