Commit 1f4df2a6 authored by Max Kellermann's avatar Max Kellermann

android/Environment: pass JNIEnv to all functions

parent 2efc1db6
......@@ -591,12 +591,12 @@ MainConfigured(const CommandLineOptions &options,
#ifdef ANDROID
static void
AndroidMain()
AndroidMain(JNIEnv *env)
{
CommandLineOptions options;
ConfigData raw_config;
const auto sdcard = Environment::getExternalStorageDirectory();
const auto sdcard = Environment::getExternalStorageDirectory(env);
if (!sdcard.IsNull()) {
const auto config_path =
sdcard / Path::FromFS("mpd.conf");
......@@ -625,7 +625,7 @@ Java_org_musicpd_Bridge_run(JNIEnv *env, jclass, jobject _context, jobject _logL
AtScopeExit() { delete logListener; };
try {
AndroidMain();
AndroidMain(env);
} catch (...) {
LogError(std::current_exception());
}
......
......@@ -51,10 +51,8 @@ Deinitialise(JNIEnv *env) noexcept
}
AllocatedPath
getExternalStorageDirectory() noexcept
getExternalStorageDirectory(JNIEnv *env) noexcept
{
JNIEnv *env = Java::GetEnv();
jobject file =
env->CallStaticObjectMethod(cls,
getExternalStorageDirectory_method);
......@@ -65,14 +63,12 @@ getExternalStorageDirectory() noexcept
}
AllocatedPath
getExternalStoragePublicDirectory(const char *type) noexcept
getExternalStoragePublicDirectory(JNIEnv *env, const char *type) noexcept
{
if (getExternalStoragePublicDirectory_method == nullptr)
/* needs API level 8 */
return nullptr;
JNIEnv *env = Java::GetEnv();
Java::String type2(env, type);
jobject file = env->CallStaticObjectMethod(cls,
getExternalStoragePublicDirectory_method,
......
......@@ -36,10 +36,10 @@ Deinitialise(JNIEnv *env) noexcept;
*/
[[gnu::pure]]
AllocatedPath
getExternalStorageDirectory() noexcept;
getExternalStorageDirectory(JNIEnv *env) noexcept;
[[gnu::pure]]
AllocatedPath
getExternalStoragePublicDirectory(const char *type) noexcept;
getExternalStoragePublicDirectory(JNIEnv *env, const char *type) noexcept;
} // namespace Environment
......@@ -254,7 +254,8 @@ GetUserMusicDir() noexcept
#elif defined(USE_XDG)
return GetUserDir("XDG_MUSIC_DIR");
#elif defined(ANDROID)
return Environment::getExternalStoragePublicDirectory("Music");
return Environment::getExternalStoragePublicDirectory(Java::GetEnv(),
"Music");
#else
return nullptr;
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment