From 04fbe88386b9ebe9d655b0270c9453a885b05d1c Mon Sep 17 00:00:00 2001 From: ennewalker Date: Thu, 24 Jul 2008 01:05:13 +0000 Subject: Fixing Tiles mouse performance issue found by Johanna. Fixing various Tiles crashes (oops). git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6656 c06c8d41-db1a-0410-9941-cceddc491573 --- crawl-ref/source/tilereg.cc | 7 +++---- crawl-ref/source/tilesdl.cc | 9 ++++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crawl-ref/source/tilereg.cc b/crawl-ref/source/tilereg.cc index 4d9ff8645e..0fff45c4d7 100644 --- a/crawl-ref/source/tilereg.cc +++ b/crawl-ref/source/tilereg.cc @@ -1164,14 +1164,13 @@ bool DungeonRegion::update_tip_text(std::string& tip) if (!grid_is_solid(m_cursor[CURSOR_MOUSE])) { int mon_num = mgrd(m_cursor[CURSOR_MOUSE]); - const monsters *mons = &menv[mon_num]; - if (mon_num == NON_MONSTER || mons_friendly(mons)) + if (mon_num == NON_MONSTER || mons_friendly(&menv[mon_num])) { tip = "[L-Click] Move\n"; } else if (mon_num != NON_MONSTER) { - tip = mons->name(DESC_CAP_A); + tip = menv[mon_num].name(DESC_CAP_A); tip += "\n[L-Click] Attack\n"; } } @@ -1454,7 +1453,7 @@ unsigned int InventoryRegion::cursor_index() const void InventoryRegion::place_cursor(const coord_def &cursor) { - if (m_cursor != NO_CURSOR) + if (m_cursor != NO_CURSOR && cursor_index() < m_items.size()) { m_items[cursor_index()].flag &= ~TILEI_FLAG_CURSOR; m_need_to_pack = true; diff --git a/crawl-ref/source/tilesdl.cc b/crawl-ref/source/tilesdl.cc index fda5f26320..df3f7b7d34 100644 --- a/crawl-ref/source/tilesdl.cc +++ b/crawl-ref/source/tilesdl.cc @@ -502,6 +502,9 @@ int TilesFramework::getch_ck() SDL_Event event; int key = 0; + + const unsigned int ticks_per_redraw = 16; // 60 FPS = 16.6 ms/frame + unsigned int last_redraw_tick = 0; while (!key) { @@ -603,7 +606,11 @@ int TilesFramework::getch_ck() m_tooltip.clear(); } - redraw(); + if (ticks - last_redraw_tick > ticks_per_redraw) + { + redraw(); + last_redraw_tick = ticks; + } } return key; -- cgit v1.2.3-54-g00ecf