vogleditor_QApiCallTreeModel::vogleditor_QApiCallTreeModel(vogl_trace_file_reader* reader, QObject *parent)
: QAbstractItemModel(parent)
{
- m_rootItem = new vogleditor_apiCallTreeItem(this);
+ m_rootItem = vogl_new(vogleditor_apiCallTreeItem, this);
setupModelData(reader, m_rootItem);
}
{
if (m_rootItem != NULL)
{
- delete m_rootItem;
+ vogl_delete(m_rootItem);
m_rootItem = NULL;
}
// and append it to the parent
if (pCurFrame == NULL)
{
- pCurFrame = new vogleditor_frameItem(total_swaps);
+ pCurFrame = vogl_new(vogleditor_frameItem, total_swaps);
vogleditor_apiCallTreeItem* pNewFrameNode = vogl_new(vogleditor_apiCallTreeItem, pCurFrame, pCurParent);
pCurParent->appendChild(pNewFrameNode);
m_itemList.append(pNewFrameNode);
// reset the CurFrame so that a new frame node will be created on the next api call
pCurFrame = NULL;
}
+ else if (entrypoint_id == VOGL_ENTRYPOINT_glBegin)
+ {
+ // items in the glBegin/glEnd block will be nested, including the glEnd
+ pCurParent = item;
+ }
+ else if (entrypoint_id == VOGL_ENTRYPOINT_glEnd)
+ {
+ // move the parent back one level of the hierarchy, to its own parent
+ pCurParent = pCurParent->parent();
+ }
}
if (pTrace_reader->get_packet_type() == cTSPTEOF)
{
gl_entrypoint_id_t entrypointId = static_cast<gl_entrypoint_id_t>(pItem->apiCallItem()->getGLPacket()->m_entrypoint_id);
if (vogl_is_draw_entrypoint(entrypointId) ||
- vogl_is_clear_entrypoint(entrypointId))
+ vogl_is_clear_entrypoint(entrypointId) ||
+ (entrypointId == VOGL_ENTRYPOINT_glBitmap) ||
+ (entrypointId == VOGL_ENTRYPOINT_glEnd))
{
pFound = iter.peekPrevious();
break;
{
gl_entrypoint_id_t entrypointId = static_cast<gl_entrypoint_id_t>(pItem->apiCallItem()->getGLPacket()->m_entrypoint_id);
if (vogl_is_draw_entrypoint(entrypointId) ||
- vogl_is_clear_entrypoint(entrypointId))
+ vogl_is_clear_entrypoint(entrypointId) ||
+ (entrypointId == VOGL_ENTRYPOINT_glBitmap) ||
+ (entrypointId == VOGL_ENTRYPOINT_glEnd))
{
pFound = iter.peekNext();
break;