Changeset 2272

Show
Ignore:
Timestamp:
03/04/10 15:00:20 (5 months ago)
Author:
JO94
Message:

fixed repeated refreshing problem

Location:
FalconView/trunk/public/fvw_core/GeodataDataSources
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • FalconView/trunk/public/fvw_core/GeodataDataSources/LibkmlContainerBase.cpp

    r2268 r2272  
    4040 
    4141   size_t size = m_container->get_feature_array_size(); 
    42    size_t skipped_regions = 0; 
    4342 
    4443   for (UINT i = 0; i < size; i++) 
     
    5251         !CUtilityMethods::KMLFeatureInRegion(feature, m_leftLon, m_bottomLat, m_rightLon, m_topLat, m_degreesPerPixelX, m_degreesPerPixelY)) 
    5352      { 
    54          skipped_regions++; 
    5553         continue; 
    5654      } 
    57  
    58       // if we get here, we've loaded something, so set the root data source to changed 
    59       bNeedToFireDataSourceChanged = true; // stops firing once all regions have been loaded 
    6055 
    6156      // if we already have a COM object for this element, use it 
     
    6661      if (it == m_wrapped_objects.end()) 
    6762      { 
     63         // this element has never been wrapped, so wrap it 
    6864         unk = CLibkmlDataSource::WrapKMLElement(feature, m_kml_file, m_rootDS); 
    6965         if (unk) // may return NULL for unsupported elements 
    7066            unk->Release(); // get rid of extra reference 
    7167         m_wrapped_objects[i] = unk; 
     68 
     69         // we've wrapped something, so need to fire a data source changed notification 
     70         bNeedToFireDataSourceChanged = true; 
    7271      } 
    7372      else 
     
    9594   } 
    9695 
    97    m_bool_all_regions_loaded = skipped_regions == 0; // optimization to prevent having to rebuild unnecessarily 
     96   m_bool_all_elements_wrapped = m_wrapped_objects.size() == size; // optimization to prevent having to rebuild unnecessarily 
    9897 
    9998   m_bool_indicies_populated = TRUE; // set true here so that nested calls to this method get ignored 
     
    564563 
    565564      // force rebuild of indicies based on any new regionation stuff 
    566       if (!m_bool_all_regions_loaded) 
     565      if (!m_bool_all_elements_wrapped) 
    567566      { 
    568567         m_bool_indicies_populated = FALSE; 
  • FalconView/trunk/public/fvw_core/GeodataDataSources/LibkmlContainerBase.h

    r2268 r2272  
    100100      m_bool_indicies_populated = FALSE; 
    101101      m_bool_indicies_never_populated = TRUE; 
    102       m_bool_all_regions_loaded = FALSE; 
     102      m_bool_all_elements_wrapped = FALSE; 
    103103      m_kml_file = NULL; 
    104104      m_features_in_filter = NULL; 
     
    132132   FEATURE_VECTOR m_features; 
    133133   LONG_VECTOR m_feature_indicies; 
    134    BOOL m_bool_indicies_populated, m_bool_indicies_never_populated, m_bool_all_regions_loaded; 
     134   BOOL m_bool_indicies_populated, m_bool_indicies_never_populated, m_bool_all_elements_wrapped; 
    135135   kmlengine::KmlFilePtr m_kml_file; 
    136136   ILibkmlDataSourcePtr m_rootDS;