am de8c3cf1: Merge "AArch64: Use long for pointers in App/Backup"
* commit 'de8c3cf13b0fc0655cf49934658e652b441ee019': AArch64: Use long for pointers in App/Backup
This commit is contained in:
@@ -76,7 +76,7 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
|
|||||||
private NativeContentView mNativeContentView;
|
private NativeContentView mNativeContentView;
|
||||||
private InputMethodManager mIMM;
|
private InputMethodManager mIMM;
|
||||||
|
|
||||||
private int mNativeHandle;
|
private long mNativeHandle;
|
||||||
|
|
||||||
private InputQueue mCurInputQueue;
|
private InputQueue mCurInputQueue;
|
||||||
private SurfaceHolder mCurSurfaceHolder;
|
private SurfaceHolder mCurSurfaceHolder;
|
||||||
@@ -91,27 +91,26 @@ public class NativeActivity extends Activity implements SurfaceHolder.Callback2,
|
|||||||
|
|
||||||
private boolean mDestroyed;
|
private boolean mDestroyed;
|
||||||
|
|
||||||
private native int loadNativeCode(String path, String funcname, MessageQueue queue,
|
private native long loadNativeCode(String path, String funcname, MessageQueue queue,
|
||||||
String internalDataPath, String obbPath, String externalDataPath, int sdkVersion,
|
String internalDataPath, String obbPath, String externalDataPath, int sdkVersion,
|
||||||
AssetManager assetMgr, byte[] savedState);
|
AssetManager assetMgr, byte[] savedState);
|
||||||
private native void unloadNativeCode(int handle);
|
private native void unloadNativeCode(long handle);
|
||||||
|
private native void onStartNative(long handle);
|
||||||
private native void onStartNative(int handle);
|
private native void onResumeNative(long handle);
|
||||||
private native void onResumeNative(int handle);
|
private native byte[] onSaveInstanceStateNative(long handle);
|
||||||
private native byte[] onSaveInstanceStateNative(int handle);
|
private native void onPauseNative(long handle);
|
||||||
private native void onPauseNative(int handle);
|
private native void onStopNative(long handle);
|
||||||
private native void onStopNative(int handle);
|
private native void onConfigurationChangedNative(long handle);
|
||||||
private native void onConfigurationChangedNative(int handle);
|
private native void onLowMemoryNative(long handle);
|
||||||
private native void onLowMemoryNative(int handle);
|
private native void onWindowFocusChangedNative(long handle, boolean focused);
|
||||||
private native void onWindowFocusChangedNative(int handle, boolean focused);
|
private native void onSurfaceCreatedNative(long handle, Surface surface);
|
||||||
private native void onSurfaceCreatedNative(int handle, Surface surface);
|
private native void onSurfaceChangedNative(long handle, Surface surface,
|
||||||
private native void onSurfaceChangedNative(int handle, Surface surface,
|
|
||||||
int format, int width, int height);
|
int format, int width, int height);
|
||||||
private native void onSurfaceRedrawNeededNative(int handle, Surface surface);
|
private native void onSurfaceRedrawNeededNative(long handle, Surface surface);
|
||||||
private native void onSurfaceDestroyedNative(int handle);
|
private native void onSurfaceDestroyedNative(long handle);
|
||||||
private native void onInputQueueCreatedNative(int handle, int queuePtr);
|
private native void onInputQueueCreatedNative(long handle, long queuePtr);
|
||||||
private native void onInputQueueDestroyedNative(int handle, int queuePtr);
|
private native void onInputQueueDestroyedNative(long handle, long queuePtr);
|
||||||
private native void onContentRectChangedNative(int handle, int x, int y, int w, int h);
|
private native void onContentRectChangedNative(long handle, int x, int y, int w, int h);
|
||||||
|
|
||||||
static class NativeContentView extends View {
|
static class NativeContentView extends View {
|
||||||
NativeActivity mActivity;
|
NativeActivity mActivity;
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ import java.io.IOException;
|
|||||||
* }</pre>
|
* }</pre>
|
||||||
*/
|
*/
|
||||||
public class BackupDataInput {
|
public class BackupDataInput {
|
||||||
int mBackupReader;
|
long mBackupReader;
|
||||||
|
|
||||||
private EntityHeader mHeader = new EntityHeader();
|
private EntityHeader mHeader = new EntityHeader();
|
||||||
private boolean mHeaderReady;
|
private boolean mHeaderReady;
|
||||||
@@ -185,10 +185,10 @@ public class BackupDataInput {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private native static int ctor(FileDescriptor fd);
|
private native static long ctor(FileDescriptor fd);
|
||||||
private native static void dtor(int mBackupReader);
|
private native static void dtor(long mBackupReader);
|
||||||
|
|
||||||
private native int readNextHeader_native(int mBackupReader, EntityHeader entity);
|
private native int readNextHeader_native(long mBackupReader, EntityHeader entity);
|
||||||
private native int readEntityData_native(int mBackupReader, byte[] data, int offset, int size);
|
private native int readEntityData_native(long mBackupReader, byte[] data, int offset, int size);
|
||||||
private native int skipEntityData_native(int mBackupReader);
|
private native int skipEntityData_native(long mBackupReader);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ import java.io.IOException;
|
|||||||
* @see BackupAgent
|
* @see BackupAgent
|
||||||
*/
|
*/
|
||||||
public class BackupDataOutput {
|
public class BackupDataOutput {
|
||||||
int mBackupWriter;
|
long mBackupWriter;
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
public BackupDataOutput(FileDescriptor fd) {
|
public BackupDataOutput(FileDescriptor fd) {
|
||||||
@@ -121,11 +121,11 @@ public class BackupDataOutput {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private native static int ctor(FileDescriptor fd);
|
private native static long ctor(FileDescriptor fd);
|
||||||
private native static void dtor(int mBackupWriter);
|
private native static void dtor(long mBackupWriter);
|
||||||
|
|
||||||
private native static int writeEntityHeader_native(int mBackupWriter, String key, int dataSize);
|
private native static int writeEntityHeader_native(long mBackupWriter, String key, int dataSize);
|
||||||
private native static int writeEntityData_native(int mBackupWriter, byte[] data, int size);
|
private native static int writeEntityData_native(long mBackupWriter, byte[] data, int size);
|
||||||
private native static void setKeyPrefix_native(int mBackupWriter, String keyPrefix);
|
private native static void setKeyPrefix_native(long mBackupWriter, String keyPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import java.io.FileDescriptor;
|
|||||||
class FileBackupHelperBase {
|
class FileBackupHelperBase {
|
||||||
private static final String TAG = "FileBackupHelperBase";
|
private static final String TAG = "FileBackupHelperBase";
|
||||||
|
|
||||||
int mPtr;
|
long mPtr;
|
||||||
Context mContext;
|
Context mContext;
|
||||||
boolean mExceptionLogged;
|
boolean mExceptionLogged;
|
||||||
|
|
||||||
@@ -115,14 +115,13 @@ class FileBackupHelperBase {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static native int ctor();
|
private static native long ctor();
|
||||||
private static native void dtor(int ptr);
|
private static native void dtor(long ptr);
|
||||||
|
|
||||||
native private static int performBackup_native(FileDescriptor oldState,
|
native private static int performBackup_native(FileDescriptor oldState,
|
||||||
int data, FileDescriptor newState, String[] files, String[] keys);
|
long data, FileDescriptor newState, String[] files, String[] keys);
|
||||||
|
private static native int writeFile_native(long ptr, String filename, long backupReader);
|
||||||
private static native int writeFile_native(int ptr, String filename, int backupReader);
|
private static native int writeSnapshot_native(long ptr, FileDescriptor fd);
|
||||||
private static native int writeSnapshot_native(int ptr, FileDescriptor fd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -241,10 +241,10 @@ static int mainWorkCallback(int fd, int events, void* data) {
|
|||||||
|
|
||||||
// ------------------------------------------------------------------------
|
// ------------------------------------------------------------------------
|
||||||
|
|
||||||
static jint
|
static jlong
|
||||||
loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName,
|
loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName,
|
||||||
jobject messageQueue, jstring internalDataDir, jstring obbDir,
|
jobject messageQueue, jstring internalDataDir, jstring obbDir,
|
||||||
jstring externalDataDir, int sdkVersion,
|
jstring externalDataDir, jint sdkVersion,
|
||||||
jobject jAssetMgr, jbyteArray savedState)
|
jobject jAssetMgr, jbyteArray savedState)
|
||||||
{
|
{
|
||||||
LOG_TRACE("loadNativeCode_native");
|
LOG_TRACE("loadNativeCode_native");
|
||||||
@@ -338,11 +338,11 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (jint)code;
|
return (jlong)code;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
unloadNativeCode_native(JNIEnv* env, jobject clazz, jint handle)
|
unloadNativeCode_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("unloadNativeCode_native");
|
LOG_TRACE("unloadNativeCode_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -352,7 +352,7 @@ unloadNativeCode_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onStart_native(JNIEnv* env, jobject clazz, jint handle)
|
onStart_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onStart_native");
|
LOG_TRACE("onStart_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -364,7 +364,7 @@ onStart_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onResume_native(JNIEnv* env, jobject clazz, jint handle)
|
onResume_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onResume_native");
|
LOG_TRACE("onResume_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -376,7 +376,7 @@ onResume_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static jbyteArray
|
static jbyteArray
|
||||||
onSaveInstanceState_native(JNIEnv* env, jobject clazz, jint handle)
|
onSaveInstanceState_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onSaveInstanceState_native");
|
LOG_TRACE("onSaveInstanceState_native");
|
||||||
|
|
||||||
@@ -403,7 +403,7 @@ onSaveInstanceState_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onPause_native(JNIEnv* env, jobject clazz, jint handle)
|
onPause_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onPause_native");
|
LOG_TRACE("onPause_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -415,7 +415,7 @@ onPause_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onStop_native(JNIEnv* env, jobject clazz, jint handle)
|
onStop_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onStop_native");
|
LOG_TRACE("onStop_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -427,7 +427,7 @@ onStop_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onConfigurationChanged_native(JNIEnv* env, jobject clazz, jint handle)
|
onConfigurationChanged_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onConfigurationChanged_native");
|
LOG_TRACE("onConfigurationChanged_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -439,7 +439,7 @@ onConfigurationChanged_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onLowMemory_native(JNIEnv* env, jobject clazz, jint handle)
|
onLowMemory_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onLowMemory_native");
|
LOG_TRACE("onLowMemory_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -451,7 +451,7 @@ onLowMemory_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jint handle, jboolean focused)
|
onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jlong handle, jboolean focused)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onWindowFocusChanged_native");
|
LOG_TRACE("onWindowFocusChanged_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -463,7 +463,7 @@ onWindowFocusChanged_native(JNIEnv* env, jobject clazz, jint handle, jboolean fo
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onSurfaceCreated_native(JNIEnv* env, jobject clazz, jint handle, jobject surface)
|
onSurfaceCreated_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onSurfaceCreated_native");
|
LOG_TRACE("onSurfaceCreated_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -483,7 +483,7 @@ static int32_t getWindowProp(ANativeWindow* window, int what) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface,
|
onSurfaceChanged_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface,
|
||||||
jint format, jint width, jint height)
|
jint format, jint width, jint height)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onSurfaceChanged_native");
|
LOG_TRACE("onSurfaceChanged_native");
|
||||||
@@ -524,7 +524,7 @@ onSurfaceChanged_native(JNIEnv* env, jobject clazz, jint handle, jobject surface
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jint handle)
|
onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jlong handle)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onSurfaceRedrawNeeded_native");
|
LOG_TRACE("onSurfaceRedrawNeeded_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -536,7 +536,7 @@ onSurfaceRedrawNeeded_native(JNIEnv* env, jobject clazz, jint handle)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jobject surface)
|
onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jlong handle, jobject surface)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onSurfaceDestroyed_native");
|
LOG_TRACE("onSurfaceDestroyed_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -550,7 +550,7 @@ onSurfaceDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jobject surfa
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onInputQueueCreated_native(JNIEnv* env, jobject clazz, jint handle, jint queuePtr)
|
onInputQueueCreated_native(JNIEnv* env, jobject clazz, jlong handle, jlong queuePtr)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onInputChannelCreated_native");
|
LOG_TRACE("onInputChannelCreated_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -563,7 +563,7 @@ onInputQueueCreated_native(JNIEnv* env, jobject clazz, jint handle, jint queuePt
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jint queuePtr)
|
onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jlong handle, jlong queuePtr)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onInputChannelDestroyed_native");
|
LOG_TRACE("onInputChannelDestroyed_native");
|
||||||
if (handle != 0) {
|
if (handle != 0) {
|
||||||
@@ -576,7 +576,7 @@ onInputQueueDestroyed_native(JNIEnv* env, jobject clazz, jint handle, jint queue
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
onContentRectChanged_native(JNIEnv* env, jobject clazz, jint handle,
|
onContentRectChanged_native(JNIEnv* env, jobject clazz, jlong handle,
|
||||||
jint x, jint y, jint w, jint h)
|
jint x, jint y, jint w, jint h)
|
||||||
{
|
{
|
||||||
LOG_TRACE("onContentRectChanged_native");
|
LOG_TRACE("onContentRectChanged_native");
|
||||||
@@ -594,26 +594,26 @@ onContentRectChanged_native(JNIEnv* env, jobject clazz, jint handle,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const JNINativeMethod g_methods[] = {
|
static const JNINativeMethod g_methods[] = {
|
||||||
{ "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)I",
|
{ "loadNativeCode", "(Ljava/lang/String;Ljava/lang/String;Landroid/os/MessageQueue;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/res/AssetManager;[B)J",
|
||||||
(void*)loadNativeCode_native },
|
(void*)loadNativeCode_native },
|
||||||
{ "unloadNativeCode", "(I)V", (void*)unloadNativeCode_native },
|
{ "unloadNativeCode", "(J)V", (void*)unloadNativeCode_native },
|
||||||
{ "onStartNative", "(I)V", (void*)onStart_native },
|
{ "onStartNative", "(J)V", (void*)onStart_native },
|
||||||
{ "onResumeNative", "(I)V", (void*)onResume_native },
|
{ "onResumeNative", "(J)V", (void*)onResume_native },
|
||||||
{ "onSaveInstanceStateNative", "(I)[B", (void*)onSaveInstanceState_native },
|
{ "onSaveInstanceStateNative", "(J)[B", (void*)onSaveInstanceState_native },
|
||||||
{ "onPauseNative", "(I)V", (void*)onPause_native },
|
{ "onPauseNative", "(J)V", (void*)onPause_native },
|
||||||
{ "onStopNative", "(I)V", (void*)onStop_native },
|
{ "onStopNative", "(J)V", (void*)onStop_native },
|
||||||
{ "onConfigurationChangedNative", "(I)V", (void*)onConfigurationChanged_native },
|
{ "onConfigurationChangedNative", "(J)V", (void*)onConfigurationChanged_native },
|
||||||
{ "onLowMemoryNative", "(I)V", (void*)onLowMemory_native },
|
{ "onLowMemoryNative", "(J)V", (void*)onLowMemory_native },
|
||||||
{ "onWindowFocusChangedNative", "(IZ)V", (void*)onWindowFocusChanged_native },
|
{ "onWindowFocusChangedNative", "(JZ)V", (void*)onWindowFocusChanged_native },
|
||||||
{ "onSurfaceCreatedNative", "(ILandroid/view/Surface;)V", (void*)onSurfaceCreated_native },
|
{ "onSurfaceCreatedNative", "(JLandroid/view/Surface;)V", (void*)onSurfaceCreated_native },
|
||||||
{ "onSurfaceChangedNative", "(ILandroid/view/Surface;III)V", (void*)onSurfaceChanged_native },
|
{ "onSurfaceChangedNative", "(JLandroid/view/Surface;III)V", (void*)onSurfaceChanged_native },
|
||||||
{ "onSurfaceRedrawNeededNative", "(ILandroid/view/Surface;)V", (void*)onSurfaceRedrawNeeded_native },
|
{ "onSurfaceRedrawNeededNative", "(JLandroid/view/Surface;)V", (void*)onSurfaceRedrawNeeded_native },
|
||||||
{ "onSurfaceDestroyedNative", "(I)V", (void*)onSurfaceDestroyed_native },
|
{ "onSurfaceDestroyedNative", "(J)V", (void*)onSurfaceDestroyed_native },
|
||||||
{ "onInputQueueCreatedNative", "(II)V",
|
{ "onInputQueueCreatedNative", "(JJ)V",
|
||||||
(void*)onInputQueueCreated_native },
|
(void*)onInputQueueCreated_native },
|
||||||
{ "onInputQueueDestroyedNative", "(II)V",
|
{ "onInputQueueDestroyedNative", "(JJ)V",
|
||||||
(void*)onInputQueueDestroyed_native },
|
(void*)onInputQueueDestroyed_native },
|
||||||
{ "onContentRectChangedNative", "(IIIII)V", (void*)onContentRectChanged_native },
|
{ "onContentRectChangedNative", "(JIIII)V", (void*)onContentRectChanged_native },
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char* const kNativeActivityPathName = "android/app/NativeActivity";
|
static const char* const kNativeActivityPathName = "android/app/NativeActivity";
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ static struct {
|
|||||||
* path: absolute path to the file to be saved
|
* path: absolute path to the file to be saved
|
||||||
* dataOutput: the BackupDataOutput object that we're saving into
|
* dataOutput: the BackupDataOutput object that we're saving into
|
||||||
*/
|
*/
|
||||||
static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
|
static jint backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
|
||||||
jstring domainObj, jstring linkdomain,
|
jstring domainObj, jstring linkdomain,
|
||||||
jstring rootpathObj, jstring pathObj, jobject dataOutputObj) {
|
jstring rootpathObj, jstring pathObj, jobject dataOutputObj) {
|
||||||
int ret;
|
int ret;
|
||||||
@@ -92,22 +92,22 @@ static int backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj,
|
|||||||
if (packagenamechars) env->ReleaseStringUTFChars(packageNameObj, packagenamechars);
|
if (packagenamechars) env->ReleaseStringUTFChars(packageNameObj, packagenamechars);
|
||||||
|
|
||||||
// Extract the data output fd
|
// Extract the data output fd
|
||||||
BackupDataWriter* writer = (BackupDataWriter*) env->GetIntField(dataOutputObj,
|
BackupDataWriter* writer = (BackupDataWriter*) env->GetLongField(dataOutputObj,
|
||||||
sBackupDataOutput.mBackupWriter);
|
sBackupDataOutput.mBackupWriter);
|
||||||
|
|
||||||
// Validate
|
// Validate
|
||||||
if (!writer) {
|
if (!writer) {
|
||||||
ALOGE("No output stream provided [%s]", path.string());
|
ALOGE("No output stream provided [%s]", path.string());
|
||||||
return -1;
|
return (jint) -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (path.length() < rootpath.length()) {
|
if (path.length() < rootpath.length()) {
|
||||||
ALOGE("file path [%s] shorter than root path [%s]",
|
ALOGE("file path [%s] shorter than root path [%s]",
|
||||||
path.string(), rootpath.string());
|
path.string(), rootpath.string());
|
||||||
return -1;
|
return (jint) -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return write_tarfile(packageName, domain, rootpath, path, writer);
|
return (jint) write_tarfile(packageName, domain, rootpath, path, writer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const JNINativeMethod g_methods[] = {
|
static const JNINativeMethod g_methods[] = {
|
||||||
@@ -121,7 +121,7 @@ int register_android_app_backup_FullBackup(JNIEnv* env)
|
|||||||
jclass clazz = env->FindClass("android/app/backup/BackupDataOutput");
|
jclass clazz = env->FindClass("android/app/backup/BackupDataOutput");
|
||||||
LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataOutput");
|
LOG_FATAL_IF(clazz == NULL, "Unable to find class android.app.backup.BackupDataOutput");
|
||||||
|
|
||||||
sBackupDataOutput.mBackupWriter = env->GetFieldID(clazz, "mBackupWriter", "I");
|
sBackupDataOutput.mBackupWriter = env->GetFieldID(clazz, "mBackupWriter", "J");
|
||||||
LOG_FATAL_IF(sBackupDataOutput.mBackupwriter == NULL,
|
LOG_FATAL_IF(sBackupDataOutput.mBackupwriter == NULL,
|
||||||
"Unable to find mBackupWriter field in android.app.backup.BackupDataOutput");
|
"Unable to find mBackupWriter field in android.app.backup.BackupDataOutput");
|
||||||
|
|
||||||
|
|||||||
@@ -29,25 +29,25 @@ namespace android
|
|||||||
static jfieldID s_keyField = 0;
|
static jfieldID s_keyField = 0;
|
||||||
static jfieldID s_dataSizeField = 0;
|
static jfieldID s_dataSizeField = 0;
|
||||||
|
|
||||||
static int
|
static jlong
|
||||||
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
|
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
|
||||||
{
|
{
|
||||||
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
|
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
return NULL;
|
return (jlong)NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (int)new BackupDataReader(fd);
|
return (jlong)new BackupDataReader(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dtor_native(JNIEnv* env, jobject clazz, int r)
|
dtor_native(JNIEnv* env, jobject clazz, jlong r)
|
||||||
{
|
{
|
||||||
delete (BackupDataReader*)r;
|
delete (BackupDataReader*)r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static jint
|
static jint
|
||||||
readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity)
|
readNextHeader_native(JNIEnv* env, jobject clazz, jlong r, jobject entity)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
bool done;
|
bool done;
|
||||||
@@ -89,7 +89,7 @@ readNextHeader_native(JNIEnv* env, jobject clazz, int r, jobject entity)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static jint
|
static jint
|
||||||
readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int offset, int size)
|
readEntityData_native(JNIEnv* env, jobject clazz, jlong r, jbyteArray data, jint offset, jint size)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
BackupDataReader* reader = (BackupDataReader*)r;
|
BackupDataReader* reader = (BackupDataReader*)r;
|
||||||
@@ -112,7 +112,7 @@ readEntityData_native(JNIEnv* env, jobject clazz, int r, jbyteArray data, int of
|
|||||||
}
|
}
|
||||||
|
|
||||||
static jint
|
static jint
|
||||||
skipEntityData_native(JNIEnv* env, jobject clazz, int r)
|
skipEntityData_native(JNIEnv* env, jobject clazz, jlong r)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
BackupDataReader* reader = (BackupDataReader*)r;
|
BackupDataReader* reader = (BackupDataReader*)r;
|
||||||
@@ -123,12 +123,12 @@ skipEntityData_native(JNIEnv* env, jobject clazz, int r)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const JNINativeMethod g_methods[] = {
|
static const JNINativeMethod g_methods[] = {
|
||||||
{ "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native },
|
{ "ctor", "(Ljava/io/FileDescriptor;)J", (void*)ctor_native },
|
||||||
{ "dtor", "(I)V", (void*)dtor_native },
|
{ "dtor", "(J)V", (void*)dtor_native },
|
||||||
{ "readNextHeader_native", "(ILandroid/app/backup/BackupDataInput$EntityHeader;)I",
|
{ "readNextHeader_native", "(JLandroid/app/backup/BackupDataInput$EntityHeader;)I",
|
||||||
(void*)readNextHeader_native },
|
(void*)readNextHeader_native },
|
||||||
{ "readEntityData_native", "(I[BII)I", (void*)readEntityData_native },
|
{ "readEntityData_native", "(J[BII)I", (void*)readEntityData_native },
|
||||||
{ "skipEntityData_native", "(I)I", (void*)skipEntityData_native },
|
{ "skipEntityData_native", "(J)I", (void*)skipEntityData_native },
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_android_backup_BackupDataInput(JNIEnv* env)
|
int register_android_backup_BackupDataInput(JNIEnv* env)
|
||||||
|
|||||||
@@ -25,25 +25,25 @@
|
|||||||
namespace android
|
namespace android
|
||||||
{
|
{
|
||||||
|
|
||||||
static int
|
static jlong
|
||||||
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
|
ctor_native(JNIEnv* env, jobject clazz, jobject fileDescriptor)
|
||||||
{
|
{
|
||||||
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
|
int fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
|
||||||
if (fd == -1) {
|
if (fd == -1) {
|
||||||
return NULL;
|
return (jlong)NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (int)new BackupDataWriter(fd);
|
return (jlong)new BackupDataWriter(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dtor_native(JNIEnv* env, jobject clazz, int w)
|
dtor_native(JNIEnv* env, jobject clazz, jlong w)
|
||||||
{
|
{
|
||||||
delete (BackupDataWriter*)w;
|
delete (BackupDataWriter*)w;
|
||||||
}
|
}
|
||||||
|
|
||||||
static jint
|
static jint
|
||||||
writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dataSize)
|
writeEntityHeader_native(JNIEnv* env, jobject clazz, jlong w, jstring key, jint dataSize)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
BackupDataWriter* writer = (BackupDataWriter*)w;
|
BackupDataWriter* writer = (BackupDataWriter*)w;
|
||||||
@@ -56,11 +56,11 @@ writeEntityHeader_native(JNIEnv* env, jobject clazz, int w, jstring key, int dat
|
|||||||
|
|
||||||
env->ReleaseStringUTFChars(key, keyUTF);
|
env->ReleaseStringUTFChars(key, keyUTF);
|
||||||
|
|
||||||
return err;
|
return (jint)err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static jint
|
static jint
|
||||||
writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int size)
|
writeEntityData_native(JNIEnv* env, jobject clazz, jlong w, jbyteArray data, jint size)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
BackupDataWriter* writer = (BackupDataWriter*)w;
|
BackupDataWriter* writer = (BackupDataWriter*)w;
|
||||||
@@ -79,11 +79,11 @@ writeEntityData_native(JNIEnv* env, jobject clazz, int w, jbyteArray data, int s
|
|||||||
|
|
||||||
env->ReleaseByteArrayElements(data, dataBytes, JNI_ABORT);
|
env->ReleaseByteArrayElements(data, dataBytes, JNI_ABORT);
|
||||||
|
|
||||||
return err;
|
return (jint)err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj)
|
setKeyPrefix_native(JNIEnv* env, jobject clazz, jlong w, jstring keyPrefixObj)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
BackupDataWriter* writer = (BackupDataWriter*)w;
|
BackupDataWriter* writer = (BackupDataWriter*)w;
|
||||||
@@ -97,11 +97,11 @@ setKeyPrefix_native(JNIEnv* env, jobject clazz, int w, jstring keyPrefixObj)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const JNINativeMethod g_methods[] = {
|
static const JNINativeMethod g_methods[] = {
|
||||||
{ "ctor", "(Ljava/io/FileDescriptor;)I", (void*)ctor_native },
|
{ "ctor", "(Ljava/io/FileDescriptor;)J", (void*)ctor_native },
|
||||||
{ "dtor", "(I)V", (void*)dtor_native },
|
{ "dtor", "(J)V", (void*)dtor_native },
|
||||||
{ "writeEntityHeader_native", "(ILjava/lang/String;I)I", (void*)writeEntityHeader_native },
|
{ "writeEntityHeader_native", "(JLjava/lang/String;I)I", (void*)writeEntityHeader_native },
|
||||||
{ "writeEntityData_native", "(I[BI)I", (void*)writeEntityData_native },
|
{ "writeEntityData_native", "(J[BI)I", (void*)writeEntityData_native },
|
||||||
{ "setKeyPrefix_native", "(ILjava/lang/String;)V", (void*)setKeyPrefix_native },
|
{ "setKeyPrefix_native", "(JLjava/lang/String;)V", (void*)setKeyPrefix_native },
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_android_backup_BackupDataOutput(JNIEnv* env)
|
int register_android_backup_BackupDataOutput(JNIEnv* env)
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ struct chunk_header_v1 {
|
|||||||
static jfieldID s_chunkSizeField = 0;
|
static jfieldID s_chunkSizeField = 0;
|
||||||
static jfieldID s_keyPrefixField = 0;
|
static jfieldID s_keyPrefixField = 0;
|
||||||
|
|
||||||
static int
|
static jint
|
||||||
readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
||||||
{
|
{
|
||||||
chunk_header_v1 flattenedHeader;
|
chunk_header_v1 flattenedHeader;
|
||||||
@@ -52,7 +52,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
|||||||
|
|
||||||
amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize));
|
amt = read(fd, &flattenedHeader.headerSize, sizeof(flattenedHeader.headerSize));
|
||||||
if (amt != sizeof(flattenedHeader.headerSize)) {
|
if (amt != sizeof(flattenedHeader.headerSize)) {
|
||||||
return -1;
|
return (jint) -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int remainingHeader = flattenedHeader.headerSize - sizeof(flattenedHeader.headerSize);
|
int remainingHeader = flattenedHeader.headerSize - sizeof(flattenedHeader.headerSize);
|
||||||
@@ -62,7 +62,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
|||||||
if (remainingHeader > 0) {
|
if (remainingHeader > 0) {
|
||||||
lseek(fd, remainingHeader, SEEK_CUR);
|
lseek(fd, remainingHeader, SEEK_CUR);
|
||||||
// >0 means skip this chunk
|
// >0 means skip this chunk
|
||||||
return 1;
|
return (jint) 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
|||||||
sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize));
|
sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize));
|
||||||
if (amt <= 0) {
|
if (amt <= 0) {
|
||||||
ALOGW("Failed reading chunk header");
|
ALOGW("Failed reading chunk header");
|
||||||
return -1;
|
return (jint) -1;
|
||||||
}
|
}
|
||||||
remainingHeader -= sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize);
|
remainingHeader -= sizeof(chunk_header_v1)-sizeof(flattenedHeader.headerSize);
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
|||||||
if (remainingHeader > 0) {
|
if (remainingHeader > 0) {
|
||||||
lseek(fd, remainingHeader, SEEK_CUR);
|
lseek(fd, remainingHeader, SEEK_CUR);
|
||||||
// >0 means skip this chunk
|
// >0 means skip this chunk
|
||||||
return 1;
|
return (jint) 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,13 +96,13 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
|||||||
remainingHeader < flattenedHeader.nameLength) {
|
remainingHeader < flattenedHeader.nameLength) {
|
||||||
ALOGW("Malformed V1 header remainingHeader=%d dataSize=%d nameLength=%d", remainingHeader,
|
ALOGW("Malformed V1 header remainingHeader=%d dataSize=%d nameLength=%d", remainingHeader,
|
||||||
flattenedHeader.dataSize, flattenedHeader.nameLength);
|
flattenedHeader.dataSize, flattenedHeader.nameLength);
|
||||||
return -1;
|
return (jint) -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = keyPrefix.lockBuffer(flattenedHeader.nameLength);
|
buf = keyPrefix.lockBuffer(flattenedHeader.nameLength);
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
ALOGW("unable to allocate %d bytes", flattenedHeader.nameLength);
|
ALOGW("unable to allocate %d bytes", flattenedHeader.nameLength);
|
||||||
return -1;
|
return (jint) -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
amt = read(fd, buf, flattenedHeader.nameLength);
|
amt = read(fd, buf, flattenedHeader.nameLength);
|
||||||
@@ -119,17 +119,17 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
|||||||
env->SetIntField(headerObj, s_chunkSizeField, flattenedHeader.dataSize);
|
env->SetIntField(headerObj, s_chunkSizeField, flattenedHeader.dataSize);
|
||||||
env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.string()));
|
env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.string()));
|
||||||
|
|
||||||
return 0;
|
return (jint) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static jint
|
||||||
skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip)
|
skipChunk_native(JNIEnv* env, jobject clazz, jobject fdObj, jint bytesToSkip)
|
||||||
{
|
{
|
||||||
int fd = jniGetFDFromFileDescriptor(env, fdObj);
|
int fd = jniGetFDFromFileDescriptor(env, fdObj);
|
||||||
|
|
||||||
lseek(fd, bytesToSkip, SEEK_CUR);
|
lseek(fd, bytesToSkip, SEEK_CUR);
|
||||||
|
|
||||||
return 0;
|
return (jint) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@@ -139,7 +139,7 @@ padding_len(int len)
|
|||||||
return len == 0 ? len : 4 - len;
|
return len == 0 ? len : 4 - len;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static jint
|
||||||
allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj)
|
||||||
{
|
{
|
||||||
int pos;
|
int pos;
|
||||||
@@ -161,10 +161,10 @@ allocateHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdO
|
|||||||
|
|
||||||
lseek(fd, headerSize, SEEK_CUR);
|
lseek(fd, headerSize, SEEK_CUR);
|
||||||
|
|
||||||
return pos;
|
return (jint) pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static jint
|
||||||
writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, jint pos)
|
writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj, jint pos)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@@ -188,26 +188,26 @@ writeHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj,
|
|||||||
lseek(fd, pos, SEEK_SET);
|
lseek(fd, pos, SEEK_SET);
|
||||||
err = write(fd, &header, sizeof(chunk_header_v1));
|
err = write(fd, &header, sizeof(chunk_header_v1));
|
||||||
if (err != sizeof(chunk_header_v1)) {
|
if (err != sizeof(chunk_header_v1)) {
|
||||||
return errno;
|
return (jint) errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = env->GetStringUTFChars(nameObj, NULL);
|
buf = env->GetStringUTFChars(nameObj, NULL);
|
||||||
err = write(fd, buf, header.nameLength);
|
err = write(fd, buf, header.nameLength);
|
||||||
env->ReleaseStringUTFChars(nameObj, buf);
|
env->ReleaseStringUTFChars(nameObj, buf);
|
||||||
if (err != header.nameLength) {
|
if (err != header.nameLength) {
|
||||||
return errno;
|
return (jint) errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (namePadding != 0) {
|
if (namePadding != 0) {
|
||||||
int zero = 0;
|
int zero = 0;
|
||||||
err = write(fd, &zero, namePadding);
|
err = write(fd, &zero, namePadding);
|
||||||
if (err != namePadding) {
|
if (err != namePadding) {
|
||||||
return errno;
|
return (jint) errno;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lseek(fd, prevPos, SEEK_SET);
|
lseek(fd, prevPos, SEEK_SET);
|
||||||
return 0;
|
return (jint) 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const JNINativeMethod g_methods[] = {
|
static const JNINativeMethod g_methods[] = {
|
||||||
|
|||||||
@@ -25,20 +25,20 @@
|
|||||||
namespace android
|
namespace android
|
||||||
{
|
{
|
||||||
|
|
||||||
static int
|
static jlong
|
||||||
ctor(JNIEnv* env, jobject clazz)
|
ctor(JNIEnv* env, jobject clazz)
|
||||||
{
|
{
|
||||||
return (int)new RestoreHelperBase();
|
return (jlong)new RestoreHelperBase();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dtor(JNIEnv* env, jobject clazz, jint ptr)
|
dtor(JNIEnv* env, jobject clazz, jlong ptr)
|
||||||
{
|
{
|
||||||
delete (RestoreHelperBase*)ptr;
|
delete (RestoreHelperBase*)ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static jint
|
||||||
performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data,
|
performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, jlong data,
|
||||||
jobject newState, jobjectArray files, jobjectArray keys)
|
jobject newState, jobjectArray files, jobjectArray keys)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
@@ -72,12 +72,12 @@ performBackup_native(JNIEnv* env, jobject clazz, jobject oldState, int data,
|
|||||||
}
|
}
|
||||||
free(keysUTF);
|
free(keysUTF);
|
||||||
|
|
||||||
return err;
|
return (jint) err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static jint
|
||||||
writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int backupReaderPtr)
|
writeFile_native(JNIEnv* env, jobject clazz, jlong ptr, jstring filenameObj, jlong backupReaderPtr)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
RestoreHelperBase* restore = (RestoreHelperBase*)ptr;
|
RestoreHelperBase* restore = (RestoreHelperBase*)ptr;
|
||||||
@@ -90,11 +90,11 @@ writeFile_native(JNIEnv* env, jobject clazz, jint ptr, jstring filenameObj, int
|
|||||||
|
|
||||||
env->ReleaseStringUTFChars(filenameObj, filename);
|
env->ReleaseStringUTFChars(filenameObj, filename);
|
||||||
|
|
||||||
return err;
|
return (jint) err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static jint
|
||||||
writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescriptor)
|
writeSnapshot_native(JNIEnv* env, jobject clazz, jlong ptr, jobject fileDescriptor)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@@ -103,17 +103,17 @@ writeSnapshot_native(JNIEnv* env, jobject clazz, jint ptr, jobject fileDescripto
|
|||||||
|
|
||||||
err = restore->WriteSnapshot(fd);
|
err = restore->WriteSnapshot(fd);
|
||||||
|
|
||||||
return err;
|
return (jint) err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const JNINativeMethod g_methods[] = {
|
static const JNINativeMethod g_methods[] = {
|
||||||
{ "ctor", "()I", (void*)ctor },
|
{ "ctor", "()J", (void*)ctor },
|
||||||
{ "dtor", "(I)V", (void*)dtor },
|
{ "dtor", "(J)V", (void*)dtor },
|
||||||
{ "performBackup_native",
|
{ "performBackup_native",
|
||||||
"(Ljava/io/FileDescriptor;ILjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I",
|
"(Ljava/io/FileDescriptor;JLjava/io/FileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)I",
|
||||||
(void*)performBackup_native },
|
(void*)performBackup_native },
|
||||||
{ "writeFile_native", "(ILjava/lang/String;I)I", (void*)writeFile_native },
|
{ "writeFile_native", "(JLjava/lang/String;J)I", (void*)writeFile_native },
|
||||||
{ "writeSnapshot_native", "(ILjava/io/FileDescriptor;)I", (void*)writeSnapshot_native },
|
{ "writeSnapshot_native", "(JLjava/io/FileDescriptor;)I", (void*)writeSnapshot_native },
|
||||||
};
|
};
|
||||||
|
|
||||||
int register_android_backup_FileBackupHelperBase(JNIEnv* env)
|
int register_android_backup_FileBackupHelperBase(JNIEnv* env)
|
||||||
|
|||||||
Reference in New Issue
Block a user