diff --git a/README.android b/README.android index 76028d7db..77b443bf4 100644 --- a/README.android +++ b/README.android @@ -138,6 +138,18 @@ SDL_AndroidGetExternalStoragePath() See SDL_system.h for more details on these functions. +The asset packaging system will, by default, compress certain file extensions. +SDL includes two asset file access mechanisms, the preferred one is the so +called "File Descriptor" method, which is faster and doesn't involve the Dalvik +GC, but given this method does not work on compressed assets, there is also the +"Input Stream" method, which is automatically used as a fall back by SDL. You +may want to keep this fact in mind when building your APK, specially when large +files are involved. +For more information on which extensions get compressed by default and how to +disable this behaviour, see for example: + +http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/ + ================================================================================ Pause / Resume behaviour ================================================================================ diff --git a/src/core/android/SDL_android.cpp b/src/core/android/SDL_android.cpp index 5bcee8702..60c2db139 100644 --- a/src/core/android/SDL_android.cpp +++ b/src/core/android/SDL_android.cpp @@ -613,6 +613,9 @@ static int Android_JNI_FileOpen(SDL_RWops* ctx) descriptor = mEnv->GetFieldID(fdCls, "descriptor", "I"); ctx->hidden.androidio.fd = mEnv->GetIntField(fd, descriptor); + // Seek to the correct offset in the file. + lseek(ctx->hidden.androidio.fd, (off_t)ctx->hidden.androidio.offset, SEEK_SET); + if (false) { fallback: __android_log_print(ANDROID_LOG_DEBUG, "SDL", "Falling back to legacy InputStream method for opening file");