Skip calling RTREE::Remove() when adding items to a VIEW
This commit is contained in:
parent
e5df4304a6
commit
9383987b1c
|
@ -335,7 +335,7 @@ void VIEW::Add( VIEW_ITEM* aItem, int aDrawPriority )
|
|||
}
|
||||
|
||||
SetVisible( aItem, true );
|
||||
Update( aItem, KIGFX::ALL );
|
||||
Update( aItem, KIGFX::INITIAL_ADD );
|
||||
}
|
||||
|
||||
|
||||
|
@ -827,7 +827,7 @@ struct VIEW::drawItem
|
|||
{
|
||||
wxASSERT( aItem->viewPrivData() );
|
||||
|
||||
// Conditions that have te be fulfilled for an item to be drawn
|
||||
// Conditions that have to be fulfilled for an item to be drawn
|
||||
bool drawCondition = aItem->viewPrivData()->isRenderable() &&
|
||||
aItem->ViewGetLOD( layer, view ) < view->m_scale;
|
||||
if( !drawCondition )
|
||||
|
@ -1075,6 +1075,14 @@ void VIEW::clearGroupCache()
|
|||
|
||||
|
||||
void VIEW::invalidateItem( VIEW_ITEM* aItem, int aUpdateFlags )
|
||||
{
|
||||
if( aUpdateFlags & INITIAL_ADD )
|
||||
{
|
||||
// Don't update layers or bbox, since it was done in VIEW::Add()
|
||||
// Now that we have initialized, set flags to ALL for the code below
|
||||
aUpdateFlags = ALL;
|
||||
}
|
||||
else
|
||||
{
|
||||
// updateLayers updates geometry too, so we do not have to update both of them at the same time
|
||||
if( aUpdateFlags & LAYERS )
|
||||
|
@ -1085,6 +1093,7 @@ void VIEW::invalidateItem( VIEW_ITEM* aItem, int aUpdateFlags )
|
|||
{
|
||||
updateBbox( aItem );
|
||||
}
|
||||
}
|
||||
|
||||
int layers[VIEW_MAX_LAYERS], layers_count;
|
||||
aItem->ViewGetLayers( layers, layers_count );
|
||||
|
|
|
@ -56,7 +56,8 @@ enum VIEW_UPDATE_FLAGS {
|
|||
COLOR = 0x02, /// Color has changed
|
||||
GEOMETRY = 0x04, /// Position or shape has changed
|
||||
LAYERS = 0x08, /// Layers have changed
|
||||
ALL = 0xff
|
||||
INITIAL_ADD = 0x10, /// Item is being added to the view
|
||||
ALL = 0xef /// All except INITIAL_ADD
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue