Esempio n. 1
0
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;
}
Esempio n. 2
0
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"
	);
}