More bugfixes for Evdev code. Enable ROOT_BUILD since it's the root branch.

This commit is contained in:
Cameron Gutman 2014-09-01 23:38:47 -07:00
parent 364a9fa7d7
commit bc166a713d
5 changed files with 18 additions and 2 deletions

View File

@ -45,7 +45,7 @@ Java_com_limelight_binding_input_evdev_EvdevReader_isMouse(JNIEnv *env, jobject
} }
JNIEXPORT jint JNICALL JNIEXPORT jint JNICALL
Java_com_limelight_binding_input_evdev_EvdevReader_read(JNIEnv *env, jint fd, jbyteArray buffer) { Java_com_limelight_binding_input_evdev_EvdevReader_read(JNIEnv *env, jobject this, jint fd, jbyteArray buffer) {
jint ret; jint ret;
jbyte *data = (*env)->GetByteArrayElements(env, buffer, NULL); jbyte *data = (*env)->GetByteArrayElements(env, buffer, NULL);
if (data == NULL) { if (data == NULL) {

View File

@ -1,5 +1,5 @@
package com.limelight; package com.limelight;
public class LimelightBuildProps { public class LimelightBuildProps {
public static final boolean ROOT_BUILD = false; public static final boolean ROOT_BUILD = true;
} }

View File

@ -44,6 +44,8 @@ public class EvdevHandler {
return; return;
} }
LimeLog.info("Grabbed device for raw mouse input: "+absolutePath);
ByteBuffer buffer = ByteBuffer.allocate(EvdevEvent.EVDEV_MAX_EVENT_SIZE); ByteBuffer buffer = ByteBuffer.allocate(EvdevEvent.EVDEV_MAX_EVENT_SIZE);
try { try {

View File

@ -5,6 +5,10 @@ import java.nio.ByteBuffer;
import com.limelight.LimeLog; import com.limelight.LimeLog;
public class EvdevReader { public class EvdevReader {
static {
System.loadLibrary("evdev_reader");
}
// Requires root to chmod /dev/input/eventX // Requires root to chmod /dev/input/eventX
public static native boolean setPermissions(String fileName, int octalPermissions); public static native boolean setPermissions(String fileName, int octalPermissions);

View File

@ -3,6 +3,8 @@ package com.limelight.binding.input.evdev;
import java.io.File; import java.io.File;
import java.util.HashMap; import java.util.HashMap;
import com.limelight.LimeLog;
import android.os.FileObserver; import android.os.FileObserver;
public class EvdevWatcher { public class EvdevWatcher {
@ -16,6 +18,10 @@ public class EvdevWatcher {
private FileObserver observer = new FileObserver(PATH, FileObserver.CREATE | FileObserver.DELETE) { private FileObserver observer = new FileObserver(PATH, FileObserver.CREATE | FileObserver.DELETE) {
@Override @Override
public void onEvent(int event, String fileName) { public void onEvent(int event, String fileName) {
if (fileName == null) {
return;
}
if (!fileName.startsWith(REQUIRED_FILE_PREFIX)) { if (!fileName.startsWith(REQUIRED_FILE_PREFIX)) {
return; return;
} }
@ -26,6 +32,8 @@ public class EvdevWatcher {
} }
if ((event & FileObserver.CREATE) != 0) { if ((event & FileObserver.CREATE) != 0) {
LimeLog.info("Starting evdev handler for "+fileName);
EvdevHandler handler = new EvdevHandler(PATH + "/" + fileName, listener); EvdevHandler handler = new EvdevHandler(PATH + "/" + fileName, listener);
handler.start(); handler.start();
@ -33,6 +41,8 @@ public class EvdevWatcher {
} }
if ((event & FileObserver.DELETE) != 0) { if ((event & FileObserver.DELETE) != 0) {
LimeLog.info("Halting evdev handler for "+fileName);
EvdevHandler handler = handlers.get(fileName); EvdevHandler handler = handlers.get(fileName);
if (handler != null) { if (handler != null) {
handler.notifyDeleted(); handler.notifyDeleted();