MAKE = make
CC = gcc
-WITH_VERIFY = yes
+WITH_VERIFY = no
FLAGS_DEBUG = -g
CC_FLAGS = -Wall
+LD_FLAGS = -lpthread
TARGET = playumidi
HEADERS = playumidi.h
OBJS = main.o smf.o midievent.o play_event.o
all: $(TARGET)
$(TARGET): $(OBJS) $(VERIFY_OBJS)
- gcc -o $(TARGET) $(CC_FLAGS) $(FLAGS_DEBUG) $(FLAGS_VERIFY) $(OBJS) $(VERIFY_OBJS)
+ gcc -o $(TARGET) $(LD_FLAGS) $(FLAGS_DEBUG) $(FLAGS_VERIFY) $(OBJS) $(VERIFY_OBJS)
.if $(WITH_VERIFY) == "yes"
verify_event.o: verify_event.c $(HEADERS)
#include<unistd.h>
#include<string.h>
#include<signal.h>
+#include<pthread.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<sys/uio.h>
sig_t t_sigerr;
struct stat t_status;
Byte *pb_filebuf;
+ pthread_t t_thread;
if( 2 != argc ) { return 0x01; }
/* Read Midi File Header */
ReadMidiFile( pb_filebuf );
+ free( pb_filebuf );
t_sigerr = signal( SIGINT, (void (*))Signal_Int );
if( SIG_ERR == t_sigerr ) {
puts("Error!!: Cannot Signal Setting");
return 0x00;
}
- Play_Event();
- free( pb_filebuf );
+ i_err = pthread_create( &t_thread, NULL,
+ (void *)PlayEvent_Play, (void *)NULL );
+ if( 0x00 != i_err ) {
+ puts("Error!!: Cannot Create Player-Thread");
+ return 0x00;
+ }
+ pthread_join( t_thread, NULL );
+
return 0x00;
}
int i_cnt;
int i_len;
int i_channel;
- int i_note;
size_t sz_write;
Byte *pb_value;
Byte b_value[3];
/* ===================================================================*/
EXTERN_FUNC_PLAY_EVENT
- int Play_Event(
- void ) {
+ void PlayEvent_Play(
+ void *v_arg ) {
MidiEventInfo *p_mevent;
Byte *pb_vardata;
int i_len;
int i_cnt;
size_t sz_write;
- //DWord dw_max_events;
DWord dw_wait;
MidiInfo t_midi;
i_umidi[0] = open("/dev/umidi1.0", O_RDWR );
if( 0 > i_umidi[0] ) {
puts("Error!!");
- return 0x00;
+ return;
}
close( i_umidi[0] );
- return 0x00;
+ return;
}
#define EXTERN_FUNC_PLAY_EVENT
#endif
EXTERN_FUNC_PLAY_EVENT void Play_RequestStop( void );
-EXTERN_FUNC_PLAY_EVENT int Play_Event( void );
+EXTERN_FUNC_PLAY_EVENT void PlayEvent_Play( void *v_arg );
#ifdef VERIFY_EVENT