示例#1
0
JNIEXPORT jboolean JNICALL jni_freerdp_send_clipboard_data(JNIEnv *env, jclass cls, jint instance, jstring jdata)
{
	ANDROID_EVENT* event;
	freerdp* inst = (freerdp*)instance;
	const jbyte *data = jdata != NULL ? (*env)->GetStringUTFChars(env, jdata, NULL) : NULL;
	int data_length = data ? strlen(data) : 0;      
	jboolean ret = JNI_FALSE;;

	event = (ANDROID_EVENT*) android_event_clipboard_new((void*)data, data_length);
	if (!event)
		goto out_fail;

	if (!android_push_event(inst, event))
	{
		android_event_clipboard_free((ANDROID_EVENT_CLIPBOARD *)event);
		goto out_fail;
	}

	DEBUG_ANDROID("send_clipboard_data: (%s)", data);

	ret = JNI_TRUE;
out_fail:
	if (data)
		(*env)->ReleaseStringUTFChars(env, jdata, data);
	return ret;
}
示例#2
0
void android_event_free(ANDROID_EVENT* event)
{
	if (!event)
		return;

	switch (event->type)
	{
		case EVENT_TYPE_KEY:
			android_event_key_free((ANDROID_EVENT_KEY*)event);
			break;

		case EVENT_TYPE_KEY_UNICODE:
			android_event_unicodekey_free((ANDROID_EVENT_KEY*)event);
			break;

		case EVENT_TYPE_CURSOR:
			android_event_cursor_free((ANDROID_EVENT_CURSOR*)event);
			break;

		case EVENT_TYPE_DISCONNECT:
			android_event_disconnect_free((ANDROID_EVENT*)event);
			break;

		case EVENT_TYPE_CLIPBOARD:
			android_event_clipboard_free((ANDROID_EVENT_CLIPBOARD*)event);
			break;

		default:
			break;
	}
}