diff --git a/src/libandroid/looper.c b/src/libandroid/looper.c index 89cfc5fe..8fc1c590 100644 --- a/src/libandroid/looper.c +++ b/src/libandroid/looper.c @@ -1,22 +1,39 @@ #include +#include -struct ALooper { - int dummy; -}; +typedef void ALooper; +typedef int (*Looper_callbackFunc)(int fd, int events, void* data); -struct ALooper a_looper; - -struct ALooper* ALooper_forThread() +void _ZN7android6Looper12getForThreadEv(void **ret); // no clue why itanium ABI does this with return values +ALooper * ALooper_forThread() { - return &a_looper; + void *ret; + _ZN7android6Looper12getForThreadEv(&ret); + return ret; } -struct ALooper* ALooper_prepare(int opts) +void _ZN7android6Looper7prepareEi(void **ret, int opts); // no clue why itanium ABI does this with return values +ALooper * ALooper_prepare(int opts) { - return NULL; + void *ret; + _ZN7android6Looper7prepareEi(&ret, opts); + return ret; } +int _ZN7android6Looper7pollAllEiPiS1_PPv(void *this, int timeoutMillis, int* outFd, int* outEvents, void** outData); int ALooper_pollAll(int timeoutMillis, int* outFd, int* outEvents, void** outData) { - return 0; + ALooper *looper = ALooper_forThread(); + if(!looper) { + fprintf(stderr, "ALooper_pollAll: ALooper_forThread returned NULL\n"); + return 0; + } + + return _ZN7android6Looper7pollAllEiPiS1_PPv(looper, timeoutMillis, outFd, outEvents, outData); +} + +int _ZN7android6Looper5addFdEiiiPFiiiPvES1_(void *this, int fd, int ident, int events, Looper_callbackFunc callback, void* data); +int ALooper_addFd(ALooper* looper, int fd, int ident, int events, Looper_callbackFunc callback, void* data) +{ + return _ZN7android6Looper5addFdEiiiPFiiiPvES1_(looper, fd, ident, events, callback, data); } diff --git a/src/libandroid/sensor.c b/src/libandroid/sensor.c index 1727762a..840617bf 100644 --- a/src/libandroid/sensor.c +++ b/src/libandroid/sensor.c @@ -18,12 +18,22 @@ typedef void * ALooper_callbackFunc; struct ASensorManager a_sensor_manager; +// --- sensor manager + struct ASensorManager* ASensorManager_getInstance() { return &a_sensor_manager; } -// --- sensor manager +struct ASensorManager* ASensorManager_getInstanceForPackage(const char* packageName) +{ + return &a_sensor_manager; +} + +struct ASensor const* ASensorManager_getDefaultSensor(struct ASensorManager* manager, int type) +{ + return NULL; // no sensor of this type exists +} int ASensorManager_getSensorList(struct ASensorManager* manager, struct ASensorList* list) {