Clean temp files manually in mobile STK

This commit is contained in:
Benau 2020-02-03 09:39:43 +08:00
parent 00c7bf561e
commit db95d2f88f
4 changed files with 47 additions and 24 deletions

View File

@ -19,6 +19,7 @@
#ifdef ANDROID
#include "addons/addons_manager.hpp"
#include "io/file_manager.hpp"
#endif
#include "audio/music_manager.hpp"
#include "audio/sfx_manager.hpp"
@ -181,20 +182,28 @@ bool EventHandler::OnEvent (const SEvent &event)
if (cmd == APP_CMD_PAUSE || cmd == APP_CMD_LOST_FOCUS)
{
// Make sure that pause/unpause is executed only once
if (music_manager && device->isWindowMinimized() == device->isWindowFocused())
if (device->isWindowMinimized() == device->isWindowFocused())
{
if (music_manager)
music_manager->pauseMusic();
if (SFXManager::get())
SFXManager::get()->pauseAll();
}
PlayerManager::get()->save();
if (addons_manager->hasDownloadedIcons())
addons_manager->saveInstalled();
// Clean temp files manually as destructor of file manager
// won't be called at all in mobile if user just press home
// button
file_manager->cleanTempFiles();
}
}
else if (cmd == APP_CMD_RESUME || cmd == APP_CMD_GAINED_FOCUS)
{
if (music_manager && device->isWindowActive())
if (device->isWindowActive())
{
if (music_manager)
music_manager->resumeMusic();
if (SFXManager::get())
SFXManager::get()->resumeAll();
// Improve rubber banding effects of rewinders when going
// back to phone, because the smooth timer is paused

View File

@ -453,6 +453,20 @@ void FileManager::reinitAfterDownloadAssets()
//-----------------------------------------------------------------------------
FileManager::~FileManager()
{
cleanTempFiles();
// Clean up rest of file manager
// =============================
popMusicSearchPath();
popModelSearchPath();
popTextureSearchPath();
popTextureSearchPath();
m_file_system->drop();
m_file_system = NULL;
} // ~FileManager
// ----------------------------------------------------------------------------
void FileManager::cleanTempFiles()
{
// Clean up left-over files in addons/tmp that are older than 24h
// ==============================================================
@ -498,16 +512,7 @@ FileManager::~FileManager()
removeFile(full_path);
} // for i in all files in tmp
// Clean up rest of file manager
// =============================
popMusicSearchPath();
popModelSearchPath();
popTextureSearchPath();
popTextureSearchPath();
m_file_system->drop();
m_file_system = NULL;
} // ~FileManager
} // cleanTempFiles
// ----------------------------------------------------------------------------
/** Returns true if the specified file exists.

View File

@ -245,7 +245,8 @@ public:
// ------------------------------------------------------------------------
const std::string& getCertBundleLocation() const
{ return m_cert_bundle_location; }
// ------------------------------------------------------------------------
void cleanTempFiles();
}; // FileManager
extern FileManager* file_manager;

View File

@ -130,18 +130,26 @@ float MainLoop::getLimitedDt()
if (first_out_focus)
{
first_out_focus = false;
if (music_manager)
music_manager->pauseMusic();
if (SFXManager::get())
SFXManager::get()->pauseAll();
PlayerManager::get()->save();
if (addons_manager->hasDownloadedIcons())
addons_manager->saveInstalled();
// Clean temp files manually as destructor of file manager
// won't be called at all in mobile if user just press home
// button
file_manager->cleanTempFiles();
}
dev->run();
win_active = dev->isWindowActive();
has_focus = dev->isWindowFocused();
if (has_focus && win_active)
{
if (music_manager)
music_manager->resumeMusic();
if (SFXManager::get())
SFXManager::get()->resumeAll();
// Improve rubber banding effects of rewinders when going
// back to phone, because the smooth timer is paused