1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-07 12:30:27 +00:00

[HTML5] Close IDBFS database on exit.

This should be made available in emscripten in a decent way.
Possibly after unmount, to free the database lock and allow performing
operations on it from javascript after the Emscripten Runtime has
exited.
This commit is contained in:
Fabio Alessandrelli
2020-09-23 21:11:07 +02:00
parent 47e82bcb58
commit 1bfc582633
2 changed files with 19 additions and 3 deletions

View File

@@ -29,8 +29,7 @@
/*************************************************************************/
Module['initFS'] = function(persistentPaths) {
FS.mkdir('/userfs');
FS.mount(IDBFS, {}, '/userfs');
Module.mount_points = ['/userfs'].concat(persistentPaths);
function createRecursive(dir) {
try {
@@ -43,13 +42,14 @@ Module['initFS'] = function(persistentPaths) {
}
}
persistentPaths.forEach(function(path) {
Module.mount_points.forEach(function(path) {
createRecursive(path);
FS.mount(IDBFS, {}, path);
});
return new Promise(function(resolve, reject) {
FS.syncfs(true, function(err) {
if (err) {
Module.mount_points = [];
Module.idbfs = false;
console.log("IndexedDB not available: " + err.message);
} else {
@@ -60,6 +60,21 @@ Module['initFS'] = function(persistentPaths) {
});
};
Module['deinitFS'] = function() {
Module.mount_points.forEach(function(path) {
try {
FS.unmount(path);
} catch (e) {
console.log("Already unmounted", e);
}
if (Module.idbfs && IDBFS.dbs[path]) {
IDBFS.dbs[path].close();
delete IDBFS.dbs[path];
}
});
Module.mount_points = [];
};
Module['copyToFS'] = function(path, buffer) {
var p = path.lastIndexOf("/");
var dir = "/";