bugFreeciv - Bugs: bug #21067, Temporary hang with unresponsive...

Show feedback again

bug #21067: Temporary hang with unresponsive GUI when scrolling mapview with right-clicks

Submitted by:  Jacob Nevins <jtn>
Submitted on:  Mon Aug 26 15:38:42 2013  
Category: client-gtk-2.0Severity: 2 - Minor
Priority: 5 - NormalStatus: None
Assigned to: NoneOpen/Closed: Open
Release: 2.4.0-RC1Operating System: GNU/Linux
Planned Release: Contains string changes: None

Add a New Comment (Rich MarkupRich Markup):

You are not logged in

Please log in, so followups can be emailed to you.


Mon Aug 26 15:38:42 2013, original submission:

With 2.4.0-RC1 built on Linux:

  1. Start "freeciv-gtk2 -t amplio2"
  2. Load attached savegame (dunno if it's important)
  3. Change client tileset to "hex2t". On my machine the map in the resulting window can scroll vertically but not horizontally.
  4. Scroll to the bottom of the map by right-clicking in the bottom half of the mapview window, until the bottom of the map is visible.
  5. Right-click again in the bottom half of the mapview.

What happens in the last step is that the display freezes for several seconds (unit focus indicator stops twirling), then finally the map scrolls vertically by a tiny amount (plausibly a single pixel).

Changing the tileset seems necessary to provoke this. Resizing the window removes the ability to trigger this.

This is a fairly obscure set of circumstances, but it seems reproducible, so I'm recording the details in case it can show up in real use cases, or sheds light on some other problem we have.

Instrumenting set_mapview_origin() (where the "slide" is implemented), some observations:

  • Normally on my system a scroll takes 5-8 frames spread evenly across a little more than 200ms
  • When it goes wrong, a slide consists of >800 frames, all but the last taking less than a millisecond each, but the final frame taking 3-5 seconds (the length of the hang)
  • Somehow we end up with the scroll amount diff_x = 0 and diff_y = 1 (pixel), where normally these are a minimum of the order of tile sizes (36/42)

It looks like set_mapview_origin() reacts badly to being asked to do very small (1-pixel) scrolls where most steps do not change anything so do not take much time. However, it's probably a fault elsewhere that leads to such a small scroll being requested in the first place (we're already at the bottom of the map, why does a further scroll request attempt to scroll by a single pixel?)

Jacob Nevins <jtn>
Project Administrator


(Note: upload size limit is set to 1024 kB, after insertion of the required escape characters.)

Attach File(s):

Attached Files
file #18769:  hex2t-clienthang.sav.bz2 added by jtn (6kB - application/x-bzip - demonstration savegame )


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -unavailable- added by jtn (Submitted the item)

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.


    Error: not logged in



    Follows 1 latest change.

    Date Changed By Updated Field Previous Value => Replaced By
    Mon Aug 26 15:38:42 2013jtnAttached File-=>Added hex2t-clienthang.sav.bz2, #18769
    Show feedback again

    Back to the top

    Powered by Savane 3.1-cleanup