|
@@ -144,6 +144,7 @@ void la_DestroyWindow(laWindow *wnd){
|
|
|
lstRemoveItem(&MAIN.Windows, wnd);
|
|
|
|
|
|
memFree(wnd);
|
|
|
+ MAIN.CurrentWindow=MAIN.Windows.pFirst;
|
|
|
}
|
|
|
|
|
|
void laRenameWindow(laWindow* wnd, char* name){
|
|
@@ -411,7 +412,6 @@ void laShutoff(){
|
|
|
laSharedTypeItem* sti; while(sti=lstPopItem(&MAIN.SharedTypePointerSync)){ memFree(sti); }
|
|
|
laKeyMapItem* kmi; while(kmi=lstPopItem(&MAIN.KeyMap.Items)){ la_FreeKeyMapItem(kmi); }
|
|
|
laTheme* t; while(t=lstPopItem(&MAIN.Themes)){ la_DestroyTheme(t); }
|
|
|
- laPanel* p; while(p=lstPopItem(&MAIN.WastedPanels)){ memFree(p); }
|
|
|
|
|
|
arrFree(&MAIN.InputBuf,&MAIN.InputBufNext);
|
|
|
arrFree(&MAIN.InputBufU,&MAIN.InputBufUNext);
|
|
@@ -427,6 +427,7 @@ void laShutoff(){
|
|
|
tnsQuit();
|
|
|
|
|
|
laPropContainer* pc; while(pc=lstPopItem(&MAIN.PropContainers)){ la_FreePropertyContainer(pc); }
|
|
|
+ laPanel* p; while(p=lstPopItem(&MAIN.WastedPanels)){ memFree(p); }
|
|
|
|
|
|
strSafeDump();
|
|
|
|
|
@@ -2157,14 +2158,14 @@ void laDeferredDestroyPanel(laPanel *p){
|
|
|
void laDestroySinglePanel(laPanel *p){
|
|
|
la_SetPropMathcerContext(p);
|
|
|
|
|
|
- if (p->PropLinkPP.LastPs->p->SubProp->Props.pFirst){
|
|
|
+ if (p->PropLinkPP.LastPs&&p->PropLinkPP.LastPs->p->SubProp->Props.pFirst){
|
|
|
for(laProp* prop=p->PropLinkPP.LastPs->p->SubProp->Props.pFirst;prop;prop=prop->Item.pNext){
|
|
|
{ /* la_StopUsingPropPack(&prop->DetachedPP); */ }
|
|
|
//laStopUsingDataBlock(prop->DetachedPP.LastPs->UseInstance, prop->DetachedPP.LastPs->p,MAIN.PropMatcherContextP);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(p==MAIN.CurrentWindow->MaximizedUiPanel){ laRestoreCanvasUI(); }
|
|
|
+ if(MAIN.CurrentWindow&&p==MAIN.CurrentWindow->MaximizedUiPanel){ laRestoreCanvasUI(); }
|
|
|
|
|
|
la_DestroyUiList(&p->UI, 1, 1, 0);
|
|
|
la_DestroyUiList(&p->TitleBar, 1, 1, 0);
|
|
@@ -5892,7 +5893,7 @@ void laRequestDelayEvent(real Seconds){
|
|
|
MAIN.DelayTriggered=0; MAIN.DelayStart=MAIN.TimeAccum; MAIN.DelayTime = Seconds; }
|
|
|
|
|
|
int la_UiStillInService(void *UiInstance){
|
|
|
- laOperator *ai, *dai;
|
|
|
+ laOperator *ai, *dai; if(!MAIN.CurrentWindow) return 0;
|
|
|
for (ai = MAIN.CurrentWindow->Operators.pFirst; ai; ai = ai->Item.pNext){
|
|
|
if (ai->Instance == UiInstance) return 1;
|
|
|
}
|
|
@@ -5942,7 +5943,7 @@ void la_StopAllOperators(){
|
|
|
}
|
|
|
for (ai = MAIN.CurrentWindow->Operators.pFirst; ai; ai = NextAi){
|
|
|
NextAi = ai->Item.pNext;
|
|
|
- if (ai->Instance == ai->ToPanel && !ai->ToPanel->IsMenuPanel){
|
|
|
+ if (ai->ToPanel && ai->Instance == ai->ToPanel && !ai->ToPanel->IsMenuPanel){
|
|
|
laHidePanelWithDissoveEffect(ai->ToPanel);
|
|
|
ai->ToPanel->LaterDestroy = 1;
|
|
|
}
|
|
@@ -6081,6 +6082,7 @@ int la_UpdateOperatorHints(laWindow* w){
|
|
|
laSafeString* ss=0;
|
|
|
for(laOperator* o=w->Operators.pFirst;o;o=o->Item.pNext){
|
|
|
if(o->RuntimeHint&&o->RuntimeHint->Ptr){ strSafePrint(&ss, "%s | %s ", o->Type->Name, o->RuntimeHint->Ptr);}
|
|
|
+ strSafeDestroy(&o->RuntimeHint);
|
|
|
}
|
|
|
if((w->OperatorHints&&ss&&strSame(ss->Ptr,w->OperatorHints->Ptr))||(!w->OperatorHints&&!ss)){ //pass
|
|
|
}else{
|
|
@@ -6214,7 +6216,7 @@ int la_HandleEvents(laWindow *w){
|
|
|
|
|
|
if (e && !w->Operators.pFirst){ laInvokeUi(0, "LA_window_operator", e, w, 0, 0); }
|
|
|
|
|
|
- if (e) if(!la_HandleSingleEvent(e, &w->Operators)){ la_StopAllOperators(); return 0; } //EXIT
|
|
|
+ if (e) if(!la_HandleSingleEvent(e, &w->Operators)){ la_StopAllOperators(); FreeMem(e); return 0; } //EXIT
|
|
|
|
|
|
FreeMem(e);
|
|
|
}
|
|
@@ -6385,7 +6387,7 @@ void laMainLoop(){
|
|
|
|
|
|
for (w=MAIN.Windows.pFirst;w;w = NextW){
|
|
|
NextW = w->Item.pNext;
|
|
|
- if(!la_HandleEvents(w)) return;
|
|
|
+ if(!la_HandleEvents(w)){ laShutoff(); return; }
|
|
|
}
|
|
|
for(w=MAIN.Windows.pFirst;w;w=w->Item.pNext){
|
|
|
tnsSwitchToCurrentWindowContext(w);
|
|
@@ -6396,7 +6398,7 @@ void laMainLoop(){
|
|
|
}
|
|
|
//t2 = clock();
|
|
|
laRecordTime(&FrameEndTime);
|
|
|
- TimeInterval = /* (t2 - t1) / 1000.0;*/ laTimeElapsedSecondsf(&FrameEndTime, &FrameStartTime);
|
|
|
+ TimeInterval = laTimeElapsedSecondsf(&FrameEndTime, &FrameStartTime);
|
|
|
Pause = (1.0 / MAIN.TopFramerate - TimeInterval);
|
|
|
|
|
|
if (Pause > 0){
|
|
@@ -6404,10 +6406,7 @@ void laMainLoop(){
|
|
|
usleep(ms);
|
|
|
}
|
|
|
|
|
|
- laRecordTime(&FrameEndTime);
|
|
|
- TimeInterval = /* (t2 - t1) / 1000.0;*/ laTimeElapsedSecondsf(&FrameEndTime, &FrameStartTime);
|
|
|
-
|
|
|
- MAIN.TimeAccum += (MAIN.LastFrameTime = (Pause + TimeInterval));
|
|
|
+ MAIN.TimeAccum += (MAIN.LastFrameTime = Pause+TimeInterval);
|
|
|
FrameInterval = 1.0 / MAIN.Animation.FrameRate;
|
|
|
}
|
|
|
}
|