1#ifndef NIOBuffer_DEFINED
2#define NIOBuffer_DEFINED
3
4#include <jni.h>
5#include "SkBitmap.h"
6
7class NIOBuffer {
8public:
9    NIOBuffer(JNIEnv* env, jobject buffer);
10    // this checks to ensure that free() was called
11    ~NIOBuffer();
12
13    void* lock(JNIEnv* env, int* remaining);
14    void unlock(JNIEnv* env, bool dataChanged);
15    // must be called before destructor
16    void free(JNIEnv* env);
17
18    // call once on boot, to setup JNI globals
19    static void RegisterJNI(JNIEnv*);
20
21private:
22    jobject     fBuffer;
23    void*       fLockedPtr;
24    jbyteArray  fLockedArray;
25};
26
27#endif
28