Feature request #1974

Enable render caching where possible

Added by Tim Sutton almost 10 years ago. Updated almost 10 years ago.

Status:Closed
Priority:Low
Assignee:Tim Sutton
Category:Map Canvas
Pull Request or Patch supplied: Resolution:fixed
Easy fix?:No Copied to github as #:12034

Description

User story 1:

Joe is reordering layers, each of which points back to a postgis database with thousands of records. Each time he drops a layer to a new position, he waits a long time while each layer redraws, even though the content of the layers is the same, just being rendered in a different order.

User story 2:

Jane is changing symbology in a layer. When she clicks apply, she waits a long time while all other layers redraw too.

User story 3:

Pete is hiding and showing layers. Each time he hides or shows a layer, he waits a long time while the layers redraw.


The solution to this is to provide some kind of caching mechanism. The attached patch is my first draft that addresses the above scenarios and makes QGIS much more responsive when engaged in the activities described.

Please note the patch is a work in progress and there are some edge cases where it does not yet behave well. In order to activate caching, tick the checkbox for this in the rendering tab of the options panel (its disabled by default).

qgis_render_cache_v3.diff Magnifier - Version 3 of my caching implementation (14.5 KB) Tim Sutton, 2009-10-05 06:11 AM

qgis_rendercachepatch_v4_21Oct2009.diff.gz - Updated patch which fixes some rendering issues (4.5 KB) Tim Sutton, 2009-10-21 02:01 PM

qgis_rendercachepatch_v5_22Oct2009.diff Magnifier - Updated to use QImage (16 KB) Tim Sutton, 2009-10-22 02:41 PM

qgis_rendercachepatch_v6_23Oct2009.diff Magnifier - Fixes for some cases where caching resulted in unexpected renders (18.5 KB) Tim Sutton, 2009-10-23 03:20 PM

qgis_rendercachepatch_v7_23Oct2009.diff Magnifier - Added missing sip / python bindings (19.8 KB) Tim Sutton, 2009-10-23 03:30 PM

qgis_rendercachepatch_v824Oct2009.diff Magnifier - Fixes refresh isssues with raster layer when symbology changed (20.3 KB) Tim Sutton, 2009-10-24 01:53 AM

History

#1 Updated by Tim Sutton almost 10 years ago

Version 5 offers dramatically better performance now that I have changed it to use QImage rather than QPixmap. The last remaining task is to clear the cache images of non-visible layers when the extents change to prevent rendering anomalies when enabling display of a layer after a zoom operation.

#2 Updated by Tim Sutton almost 10 years ago

  • Status changed from Open to In Progress

#3 Updated by Tim Sutton almost 10 years ago

Version 6 of the patch is now quite usable and deals well with most issues I think. I will propose this patch for inclusion into trunk.

#4 Updated by Tim Sutton almost 10 years ago

  • Resolution set to fixed
  • Status changed from In Progress to Closed

This patch is applied to trunk as of 763fbb20 (SVN r11832).

Also available in: Atom PDF