Opened 7 years ago
Last modified 7 years ago
#4914 new defect
jarabe windows are redrawn excessively
Reported by: | quozl | Owned by: | |
---|---|---|---|
Priority: | Normal | Milestone: | Unspecified |
Component: | Sugar | Version: | Git as of bugdate |
Severity: | Minor | Keywords: | |
Cc: | Distribution/OS: | Unspecified | |
Bug Status: | New |
Description (last modified by quozl)
Extra redraws of graphics windows cause performance to degrade. The following are some of the extra redraws in Sugar 0.107.0:
- when starting an activity, the pulsing icon is redrawn for the entire width of the screen, instead of only the area that has changed,
- in the neighbourhood, friends, and home views, palette popup or popdown over buddy icon, access point icon, or activity icons causes redraw of entire window, but only if the search entry is not in focus (perhaps caused by a focus indicator redraw of a child widget),
- in the neighbourhood, friends, and home view, when the search entry has focus the entire widget is redrawn on every cursor blink,
- switching to the home list view redraws it twice,
- journal details view redraws the entry name after drawing the entire window,
- journal Documents view draws several times when shown,
- switching from journal to home view draws entire window an extra time,
- switching from Documents view to Journal view redraws entire window twice,
- my settings, about me, nickname redraws after window draws,
- my settings, date & time, list of zones redraws after window draws,
- my settings, network, server and social help server redraw after window draws,
- my settings, modem configuration, all fields below the horizontal rule redraw,
- invoking the frame redraws the entire neighbourhood, friends, and home views, but not the journal view, but only if the search entry is not in focus,
- some frame device icons are redrawn even though the amount of change is insufficient to show a different icon; such as wireless access point signal strength, and battery state of charge.
- even with transition box removed, switching between neighbourhood, friends, and home views redraws the final view twice.
Reproducer: change the !__init!__ method in src/jarabe/desktop/homewindow.py by adding these lines to the end of the method:
window = self.get_window() if window is not None: window.set_debug_updates(True)
Restart Sugar.
Reference: https://lazka.github.io/pgi-docs/Gdk-3.0/classes/Window.html#Gdk.Window.set_debug_updates
Change History (6)
comment:1 Changed 7 years ago by quozl
- Description modified (diff)
comment:2 Changed 7 years ago by quozl
- Description modified (diff)
comment:3 Changed 7 years ago by quozl
- Description modified (diff)
comment:4 follow-up: ↓ 5 Changed 7 years ago by godiard
comment:5 in reply to: ↑ 4 Changed 7 years ago by quozl
Replying to godiard:
- Maybe you can use set_can_focus(False) in the neighborhood, friends, and home views, to avoid them grab the focus. Not sure if that will affect keyboard interactions.
Thanks, I've been experimenting with that, please have a look at
https://github.com/sugarlabs/sugar/pull/616
Keyboard interactions don't appear to work anyway, so we haven't lost much if we avoid focus leaving the search entry widget. It looks like it would be a lot of work, but of benefit for accessibility, if keyboard focus navigation could be fixed.
comment:6 Changed 7 years ago by quozl
Item 1 was in 0.107.1.
Item 2 is pending review, but is in OLPC packages.
Very interesting.
Some ideas, without looking too much at the code:
[1] https://developer.gnome.org/gtk3/stable/GtkWidget.html#gtk-widget-set-can-focus