org_tritonus_lowlevel_alsa_alsaseqevent.c

来自「kaffe Java 解释器语言,源码,Java的子集系统,开放源代码」· C语言 代码 · 共 634 行 · 第 1/2 页

C
634
字号
}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    getControl * Signature: ([I)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getControl(JNIEnv* env, jobject obj, jintArray anValues){	snd_seq_event_t*	handle;	jint*			panValues;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getControl(): begin\n"); }	handle = getHandle(env, obj);	checkArrayLength(env, anValues, 3);	panValues = (*env)->GetIntArrayElements(env, anValues, NULL);	if (panValues == NULL)	{		throwRuntimeException(env, "GetIntArrayElements() failed");	}	panValues[0] = handle->data.control.channel;	panValues[1] = handle->data.control.param;	panValues[2] = handle->data.control.value;	(*env)->ReleaseIntArrayElements(env, anValues, panValues, 0);	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getControl(): end\n"); }}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    getQueueControl * Signature: ([I[J)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getQueueControl(JNIEnv* env, jobject obj, jintArray anValues, jlongArray alValues){	snd_seq_event_t*	handle;	jint*			panValues;	jlong*			palValues;	int			nType;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getQueueControl(): begin\n"); }	handle = getHandle(env, obj);	checkArrayLength(env, anValues, 2);	checkArrayLength(env, alValues, 1);	panValues = (*env)->GetIntArrayElements(env, anValues, NULL);	if (panValues == NULL)	{		throwRuntimeException(env, "GetIntArrayElements() failed");	}	palValues = (*env)->GetLongArrayElements(env, alValues, NULL);	if (palValues == NULL)	{		throwRuntimeException(env, "GetLongArrayElements() failed");	}	panValues[0] = handle->data.queue.queue;	nType = handle->type;	if (nType == SND_SEQ_EVENT_TEMPO)	{		panValues[1] = handle->data.queue.param.value;	}	else if (nType == SND_SEQ_EVENT_SETPOS_TICK)	{		palValues[0] = handle->data.queue.param.time.tick;	}	else if (nType == SND_SEQ_EVENT_SETPOS_TIME)	{		palValues[0] = (jlong) handle->data.queue.param.time.time.tv_sec * (jlong) 1000000000 + (jlong) handle->data.queue.param.time.time.tv_nsec;	}	(*env)->ReleaseIntArrayElements(env, anValues, panValues, 0);	(*env)->ReleaseLongArrayElements(env, alValues, palValues, 0);	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getQueueControl(): end\n"); }}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    getVar * Signature: ()[B */JNIEXPORT jbyteArray JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getVar(JNIEnv* env, jobject obj){	snd_seq_event_t*	handle;	jbyteArray		abData;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getVar(): begin\n"); }	handle = getHandle(env, obj);	abData = (*env)->NewByteArray(env, handle->data.ext.len);	if (abData == NULL)	{		throwRuntimeException(env, "NewByteArray() failed");	}	(*env)->SetByteArrayRegion(env, abData, (jsize) 0, (jsize) handle->data.ext.len, (jbyte*) handle->data.ext.ptr);	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_getVar(): end\n"); }	return abData;}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    setCommon * Signature: (IIIIJIIII)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setCommon(JNIEnv* env, jobject obj, jint nType, jint nFlags, jint nTag, jint nQueue, jlong lTimestamp, jint nSourceClient, jint nSourcePort, jint nDestClient, jint nDestPort){	snd_seq_event_t*	handle;	int			nLengthFlags;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setCommon(): begin\n"); }	handle = getHandle(env, obj);	handle->type = nType;	// preserve the length flags	nLengthFlags = handle->flags & SND_SEQ_EVENT_LENGTH_MASK;	handle->flags = (nFlags & ~SND_SEQ_EVENT_LENGTH_MASK) | nLengthFlags;	handle->tag = nTag;	handle->queue = nQueue;	if ((handle->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_TICK)	{		handle->time.tick = lTimestamp;	}	else	{		handle->time.time.tv_sec = lTimestamp / 1000000000;		handle->time.time.tv_nsec = lTimestamp % 1000000000;	}	// source client is set by the sequencer to sending client	handle->source.port = nSourcePort;	handle->dest.client = nDestClient;	handle->dest.port = nDestPort;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setCommon(): end\n"); }}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    setTimestamp * Signature: (J)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setTimestamp(JNIEnv* env, jobject obj, jlong lTimestamp){	snd_seq_event_t*	handle;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setTimestamp(): begin\n"); }	handle = getHandle(env, obj);	if ((handle->flags & SND_SEQ_TIME_STAMP_MASK) == SND_SEQ_TIME_STAMP_TICK)	{		handle->time.tick = lTimestamp;	}	else	{		handle->time.time.tv_sec = lTimestamp / 1000000000;		handle->time.time.tv_nsec = lTimestamp % 1000000000;	}	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setTimestamp(): end\n"); }}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    setNote * Signature: (IIIII)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setNote(JNIEnv* env, jobject obj, jint nChannel, jint nNote, jint nVelocity, jint nOffVelocity, jint nDuration){	snd_seq_event_t*	handle;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setNote(): begin\n"); }	handle = getHandle(env, obj);	snd_seq_ev_set_fixed(handle);	handle->data.note.channel = nChannel;	handle->data.note.note = nNote;	handle->data.note.velocity = nVelocity;	handle->data.note.off_velocity = nOffVelocity;	handle->data.note.duration = nDuration;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setNote(): end\n"); }}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    setControl * Signature: (III)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setControl(JNIEnv* env, jobject obj, jint nChannel, jint nParam, jint nValue){	snd_seq_event_t*	handle;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setControl(): begin\n"); }	handle = getHandle(env, obj);	if (snd_seq_ev_is_variable(handle))	{		// printf("var data   free: %p\n", handle->data.ext.ptr);		free(handle->data.ext.ptr);	}	snd_seq_ev_set_fixed(handle);	handle->data.control.channel = nChannel;	handle->data.control.param = nParam;	handle->data.control.value = nValue;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setControl(): end\n"); }}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    setQueueControl * Signature: (IIJ)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setQueueControl(JNIEnv* env, jobject obj, jint nQueue, jint nValue, jlong lTime){	snd_seq_event_t*	handle;	int			nType;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setQueueControl(): begin\n"); }	handle = getHandle(env, obj);	if (snd_seq_ev_is_variable(handle))	{		// printf("var data   free: %p\n", handle->data.ext.ptr);		free(handle->data.ext.ptr);	}	snd_seq_ev_set_fixed(handle);	nType = handle->type;	handle->data.queue.queue = nQueue;	if (nType == SND_SEQ_EVENT_TEMPO)	{		handle->data.queue.param.value = nValue;	}	else if (nType == SND_SEQ_EVENT_SETPOS_TICK)	{		handle->data.queue.param.time.tick = lTime;	}	else if (nType == SND_SEQ_EVENT_SETPOS_TIME)	{		handle->data.queue.param.time.time.tv_sec = lTime / 1000000000;		handle->data.queue.param.time.time.tv_nsec = lTime % 1000000000;	}	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setQueueControl(): end\n"); }}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    setVar * Signature: ([BII)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setVar(JNIEnv* env, jobject obj, jbyteArray abData, jint nOffset, jint nLength){	snd_seq_event_t*	handle;	jbyte*			pData;	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setVar(): begin\n"); }	handle = getHandle(env, obj);	if (snd_seq_ev_is_variable(handle))	{		// printf("var data   free: %p\n", handle->data.ext.ptr);		free(handle->data.ext.ptr);	}	pData = (jbyte*) malloc(nLength);	// printf("var data malloc: %p\n", pData);	if (pData == NULL)	{		if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setVar(): malloc() failed, throwing exception\n"); }		throwRuntimeException(env, "malloc() failed");		return;	}	(*env)->GetByteArrayRegion(env, abData, nOffset, nLength, pData);	snd_seq_ev_set_variable(handle, nLength, pData);	if (debug_flag) { fprintf(debug_file, "Java_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setVar(): end\n"); }}/* * Class:     org_tritonus_lowlevel_alsa_AlsaSeqEvent * Method:    setTrace * Signature: (Z)V */JNIEXPORT void JNICALLJava_org_tritonus_lowlevel_alsa_AlsaSeqEvent_setTrace(JNIEnv* env, jclass cls, jboolean bTrace){	debug_flag = bTrace;	debug_file = stderr;}/*** org_tritonus_lowlevel_alsa_AlsaSeqEvent.c ***/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?