Ejemplo n.º 1
0
static jlong Region_createFromParcel(JNIEnv* env, jobject clazz, jobject parcel)
{
    if (parcel == nullptr) {
        return 0;
    }

    android::Parcel* p = android::parcelForJavaObject(env, parcel);

    const size_t size = p->readInt32();
    const void* regionData = p->readInplace(size);
    if (regionData == nullptr) {
        return 0;
    }

    SkRegion* region = new SkRegion;
    size_t actualSize = region->readFromMemory(regionData, size);
    if (size != actualSize) {
        delete region;
        return 0;
    }

    return reinterpret_cast<jlong>(region);
}