CAP_MEMORY_RESERVE and memory reserve handled in mobile (if CAP_MEMORY_RESERVE was 1)

This commit is contained in:
Zeno Rogue 2019-06-28 09:48:34 +02:00
parent 977c5f2d69
commit fe635cc7d8
4 changed files with 14 additions and 1 deletions

View File

@ -652,12 +652,15 @@ void drawStats() {
string vers = VER;
if(!nofps) vers += XLAT(" fps: ") + its(calcfps());
#if CAP_MEMORY_RESERVE
if(reserve_limit && reserve_count < reserve_limit) {
vers += " " + its(reserve_count) + "/" + its(reserve_limit) + " MB";
if(displayButtonS(4, vid.yres - 4 - vid.fsize/2, vers, 0xFF2020, 0, vid.fsize/2))
getcstat = PSEUDOKEY_MEMORY, instat = true;
}
else if(displayButtonS(4, vid.yres - 4 - vid.fsize/2, vers, 0x202020, 0, vid.fsize/2)) {
else
#endif
if(displayButtonS(4, vid.yres - 4 - vid.fsize/2, vers, 0x202020, 0, vid.fsize/2)) {
mouseovers = XLAT("frames per second"),
getcstat = SDLK_F1,
instat = true,

View File

@ -225,6 +225,7 @@ void shareScore(MOBPAR_FORMAL);
void mobile_draw(MOBPAR_FORMAL) {
apply_memory_reserve();
optimizeview();
int lastt = ticks; ticks = SDL_GetTicks();

View File

@ -195,6 +195,7 @@ void reserve_handler() {
}
void apply_memory_reserve() {
#if CAP_MEMORY_RESERVE
if(reserve_count > 0) std::set_new_handler(default_handler);
if(reserve_limit > max_reserve) reserve_limit = max_reserve;
if(reserve_limit < 0) reserve_limit = 0;
@ -214,6 +215,7 @@ void apply_memory_reserve() {
default_handler = std::get_new_handler();
#endif
if(reserve_count > 0) std::set_new_handler(reserve_handler);
#endif
}
void memory_for_lib() {
@ -250,6 +252,7 @@ void show_memory_menu() {
dialog::addBoolItem_action(XLAT("show memory warnings"), show_memory_warning, 'w');
#if CAP_MEMORY_RESERVE
if(reserve_limit > 0 && reserve_count < reserve_limit) {
dialog::addItem(XLAT("just let me find Orb of Safety or finish the game"), 'l');
dialog::add_action([] { ignored_memory_warning = true; popScreen(); });
@ -264,6 +267,7 @@ void show_memory_menu() {
dialog::bound_up(max_reserve);
dialog::reaction = apply_memory_reserve;
});
#endif
dialog::addItem(XLAT("clear caches"), 'c');
dialog::add_action([] { callhooks(hooks_clear_cache); });
@ -273,6 +277,7 @@ void show_memory_menu() {
}
bool protect_memory() {
if(!CAP_MEMORY_RESERVE) return false;
if(reserve_limit && reserve_count < reserve_limit && !ignored_memory_warning) {
pushScreen(show_memory_menu);
return true;

View File

@ -496,4 +496,8 @@ union SDL_Event;
#define CAP_FIELD (!(ISMINI))
#endif
#ifndef CAP_MEMORY_RESERVE
#define CAP_MEMORY_RESERVE (!ISMOBILE)
#endif
#undef TRANSPARENT