Migration code for users updating to the 1.1.3 iPhone firmware, which has a different directory structure and permission setup
svn-id: r30761
This commit is contained in:
parent
c098453ea1
commit
deb6baf0db
4 changed files with 68 additions and 8 deletions
|
@ -27,15 +27,14 @@
|
||||||
|
|
||||||
#include <CoreGraphics/CGDirectDisplay.h>
|
#include <CoreGraphics/CGDirectDisplay.h>
|
||||||
#include <CoreSurface/CoreSurface.h>
|
#include <CoreSurface/CoreSurface.h>
|
||||||
#include <AudioToolbox/AudioQueue.h>
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
#include "common/system.h"
|
|
||||||
#include "common/scummsys.h"
|
#include "common/scummsys.h"
|
||||||
#include "common/util.h"
|
#include "common/util.h"
|
||||||
#include "common/rect.h"
|
#include "common/rect.h"
|
||||||
#include "common/events.h"
|
#include "common/file.h"
|
||||||
|
#include "common/fs.h"
|
||||||
|
|
||||||
#include "base/main.h"
|
#include "base/main.h"
|
||||||
|
|
||||||
|
@ -54,6 +53,7 @@ const OSystem::GraphicsMode OSystem_IPHONE::s_supportedGraphicsModes[] = {
|
||||||
AQCallbackStruct OSystem_IPHONE::s_AudioQueue;
|
AQCallbackStruct OSystem_IPHONE::s_AudioQueue;
|
||||||
SoundProc OSystem_IPHONE::s_soundCallback = NULL;
|
SoundProc OSystem_IPHONE::s_soundCallback = NULL;
|
||||||
void *OSystem_IPHONE::s_soundParam = NULL;
|
void *OSystem_IPHONE::s_soundParam = NULL;
|
||||||
|
bool OSystem_IPHONE::s_is113OrHigher = false;
|
||||||
|
|
||||||
OSystem_IPHONE::OSystem_IPHONE() :
|
OSystem_IPHONE::OSystem_IPHONE() :
|
||||||
_savefile(NULL), _mixer(NULL), _timer(NULL), _offscreen(NULL),
|
_savefile(NULL), _mixer(NULL), _timer(NULL), _offscreen(NULL),
|
||||||
|
@ -1172,8 +1172,47 @@ OSystem *OSystem_IPHONE_create() {
|
||||||
return new OSystem_IPHONE();
|
return new OSystem_IPHONE();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* OSystem_IPHONE::getConfigPath() {
|
||||||
|
if (s_is113OrHigher)
|
||||||
|
return SCUMMVM_PREFS_PATH;
|
||||||
|
else
|
||||||
|
return SCUMMVM_OLD_PREFS_PATH;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* OSystem_IPHONE::getSavePath() {
|
||||||
|
if (s_is113OrHigher)
|
||||||
|
return SCUMMVM_SAVE_PATH;
|
||||||
|
else
|
||||||
|
return SCUMMVM_OLD_SAVE_PATH;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OSystem_IPHONE::migrateApp() {
|
||||||
|
// Migrate to the new 1.1.3 directory structure, if needed.
|
||||||
|
|
||||||
|
FilesystemNode file("/var/mobile");
|
||||||
|
if (file.exists() && file.isDirectory()) {
|
||||||
|
// We have 1.1.3 or above.
|
||||||
|
s_is113OrHigher = true;
|
||||||
|
file = FilesystemNode(SCUMMVM_ROOT_PATH);
|
||||||
|
if (!file.exists()) {
|
||||||
|
system("mkdir " SCUMMVM_ROOT_PATH);
|
||||||
|
system("mkdir " SCUMMVM_SAVE_PATH);
|
||||||
|
|
||||||
|
// Copy over the prefs file
|
||||||
|
system("cp " SCUMMVM_OLD_PREFS_PATH " " SCUMMVM_PREFS_PATH);
|
||||||
|
|
||||||
|
file = FilesystemNode(SCUMMVM_OLD_SAVE_PATH);
|
||||||
|
// Copy over old savegames to the new directory.
|
||||||
|
if (file.exists() && file.isDirectory())
|
||||||
|
system("cp " SCUMMVM_OLD_SAVE_PATH "/* " SCUMMVM_SAVE_PATH "/");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void iphone_main(int argc, char *argv[]) {
|
void iphone_main(int argc, char *argv[]) {
|
||||||
|
|
||||||
|
OSystem_IPHONE::migrateApp();
|
||||||
|
|
||||||
// Redirect stdout and stderr if we're launching from the Springboard.
|
// Redirect stdout and stderr if we're launching from the Springboard.
|
||||||
if (argc == 2 && strcmp(argv[1], "--launchedFromSB") == 0) {
|
if (argc == 2 && strcmp(argv[1], "--launchedFromSB") == 0) {
|
||||||
FILE *newfp = fopen("/tmp/scummvm.log", "a");
|
FILE *newfp = fopen("/tmp/scummvm.log", "a");
|
||||||
|
|
|
@ -27,11 +27,21 @@
|
||||||
|
|
||||||
#include "graphics/surface.h"
|
#include "graphics/surface.h"
|
||||||
#include "iphone_common.h"
|
#include "iphone_common.h"
|
||||||
|
#include "common/system.h"
|
||||||
|
#include "common/events.h"
|
||||||
|
|
||||||
|
#include <AudioToolbox/AudioQueue.h>
|
||||||
|
|
||||||
#define AUDIO_BUFFERS 3
|
#define AUDIO_BUFFERS 3
|
||||||
#define WAVE_BUFFER_SIZE 8192
|
#define WAVE_BUFFER_SIZE 8192
|
||||||
#define AUDIO_SAMPLE_RATE 44100
|
#define AUDIO_SAMPLE_RATE 44100
|
||||||
|
|
||||||
|
#define SCUMMVM_ROOT_PATH "/var/mobile/Library/ScummVM"
|
||||||
|
#define SCUMMVM_SAVE_PATH SCUMMVM_ROOT_PATH "/Savegames"
|
||||||
|
#define SCUMMVM_OLD_SAVE_PATH "/var/root/.scummvm"
|
||||||
|
#define SCUMMVM_PREFS_PATH SCUMMVM_ROOT_PATH "/Preferences"
|
||||||
|
#define SCUMMVM_OLD_PREFS_PATH "/var/root/.scummvmrc"
|
||||||
|
|
||||||
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
typedef void (*SoundProc)(void *param, byte *buf, int len);
|
||||||
typedef int (*TimerProc)(int interval);
|
typedef int (*TimerProc)(int interval);
|
||||||
|
|
||||||
|
@ -49,6 +59,7 @@ protected:
|
||||||
static AQCallbackStruct s_AudioQueue;
|
static AQCallbackStruct s_AudioQueue;
|
||||||
static SoundProc s_soundCallback;
|
static SoundProc s_soundCallback;
|
||||||
static void *s_soundParam;
|
static void *s_soundParam;
|
||||||
|
static bool s_is113OrHigher;
|
||||||
|
|
||||||
Common::SaveFileManager *_savefile;
|
Common::SaveFileManager *_savefile;
|
||||||
Audio::Mixer *_mixer;
|
Audio::Mixer *_mixer;
|
||||||
|
@ -154,6 +165,10 @@ public:
|
||||||
virtual Audio::Mixer *getMixer();
|
virtual Audio::Mixer *getMixer();
|
||||||
virtual Common::TimerManager *getTimerManager();
|
virtual Common::TimerManager *getTimerManager();
|
||||||
|
|
||||||
|
static void migrateApp();
|
||||||
|
static const char* getConfigPath();
|
||||||
|
static const char* getSavePath();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
inline void addDirtyRect(int16 x1, int16 y1, int16 w, int16 h);
|
inline void addDirtyRect(int16 x1, int16 y1, int16 w, int16 h);
|
||||||
void internUpdateScreen();
|
void internUpdateScreen();
|
||||||
|
|
|
@ -35,6 +35,10 @@
|
||||||
#include "sound/mididrv.h"
|
#include "sound/mididrv.h"
|
||||||
#include "sound/mixer.h"
|
#include "sound/mixer.h"
|
||||||
|
|
||||||
|
#ifdef IPHONE
|
||||||
|
#include "backends/platform/iphone/osys_iphone.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef UNIX
|
#ifdef UNIX
|
||||||
#ifdef MACOSX
|
#ifdef MACOSX
|
||||||
#define DEFAULT_SAVE_PATH "Documents/ScummVM Savegames"
|
#define DEFAULT_SAVE_PATH "Documents/ScummVM Savegames"
|
||||||
|
@ -224,10 +228,8 @@ void registerDefaults() {
|
||||||
strcpy(savePath, Symbian::GetExecutablePath());
|
strcpy(savePath, Symbian::GetExecutablePath());
|
||||||
strcat(savePath, DEFAULT_SAVE_PATH);
|
strcat(savePath, DEFAULT_SAVE_PATH);
|
||||||
ConfMan.registerDefault("savepath", savePath);
|
ConfMan.registerDefault("savepath", savePath);
|
||||||
#elif defined (IPHONE) // The iphone has / set as home dir when launching from the Springboard.
|
#elif defined (IPHONE)
|
||||||
strcpy(savePath, "/var/root/");
|
ConfMan.registerDefault("savepath", OSystem_IPHONE::getSavePath());
|
||||||
strcat(savePath, DEFAULT_SAVE_PATH);
|
|
||||||
ConfMan.registerDefault("savepath", savePath);
|
|
||||||
#endif
|
#endif
|
||||||
#endif // #ifdef DEFAULT_SAVE_PATH
|
#endif // #ifdef DEFAULT_SAVE_PATH
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,10 @@ DECLARE_SINGLETON(Common::ConfigManager);
|
||||||
#include "backends/platform/ps2/systemps2.h"
|
#include "backends/platform/ps2/systemps2.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef IPHONE
|
||||||
|
#include "backends/platform/iphone/osys_iphone.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(UNIX)
|
#if defined(UNIX)
|
||||||
#ifdef MACOSX
|
#ifdef MACOSX
|
||||||
#define DEFAULT_CONFIG_FILE "Library/Preferences/ScummVM Preferences"
|
#define DEFAULT_CONFIG_FILE "Library/Preferences/ScummVM Preferences"
|
||||||
|
@ -138,7 +142,7 @@ void ConfigManager::loadDefaultConfigFile() {
|
||||||
#elif defined(PALMOS_MODE)
|
#elif defined(PALMOS_MODE)
|
||||||
strcpy(configFile,"/PALM/Programs/ScummVM/" DEFAULT_CONFIG_FILE);
|
strcpy(configFile,"/PALM/Programs/ScummVM/" DEFAULT_CONFIG_FILE);
|
||||||
#elif defined(IPHONE)
|
#elif defined(IPHONE)
|
||||||
strcpy(configFile,"/var/root/" DEFAULT_CONFIG_FILE);
|
strcpy(configFile, OSystem_IPHONE::getConfigPath());
|
||||||
#elif defined(__PLAYSTATION2__)
|
#elif defined(__PLAYSTATION2__)
|
||||||
((OSystem_PS2*)g_system)->makeConfigPath(configFile);
|
((OSystem_PS2*)g_system)->makeConfigPath(configFile);
|
||||||
#elif defined(__PSP__)
|
#elif defined(__PSP__)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue