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(); }
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 ); }