Beispiel #1
0
static void PlayStopReally(bool doit){ 
	pc->isplaying=false;
	pc->initplaying=false;
        pc->playertask_has_been_called = false;
        pc->is_playing_range = false;
        
        printf("PlayStopReally called: %s\n",doit==true?"true":"false");

        if (PLAYER_current_thread_has_lock()){
          RError("Potential deadlock detected: Calling PlayStopReally while holding player lock.");
          return;
        }

        if (PLAYER_is_running())
          while(pc->peq!=NULL) OS_WaitForAShortTime(20);

	StopAllInstruments();

#if !USE_OPENGL
	if(doit) (*Ptask2MtaskCallBack)();
#endif

	pc->end_time=0;
        pc->end_time_f=0;

        pc->play_id++;

        struct Tracker_Windows *window = root->song->tracker_windows;
        struct WBlocks *wblock = window->wblock;

        ScrollEditorToRealLine(window,wblock,wblock->curr_realline);

#if !USE_OPENGL
        DrawWBlockSpesific(window,wblock,wblock->curr_realline,wblock->curr_realline); // clear cursor shade.
        UpdateAllWTracks(window,wblock,wblock->curr_realline,wblock->curr_realline); // same here.
#endif
        printf("[hb gakkgakk: %d\n",GC_dont_gc);
        PATCH_reset_time();

        //while(GC_is_disabled())
        while(GC_dont_gc>0)
          GC_enable();

        MIDI_insert_recorded_midi_events();
}
Beispiel #2
0
void Scroll_makePixMapLines(
	struct Tracker_Windows *window,
	int startrealline,
	int endrealline
){
	struct WBlocks *wblock=window->wblock;

	if(WBlock_legalizeStartEndReallines(wblock,&startrealline,&endrealline)==false){
		return;
	}

	PixMap_makeNewDefs(
		window,
		startrealline-wblock->top_realline,
		endrealline-wblock->top_realline
	);

        {
          struct WTracks *wtrack=ListLast1(&wblock->wtracks->l);
          int x2=wtrack->fxarea.x2;
          EraseLines(
                     window,wblock,
                     wblock->a.x1, x2,
                     startrealline, endrealline+1
                     );
        }

	DrawWBlockSpesific(
		window,
		wblock,
		startrealline,
		endrealline
	);

	UpdateAllWTracks(
		window,
		wblock,
		startrealline,
		endrealline
	);
}