• James Westman's avatar
    performance: Fix unnecessary re-rendering · 07941316
    James Westman authored and Marcus Lundblad's avatar Marcus Lundblad committed
    Previously, the renderer connected to the data source's received-data
    signal and re-rendered the affected tile(s) when new data arrived.
    However, at very low zoom levels (because the same tile is visible
    multiple times) and at very high zoom levels (because of overzooming)
    sometimes the same data is requested multiple times simultaneously. Each
    of these simultaneous requests would emit received-data, which would
    cause each tile to re-render. This caused a quadratic slowdown.
    Fixed by introducing ShumateDataSourceRequest, which is returned by a
    new start_request vfunc in ShumateDataSource. This allows the renderer
    to re-render only one tile when new data is received.