Changeset 12819 in vbox
- Timestamp:
- Sep 30, 2008 2:20:33 AM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 37174
- Location:
- trunk/src/VBox/Debugger
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Debugger/VBoxDbgStatsQt4.cpp
r12817 r12819 1805 1805 PDBGGUISTATSNODE pAdv = prevNode(pCur); Assert(pAdv || !pPrev); 1806 1806 if (!isNodeAncestorOf(pCur, pNode)) 1807 {1808 1807 removeAndDestroyNode(pCur); 1809 }1810 1808 pCur = pAdv; 1811 1809 } … … 1875 1873 1876 1874 /* 1877 * Advance to the next node. 1878 * (Again, we're ASSUMING that the input is sorted on (full) path name.) 1879 */ 1880 PDBGGUISTATSNODE pParent = pNode->pParent; 1881 if (pNode->cChildren) 1882 { 1883 /* decend to the children. */ 1884 pThis->m_iUpdateChild = 0; 1885 Assert(pThis->m_cchUpdateParent + pNode->cchName + 2 < sizeof(pThis->m_szUpdateParent)); 1886 memcpy(&pThis->m_szUpdateParent[pThis->m_cchUpdateParent], pNode->pszName, pNode->cchName); 1887 pThis->m_cchUpdateParent += pNode->cchName; 1888 pThis->m_szUpdateParent[pThis->m_cchUpdateParent++] = '/'; 1889 pThis->m_szUpdateParent[pThis->m_cchUpdateParent] = '\0'; 1890 pThis->m_pUpdateParent = pNode; 1891 } 1892 else if (pNode->iSelf + 1 < pParent->cChildren) 1893 { 1894 /* next sibling */ 1895 pThis->m_iUpdateChild = pNode->iSelf + 1; 1896 Assert(pThis->m_pUpdateParent == pNode->pParent); 1897 } 1898 else if (pThis->m_iUpdateChild != UINT32_MAX) 1899 { 1900 /* move up and down- / on-wards */ 1901 for (;;) 1902 { 1903 /* ascend */ 1904 pNode = pParent; 1905 pParent = pParent->pParent; 1906 if (!pParent) 1875 * Advance to the next node with data. 1876 * 1877 * ASSUMES a leaf *must* have data and again we're ASSUMING the sorting 1878 * on slash separated sub-strings. 1879 */ 1880 if (pThis->m_iUpdateChild != UINT32_MAX) 1881 { 1882 #ifdef VBOX_STRICT 1883 PDBGGUISTATSNODE const pCorrectNext = nextDataNode(pNode); 1884 #endif 1885 PDBGGUISTATSNODE pParent = pNode->pParent; 1886 if (pNode->cChildren) 1887 { 1888 /* decend to the first child. */ 1889 Assert(pThis->m_cchUpdateParent + pNode->cchName + 2 < sizeof(pThis->m_szUpdateParent)); 1890 memcpy(&pThis->m_szUpdateParent[pThis->m_cchUpdateParent], pNode->pszName, pNode->cchName); 1891 pThis->m_cchUpdateParent += pNode->cchName; 1892 pThis->m_szUpdateParent[pThis->m_cchUpdateParent++] = '/'; 1893 pThis->m_szUpdateParent[pThis->m_cchUpdateParent] = '\0'; 1894 1895 pNode = pNode->papChildren[0]; 1896 } 1897 else if (pNode->iSelf + 1 < pParent->cChildren) 1898 { 1899 /* next sibling or one if its descendants. */ 1900 Assert(pThis->m_pUpdateParent == pParent); 1901 pNode = pParent->papChildren[pNode->iSelf + 1]; 1902 } 1903 else 1904 { 1905 /* move up and down- / on-wards */ 1906 for (;;) 1907 1907 { 1908 Assert(pNode == pThis->m_pRoot); 1909 pThis->m_iUpdateChild = UINT32_MAX; 1910 pThis->m_szUpdateParent[0] = '\0'; 1911 pThis->m_cchUpdateParent = 0; 1912 pThis->m_pUpdateParent = NULL; 1913 break; 1908 /* ascend */ 1909 pNode = pParent; 1910 pParent = pParent->pParent; 1911 if (!pParent) 1912 { 1913 Assert(pNode == pThis->m_pRoot); 1914 pThis->m_iUpdateChild = UINT32_MAX; 1915 pThis->m_szUpdateParent[0] = '\0'; 1916 pThis->m_cchUpdateParent = 0; 1917 pThis->m_pUpdateParent = NULL; 1918 break; 1919 } 1920 Assert(pThis->m_cchUpdateParent > pNode->cchName + 1); 1921 pThis->m_cchUpdateParent -= pNode->cchName + 1; 1922 1923 /* try advance */ 1924 if (pNode->iSelf + 1 < pParent->cChildren) 1925 { 1926 pNode = pParent->papChildren[pNode->iSelf + 1]; 1927 pThis->m_szUpdateParent[pThis->m_cchUpdateParent] = '\0'; 1928 break; 1929 } 1914 1930 } 1915 Assert(pThis->m_cchUpdateParent > pNode->cchName + 1); 1916 pThis->m_cchUpdateParent -= pNode->cchName + 1; 1917 1918 /* try advance */ 1919 if (pNode->iSelf + 1 < pParent->cChildren) 1931 } 1932 1933 /* decend to a node containing data and finalize the globals. (ASSUMES leaf has data.) */ 1934 if (pThis->m_iUpdateChild != UINT32_MAX) 1935 { 1936 while ( pNode->enmType == STAMTYPE_INVALID 1937 && pNode->cChildren > 0) 1920 1938 { 1921 pNode = pParent->papChildren[pNode->iSelf + 1]; 1922 1923 /* decend to a node containing data. */ 1924 while ( pNode->enmType == STAMTYPE_INVALID 1925 && pNode->cChildren > 0) 1926 { 1927 Assert(pNode->enmState == kDbgGuiStatsNodeState_kVisible); 1928 1929 Assert(pThis->m_cchUpdateParent + pNode->cchName + 2 < sizeof(pThis->m_szUpdateParent)); 1930 memcpy(&pThis->m_szUpdateParent[pThis->m_cchUpdateParent], pNode->pszName, pNode->cchName); 1931 pThis->m_cchUpdateParent += pNode->cchName; 1932 pThis->m_szUpdateParent[pThis->m_cchUpdateParent++] = '/'; 1933 1934 pNode = pNode->papChildren[0]; 1935 } 1936 Assert(pNode->enmType != STAMTYPE_INVALID); 1939 Assert(pNode->enmState == kDbgGuiStatsNodeState_kVisible); 1940 1941 Assert(pThis->m_cchUpdateParent + pNode->cchName + 2 < sizeof(pThis->m_szUpdateParent)); 1942 memcpy(&pThis->m_szUpdateParent[pThis->m_cchUpdateParent], pNode->pszName, pNode->cchName); 1943 pThis->m_cchUpdateParent += pNode->cchName; 1944 pThis->m_szUpdateParent[pThis->m_cchUpdateParent++] = '/'; 1937 1945 pThis->m_szUpdateParent[pThis->m_cchUpdateParent] = '\0'; 1938 pThis->m_iUpdateChild = pNode->iSelf; 1939 pThis->m_pUpdateParent = pNode->pParent; 1940 break; 1946 1947 pNode = pNode->papChildren[0]; 1941 1948 } 1949 Assert(pNode->enmType != STAMTYPE_INVALID); 1950 pThis->m_iUpdateChild = pNode->iSelf; 1951 pThis->m_pUpdateParent = pNode->pParent; 1952 Assert(pNode == pCorrectNext); 1942 1953 } 1943 1954 } … … 1994 2005 { 1995 2006 PDBGGUISTATSNODE const pLast = prevDataNode(m_pUpdateParent->papChildren[m_iUpdateChild]); 1996 for (;;) 1997 { 1998 PDBGGUISTATSNODE pNode = nextNode(pLast); 1999 if (!pNode) 2000 break; 2001 char szFoo[1024]; 2002 getNodePath(pNode, szFoo, 1024); fprintf(stderr, "removing pNode=%p: %s\n", pNode, szFoo); 2003 if (pLast) getNodePath(pLast, szFoo, 1024); else szFoo[0] = '\0'; 2004 fprintf(stderr, " pLast=%p: %s\n", pLast, szFoo); 2005 removeAndDestroyNode(pNode); 2007 if (!pLast) 2008 setRootNode(createRootNode()); 2009 else 2010 { 2011 PDBGGUISTATSNODE pNode; 2012 while ((pNode = nextNode(pLast))) 2013 removeAndDestroyNode(pNode); 2006 2014 } 2007 2015 m_fUpdateInsertRemove = true; -
trunk/src/VBox/Debugger/VBoxDbgStatsQt4.h
r12817 r12819 77 77 */ 78 78 void resetStats(const QString &rPatStr); 79 80 private:81 /**82 * Callback function for the STAMR3Enum() made by update().83 *84 * @returns 0 (i.e. never halt enumeration).85 *86 * @param pszName The name of the sample.87 * @param enmType The type.88 * @param pvSample Pointer to the data. enmType indicates the format of this data.89 * @param enmUnit The unit.90 * @param enmVisibility The visibility.91 * @param pszDesc The description.92 * @param pvUser Pointer to the VBoxDbgStatsView object.93 */94 //later: static DECLCALLBACK(int) updateCallback(const char *pszName, STAMTYPE enmType, void *pvSample, STAMUNIT enmUnit,95 //later: STAMVISIBILITY enmVisibility, const char *pszDesc, void *pvUser);96 97 protected:98 /**99 * Creates / finds the path to the specified stats item and makes is visible.100 *101 * @returns Parent node.102 * @param pszName Path to a stats item.103 */104 // VBoxDbgStatsItem *createPath(const char *pszName);105 79 106 80 protected slots:
Note:
See TracChangeset
for help on using the changeset viewer.