Correct SIGSEGV with forwarders.
[SquirrelJME.git] / emulators / emulator-base / src / main / c / mle_pencil.c
blob7e52cdf1a5ac9919e4b343469aaa698b4cb00678
1 /* -*- Mode: C++; indent-tabs-mode: t; tab-width: 4 -*-
2 // ---------------------------------------------------------------------------
3 // SquirrelJME
4 // Copyright (C) Stephanie Gawroriski <xer@multiphasicapps.net>
5 // ---------------------------------------------------------------------------
6 // SquirrelJME is under the Mozilla Public License Version 2.0.
7 // See license.mkd for licensing and copyright information.
8 // ------------------------------------------------------------------------ */
10 #include "squirreljme.h"
12 // The class to forward to
13 #define SWINGPENCIL_CLASSNAME "cc/squirreljme/emulator/uiform/SwingPencilShelf"
15 // Descriptors
16 #define SWINGPENCIL_CAPABILITIES_DESC "(I)I"
17 #define SWINGPENCIL_NATIVEIMAGELOADTYPES_DESC "()I"
18 #define SWINGPENCIL_NATIVEIMAGELOADRGBA_DESC "(I[BIILcc/squirreljme/jvm/mle/callbacks/NativeImageLoadCallback;)Ljava/lang/Object;"
20 JNIEXPORT jint JNICALL Impl_mle_PencilShelf_capabilities(JNIEnv* env,
21 jclass classy, jint pixelFormat)
23 return forwardCallStaticInteger(env, SWINGPENCIL_CLASSNAME,
24 "capabilities", SWINGPENCIL_CAPABILITIES_DESC,
25 pixelFormat);
28 JNIEXPORT jobject JNICALL Impl_mle_PencilShelf_nativeImageLoadRGBA(JNIEnv* env,
29 jclass classy, jint type, jbyteArray buf, jint off, jint len,
30 jobject callback)
32 return forwardCallStaticObject(env, SWINGPENCIL_CLASSNAME,
33 "nativeImageLoadRGBA", SWINGPENCIL_NATIVEIMAGELOADRGBA_DESC,
34 type, buf, off, len, callback);
37 JNIEXPORT jint JNICALL Impl_mle_PencilShelf_nativeImageLoadTypes(JNIEnv* env,
38 jclass classy)
40 return forwardCallStaticInteger(env, SWINGPENCIL_CLASSNAME,
41 "nativeImageLoadTypes", SWINGPENCIL_NATIVEIMAGELOADTYPES_DESC);
44 static const JNINativeMethod mlePencilMethods[] =
46 {"capabilities", SWINGPENCIL_CAPABILITIES_DESC,
47 (void*)Impl_mle_PencilShelf_capabilities},
48 {"nativeImageLoadRGBA", SWINGPENCIL_NATIVEIMAGELOADRGBA_DESC,
49 (void*)Impl_mle_PencilShelf_nativeImageLoadRGBA},
50 {"nativeImageLoadTypes", SWINGPENCIL_NATIVEIMAGELOADTYPES_DESC,
51 (void*)Impl_mle_PencilShelf_nativeImageLoadTypes},
54 jint JNICALL mlePencilInit(JNIEnv* env, jclass classy)
56 return (*env)->RegisterNatives(env,
57 (*env)->FindClass(env, "cc/squirreljme/jvm/mle/PencilShelf"),
58 mlePencilMethods, sizeof(mlePencilMethods) / sizeof(JNINativeMethod));