void *Undo_Do_Block_Delete( struct Tracker_Windows *window, struct WBlocks *wblock, struct WTracks *wtrack, int realline, void *pointer ){ struct Undo_Block_InsertDelete *ubi=(struct Undo_Block_InsertDelete *)pointer; if(ubi->wblock==NULL){ return Undo_Do_Block_Insert(window,wblock,wtrack,realline,pointer); } InsertBlock_IncBlockNums(ubi->blockpos); ListAddElement1(&root->song->blocks,&ubi->wblock->block->l); ListAddElement1(&window->wblocks,&ubi->wblock->l); SEQUENCER_create_from_state(ubi->sequencer_state, root->song); BS_UpdateBlockList(); BS_UpdatePlayList(); ubi->wblock=NULL; return ubi; }
/***************************************************************************** FUNCTION Sets the num attribute to the first free elementnum and inserts the element. *****************************************************************************/ void ListAddElement1_ff( void *voidlistroot, struct ListHeader1 *element ){ struct ListHeaderPointer1 *listroot=voidlistroot; element->num=ListFindFirstFreePlace1(listroot->root); ListAddElement1(listroot,element); }
static void AddNewTypeOfFxNodeLine(const struct WBlocks *wblock, struct WTracks *wtrack, struct FX *fx, const Place *p2, int val){ printf("new, fxnum: %d, wtrack->fxs->l.num:%d\n",fx->num,wtrack->track->fxs==NULL?-1000:wtrack->track->fxs->l.num); struct FXs *fxs=talloc(sizeof(struct FXs)); fxs->l.num=fx->num; fxs->fx=fx; ListAddElement1(&wtrack->track->fxs,&fxs->l); struct FXNodeLines *fxnodeline=talloc(sizeof(struct FXNodeLines)); fxnodeline->val=val; PlaceCopy(&fxnodeline->l.p,p2); ListAddElement3(&fxs->fxnodelines,&fxnodeline->l); }
int OpenTrackerWindow(int x, int y, int width,int height){ struct Tracker_Windows *twindow; twindow=talloc(sizeof(struct Tracker_Windows)); twindow->l.num=ListFindFirstFreePlace1(&root->song->tracker_windows->l); twindow->x=x; twindow->y=y; twindow->width=width; twindow->height=height; #ifdef USE_GFX_OP_QUEUE GFX_create_op_queue(twindow); #endif if(GFX_CreateVisual(twindow)!=0) return -1; twindow->l.num=ListFindFirstFreePlace1(&root->song->tracker_windows->l); twindow->playalong=true; InitSliderValues(twindow); twindow->curr_track_sub= -1; twindow->show_lpb_track=true; twindow->show_bpm_track=true; twindow->show_reltempo_track=true; //twindow->minnodesize=SETTINGS_read_int("minimum_node_size",20); UpdateWBlocks(twindow); twindow->wblock=twindow->wblocks; //UpdateTrackerWindow(twindow); //DrawUpTrackerWindow(twindow); ListAddElement1(&root->song->tracker_windows,&twindow->l); // PixMap_reset(twindow); return twindow->l.num; }
static void InitPEQnotesBlock( PEQ_UsedTracks **UsedTracks, const struct Blocks *block, const Place *p, int playlistaddpos ){ PEQ_UsedTracks *peq_usedtrack; struct Notes *note; struct Tracks *track=block->tracks; while(track!=NULL){ if( ListFindElement1_r0(*UsedTracks,track->l.num) == NULL ){ note=track->notes; if(note!=NULL){ while(PlaceLessThan(¬e->l.p,p)){ note=NextNote(note); if(note==NULL) break; } if(note!=NULL){ peq_usedtrack=talloc(sizeof(PEQ_UsedTracks)); peq_usedtrack->num=track->l.num; ListAddElement1(UsedTracks,peq_usedtrack); InitPEQnote(block,track,note,playlistaddpos); } else{ //PEQ_FindNextNoteAddPlayPos(peq); } } } track=NextTrack(track); } }
static void NewTrack(struct Blocks *block,struct Tracks *track){ InitTrack(track); ListAddElement1(&block->tracks,&track->l); }