From 4ffde0ad55d041229793ca4457123bcbcbf8e0c0 Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Mon, 25 Apr 2016 23:46:17 +0800 Subject: Plugin API now works correctly. Port old visualization code. --- core/qmpmidiread.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'core/qmpmidiread.cpp') diff --git a/core/qmpmidiread.cpp b/core/qmpmidiread.cpp index 762ce5d..380b603 100644 --- a/core/qmpmidiread.cpp +++ b/core/qmpmidiread.cpp @@ -172,6 +172,10 @@ int CMidiFile::eventReader()//returns 0 if End of Track encountered error(0,"W: Unknown event type %#x",type); } lasttype=type;++curid; + SEvent* le=eventList[eventList.size()-1]; + SEventCallBackData cbd(le->type,le->p1,le->p2,le->time); + for(int i=0;i<16;++i)if(eventReaderCB[i]) + eventReaderCB[i]->callBack(&cbd,eventReaderCBuserdata[i]); return 1; } void CMidiFile::trackChunkReader() @@ -222,9 +226,11 @@ void CMidiFile::dumpEvents() printf("type %x #%d @%d p1 %d p2 %d\n",eventList[i]->type, eventList[i]->iid,eventList[i]->time,eventList[i]->p1,eventList[i]->p2); } -CMidiFile::CMidiFile(const char* fn) +CMidiFile::CMidiFile(const char* fn,IMidiCallBack **ercb,void **ercbdata) { title=copyright=NULL;notes=0;std=0;valid=1; + memcpy(eventReaderCB,ercb,sizeof(eventReaderCB)); + memcpy(eventReaderCBuserdata,ercbdata,sizeof(eventReaderCBuserdata)); try { if(!(f=fopen(fn,"rb")))throw (fprintf(stderr,"E: file %s doesn't exist!\n",fn),2); -- cgit v1.2.3