// // DeleteOctree // void DeleteOctree(Octree **tree_ptr) { // delete the lists on the tree int i; int max; max = tree_ptr[0]->max_elements; for (i = 0; i < max; i++) { DestroyPtrList(tree_ptr[i]->list); } // end of the for // have to delete every node individually for (i = 0; i < max; i++) { free(tree_ptr[i]); } // end of the for free(tree_ptr); } // end of the function
void PlayBatchMacro(LPLIST lpQueueList) /***********************************************************************/ { LPQUEUEITEM lpQueueItem = NULL; LPMACROITEM lpMacroItem; FNAME szFileName; LIST TempList; BOOL fError = TRUE; fPCDNotice = FALSE; while (TRUE) { if (lpQueueItem) lpQueueItem = (LPQUEUEITEM)ListGetNext(lpQueueItem); else lpQueueItem = (LPQUEUEITEM)ListGetHead(lpQueueList); if (!lpQueueItem) { fError = FALSE; break; } ListInit(&lpQueueItem->PacketList); // create a command list for the load command if (!CreateLoadFileParms(0, lpQueueItem->szFileName, TRUE, &lpQueueItem->cmsInfo, &lpQueueItem->PhotoCDResOverride, &lpQueueItem->parms)) continue; lpMacroItem = NULL; while (TRUE) { if (lpMacroItem) lpMacroItem = (LPMACROITEM)ListGetNext(lpMacroItem); else lpMacroItem = (LPMACROITEM)ListGetHead(&lpQueueItem->MacroList); if (!lpMacroItem) break; if ( !LookupExtFile( lpMacroItem->szMacro, szFileName, IDN_MACRO ) ) continue; // read in the entire macro file for faster processing if (!ReadMacro(szFileName, &TempList)) continue; if (MacroAnyLoadCommands(&TempList)) { Message(IDS_BADBATCHMACRO); DestroyPacketList(&TempList); continue; } ListAddTail(&lpQueueItem->PacketList, ListGetHead(&TempList)); } if (!SetupMacro(lpQueueItem)) break; } if (!fError) { if (EnableLogging(TRUE)) { lpQueueItem = NULL; while (!fError) { if (lpQueueItem) lpQueueItem = (LPQUEUEITEM)ListGetNext(lpQueueItem); else lpQueueItem = (LPQUEUEITEM)ListGetHead(lpQueueList); if (!lpQueueItem) break; if (!PlayMacro(NULL, NULL, 1, NO, &lpQueueItem->PacketList, NULL, lpQueueItem->PhotoCDResOverride)) break; } EnableLogging(FALSE); } } lpQueueItem = NULL; while (TRUE) { if (lpQueueItem) lpQueueItem = (LPQUEUEITEM)ListGetNext(lpQueueItem); else lpQueueItem = (LPQUEUEITEM)ListGetHead(lpQueueList); if (!lpQueueItem) break; DestroyPacketList(&lpQueueItem->PacketList); DestroyPtrList(&lpQueueItem->MacroList); } DestroyPtrList(lpQueueList); }