aboutsummaryrefslogtreecommitdiffstats
path: root/src/Main.cxx
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/Main.cxx17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/Main.cxx b/src/Main.cxx
index 3a6346385..79fc9d601 100644
--- a/src/Main.cxx
+++ b/src/Main.cxx
@@ -94,6 +94,7 @@
#include "java/File.hxx"
#include "android/Environment.hxx"
#include "android/Context.hxx"
+#include "fs/StandardDirectory.hxx"
#include "org_musicpd_Bridge.h"
#endif
@@ -262,8 +263,20 @@ static bool
glue_state_file_init(Error &error)
{
auto path_fs = config_get_path(CONF_STATE_FILE, error);
- if (path_fs.IsNull())
- return !error.IsDefined();
+ if (path_fs.IsNull()) {
+ if (error.IsDefined())
+ return false;
+
+#ifdef ANDROID
+ const auto cache_dir = GetUserCacheDir();
+ if (cache_dir.IsNull())
+ return true;
+
+ path_fs = AllocatedPath::Build(cache_dir, "state");
+#else
+ return true;
+#endif
+ }
state_file = new StateFile(std::move(path_fs),
*instance->partition,