Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 307ed31c authored by Jeff Brown's avatar Jeff Brown Committed by Android (Google) Code Review
Browse files

Merge "Remove incomplete input device enumeration NDK API." into gingerbread

parents f560ceab 5fad2675
Loading
Loading
Loading
Loading
+0 −23
Original line number Diff line number Diff line
@@ -466,29 +466,6 @@ private:
    KeyedVector<int32_t, MotionRange> mMotionRanges;
};

/*
 * Provides remote access to information about an input device.
 *
 * Note: This is essentially a wrapper for Binder calls into the Window Manager Service.
 */
class InputDeviceProxy : public RefBase, public AInputDevice {
protected:
    InputDeviceProxy();
    virtual ~InputDeviceProxy();

public:
    static void getDeviceIds(Vector<int32_t>& outIds);

    static sp<InputDeviceProxy> getDevice(int32_t id);

    inline const InputDeviceInfo* getInfo() { return & mInfo; }

    // TODO add hasKeys, keymap, etc...

private:
    InputDeviceInfo mInfo;
};


} // namespace android

+0 −17
Original line number Diff line number Diff line
@@ -210,21 +210,4 @@ void InputDeviceInfo::addMotionRange(int32_t rangeType, const MotionRange& range
    mMotionRanges.add(rangeType, range);
}

// class InputDeviceProxy

InputDeviceProxy::InputDeviceProxy() {
}

InputDeviceProxy::~InputDeviceProxy() {
}

void InputDeviceProxy::getDeviceIds(Vector<int32_t>& outIds) {
    // TODO use Binder
}

sp<InputDeviceProxy> InputDeviceProxy::getDevice(int32_t id) {
    // TODO use Binder
    return NULL;
}

} // namespace android
+0 −72
Original line number Diff line number Diff line
@@ -33,7 +33,6 @@ using android::InputEvent;
using android::KeyEvent;
using android::MotionEvent;
using android::InputDeviceInfo;
using android::InputDeviceProxy;
using android::sp;
using android::Vector;

@@ -270,74 +269,3 @@ int32_t AInputQueue_preDispatchEvent(AInputQueue* queue, AInputEvent* event) {
void AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled) {
    queue->finishEvent(event, handled != 0);
}


int32_t AInputDevice_getDeviceIds(int32_t* idBuf, size_t nMax, size_t* nActual) {
    Vector<int32_t> ids;
    InputDeviceProxy::getDeviceIds(ids);

    if (nActual) {
        *nActual = ids.size();
    }

    if (idBuf && ids.size() < nMax) {
        memcpy(idBuf, ids.array(), ids.size() * sizeof(int32_t));
        return 0;
    }

    return -ENOMEM;
}

AInputDevice* AInputDevice_acquire(int32_t deviceId) {
    sp<InputDeviceProxy> proxy(InputDeviceProxy::getDevice(deviceId));
    if (proxy == NULL) {
        return NULL;
    }
    proxy->incStrong((void*)AInputDevice_acquire);
    return static_cast<AInputDevice*>(proxy.get());
}

void AInputDevice_release(AInputDevice* device) {
    if (device) {
        InputDeviceProxy* proxy = static_cast<InputDeviceProxy*>(device);
        proxy->decStrong((void*)AInputDevice_acquire);
    }
}

const char* AInputDevice_getName(AInputDevice* device) {
    InputDeviceProxy* proxy = static_cast<InputDeviceProxy*>(device);
    return proxy->getInfo()->getName().string();
}

uint32_t AInputDevice_getSources(AInputDevice* device) {
    InputDeviceProxy* proxy = static_cast<InputDeviceProxy*>(device);
    return proxy->getInfo()->getSources();
}

int32_t AInputDevice_getKeyboardType(AInputDevice* device) {
    InputDeviceProxy* proxy = static_cast<InputDeviceProxy*>(device);
    return proxy->getInfo()->getKeyboardType();
}

int32_t AInputDevice_getMotionRange(AInputDevice* device, int32_t rangeType,
        float* outMin, float* outMax, float* outFlat, float* outFuzz) {
    InputDeviceProxy* proxy = static_cast<InputDeviceProxy*>(device);
    const InputDeviceInfo::MotionRange* range = proxy->getInfo()->getMotionRange(rangeType);
    if (range) {
        if (outMin) {
            *outMin = range->min;
        }
        if (outMax) {
            *outMax = range->max;
        }
        if (outFlat) {
            *outFlat = range->flat;
        }
        if (outFuzz) {
            *outFuzz = range->fuzz;
        }
        return 0;
    } else {
        return -ENOTSUP;
    }
}
+0 −56
Original line number Diff line number Diff line
@@ -662,62 +662,6 @@ int32_t AInputQueue_preDispatchEvent(AInputQueue* queue, AInputEvent* event);
 */
void AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled);

/*
 * Input devices.
 *
 * These functions provide a mechanism for querying the set of available input devices
 * and their characteristics and capabilities.
 */
struct AInputDevice;
typedef struct AInputDevice AInputDevice;

/*
 * Populates the supplied array with the ids of all input devices in the system.
 * Sets nActual to the actual number of devices.
 * Returns zero if enumeration was successful.
 * Returns non-zero if the actual number of devices is greater than nMax, in which case the
 * client should call the method again with a larger id buffer.
 */
int32_t AInputDevice_getDeviceIds(int32_t* idBuf, size_t nMax, size_t* nActual);

/*
 * Acquires a device by id.
 * Returns NULL if the device was not found.
 *
 * Note: The returned object must be freed using AInputDevice_release when no longer needed.
 */
AInputDevice* AInputDevice_acquire(int32_t deviceId);

/*
 * Releases a device previously acquired by AInputDevice_acquire.
 * If device is NULL, this function does nothing.
 */
void AInputDevice_release(AInputDevice* device);

/*
 * Gets the name of an input device.
 *
 * Note: The caller should copy the name into a private buffer since the returned pointer
 * will become invalid when the device object is released.
 */
const char* AInputDevice_getName(AInputDevice* device);

/*
 * Gets the combination of input sources provided by the input device.
 */
uint32_t AInputDevice_getSources(AInputDevice* device);

/*
 * Gets the keyboard type.
 */
int32_t AInputDevice_getKeyboardType(AInputDevice* device);

/* Gets the minimum value, maximum value, flat position and error tolerance for a
 * particular motion coodinate.
 * Returns zero if the device supports the specified motion range. */
int32_t AInputDevice_getMotionRange(AInputDevice* device, int32_t rangeType,
        float* outMin, float* outMax, float* outFlat, float* outFuzz);

#ifdef __cplusplus
}
#endif