*/}}
Переглянути джерело

Some improvements on progress and prop reader

YimingWu 1 день тому
батько
коміт
3c1e131749
3 змінених файлів з 10 додано та 3 видалено
  1. 6 1
      la_data.c
  2. 3 1
      la_kernel.c
  3. 1 1
      la_util.c

+ 6 - 1
la_data.c

@@ -3359,11 +3359,11 @@ int la_ExtractProp(laUDF *udf, laManagedUDF* mUDF, laPropPack *pp, void *ParentI
                                         else{ /*logPrint("[Note] Hyper2 item [%s] from property '%s' hasn't been loaded yet, will append.\n", uid.String, p->Identifier);*/ }
                                     }
                                     if(!Instance) Instance = memAcquireHyperNoAppend(RealSize);
-                                    memMarkClean(Instance);
                                 }elif (pc->Hyper == 1) Instance = memAcquire(RealSize);
                                 else Instance = memAcquireSimple(RealSize);
                             }
                         }
+                        memMarkClean(Instance);
 
                         if (ItemType == LA_UDF_HYPER_ITEM){
                             if (pc->Hyper == 2){
@@ -3777,6 +3777,11 @@ int laRegisterModifications(int ReturnIfAnyMod, int ReturnIfAnyEmpty, int* rempt
         if(!m->udf)continue;
         m->udf->Modified=0; 
         la_ClearHyper2Instances(m->udf);
+        //laUDFPropSegment* ps; while(ps = lstPopItem(&m->udf->PropsToOperate)){
+        //    la_FreePropStepCache(ps->PP.Go);
+        //    strSafeDestroy(&ps->Path);
+        //    FreeMem(ps);
+        //}
     }
     for(laManagedSaveProp* msp=MAIN.ManagedSaveProps.pFirst;msp;msp=msp->Item.pNext){
         laPropPack PP={0}; registered=0;

+ 3 - 1
la_kernel.c

@@ -1014,6 +1014,7 @@ void laShowProgress(real p1, real p2){
     if(!MAIN.Progress.Called){
         laRecordTime(&MAIN.Progress.TimeCalled); MAIN.Progress.Called=1;
     }
+        if(p1>=0) MAIN.Progress.p1=p1; if(p2>=0) MAIN.Progress.p2=p2;
         laTimeRecorder tm; laRecordTime(&tm);
         real t=laTimeElapsedSecondsf(&tm,&MAIN.Progress.TimeCalled); if(t<0.1){ laSpinUnlock(&MAIN.OpsLock); return; }
         memcpy(&MAIN.Progress.TimeCalled,&tm,sizeof(laTimeRecorder));
@@ -1035,7 +1036,6 @@ void laShowProgress(real p1, real p2){
 #endif
             MAIN.Progress.Shown = 1;
         }
-    if(p1>=0) MAIN.Progress.p1=p1; if(p2>=0) MAIN.Progress.p2=p2;
 #ifdef LA_LINUX
     XClearWindow(MAIN.dpy,MAIN.Progress.w);
     XFillRectangle(MAIN.dpy,MAIN.Progress.w,MAIN.Progress.gc,LA_RH*2,0,PROGRESSW*MAIN.Progress.p1,LA_RH);
@@ -2979,6 +2979,8 @@ void la_PanelDefDraw(laWindow *w, laPanel *p, laBoxedTheme *bt){
         if (p->Refresh & LA_TAG_RECALC){
             laRecalcPanelImmediate(p);
         }
+        if(p->H<=0 || p->W<=0) return;
+
         if (!p->MenuRefer){
             if(!p->OffScr){ la_PanelDrawToOffsceen(p,&p->UI); p->Refresh|=LA_TAG_REDRAW; laRefreshWindow(); }
             if (p->Refresh || !p->OffScr){

+ 1 - 1
la_util.c

@@ -73,7 +73,7 @@ void laRecordTime(laTimeRecorder *tr){
 real laTimeElapsedSecondsf(laTimeRecorder *End, laTimeRecorder *Begin){
     real sec=0;
 #if (defined(LA_LINUX) || defined(LAGUI_ANDROID))
-    sec=End->ts.tv_sec-Begin->ts.tv_sec; sec+=((End->ts.tv_nsec-Begin->ts.tv_nsec)/1e9);
+    sec=End->ts.tv_sec-Begin->ts.tv_sec; sec+=(((real)(End->ts.tv_nsec-Begin->ts.tv_nsec))/1.0e9);
 #endif
 #ifdef _WIN32
     LARGE_INTEGER perfCnt; QueryPerformanceFrequency(&perfCnt);