]> git.cworth.org Git - vogl/commitdiff
UI: Improve processing time of vogleditor_apicalltreeitem by pre-calculating the...
authorPeterLValve <peterl@valvesoftware.com>
Tue, 18 Mar 2014 20:31:29 +0000 (13:31 -0700)
committerCarl Worth <cworth@cworth.org>
Tue, 1 Apr 2014 19:37:29 +0000 (12:37 -0700)
* This value will have to get updated if new rows (API calls) can be added / removed, which may undo this optimization,
but when investigating a slowness during searching, the code was often found in this function.

src/vogleditor/vogleditor_apicalltreeitem.cpp
src/vogleditor/vogleditor_apicalltreeitem.h

index 32ff10ac4f57a8987177218f83d820bf8b8904c1..3fd2d7f9792c68979c001d982cb30eda593cefd2 100644 (file)
@@ -35,7 +35,8 @@ vogleditor_apiCallTreeItem::vogleditor_apiCallTreeItem(vogleditor_QApiCallTreeMo
  : m_parentItem(NULL),
    m_pApiCallItem(NULL),
    m_pFrameItem(NULL),
-   m_pModel(pModel)
+   m_pModel(pModel),
+   m_localRowIndex(0)
 {
     m_columnData[VOGL_ACTC_APICALL] = "API Call";
     m_columnData[VOGL_ACTC_INDEX] = "Index";
@@ -51,7 +52,8 @@ vogleditor_apiCallTreeItem::vogleditor_apiCallTreeItem(vogleditor_frameItem* fra
  : m_parentItem(parent),
    m_pApiCallItem(NULL),
    m_pFrameItem(frameItem),
-   m_pModel(NULL)
+   m_pModel(NULL),
+   m_localRowIndex(0)
 {
    if (frameItem != NULL)
    {
@@ -71,7 +73,8 @@ vogleditor_apiCallTreeItem::vogleditor_apiCallTreeItem(QString nodeText, vogledi
  : m_parentItem(parent),
    m_pApiCallItem(apiCallItem),
    m_pFrameItem(NULL),
-   m_pModel(NULL)
+   m_pModel(NULL),
+   m_localRowIndex(0)
 {
    m_columnData[VOGL_ACTC_APICALL] = nodeText;
 
@@ -122,7 +125,8 @@ vogleditor_apiCallTreeItem* vogleditor_apiCallTreeItem::parent() const
 
 void vogleditor_apiCallTreeItem::appendChild(vogleditor_apiCallTreeItem* pChild)
 {
-   m_childItems.append(pChild);
+    pChild->m_localRowIndex = m_childItems.size();
+    m_childItems.append(pChild);
 }
 
 int vogleditor_apiCallTreeItem::childCount() const
@@ -252,8 +256,5 @@ QVariant vogleditor_apiCallTreeItem::columnData(int column, int role) const
 int vogleditor_apiCallTreeItem::row() const
 {
    // note, this is just the row within the current level of the hierarchy
-   if (m_parentItem)
-      return m_parentItem->m_childItems.indexOf(const_cast<vogleditor_apiCallTreeItem*>(this));
-
-   return 0;
+   return m_localRowIndex;
 }
index 9957a72758b1032c2d531c3533cf6e0bb2f9701c..b76b0e1aae524c3533e960ea5c77f954c3702356 100644 (file)
@@ -93,6 +93,7 @@ private:
    vogleditor_apiCallItem* m_pApiCallItem;
    vogleditor_frameItem* m_pFrameItem;
    vogleditor_QApiCallTreeModel* m_pModel;
+   int m_localRowIndex;
 };
 
 #endif // VOGLEDITOR_APICALLTREEITEM_H