*/}}
Ver Fonte

fuck intel and also comment node

YimingWu há 1 ano atrás
pai
commit
beb07d1446
6 ficheiros alterados com 32 adições e 27 exclusões
  1. 0 1
      la_interface.h
  2. 6 7
      la_kernel.c
  3. 11 8
      la_tns_kernel.c
  4. 6 3
      resources/la_nodes_basic.c
  5. 7 6
      resources/la_properties.c
  6. 2 2
      resources/la_widgets.c

+ 0 - 1
la_interface.h

@@ -1128,7 +1128,6 @@ STRUCTURE(laPanel){
     //int         PanX, PanY;
 
     int Show;
-    int DefaultGLFormat;
     short Refresh;
     short ShowCorner;
     unsigned int FrameDistinguish;

+ 6 - 7
la_kernel.c

@@ -166,7 +166,7 @@ Window la_CreateWindowX11(int x, int y, int w, int h, char *title, int SyncToVBl
 
     XStoreName(MAIN.dpy, win, title);
     //XMapWindow(MAIN.dpy, win);
-    glXMakeCurrent(MAIN.dpy, win, (*r_glc));
+    glXMakeCurrent(MAIN.dpy, win, MAIN.glc);
 
     int sync=SyncToVBlank?1:0; glXSwapIntervalEXTF(MAIN.dpy, win, sync);
 
@@ -1327,7 +1327,8 @@ void la_PanelDrawToWindow(laPanel *p, laWindow *w){
 void la_PanelDrawToOffsceen(laPanel *p, laUiList *uil){
     laEnsurePanelInBound(p,p->MenuRefer?p->MenuRefer:&p->UI);
     if (!p->OffScr){
-        p->OffScr = tnsCreate2DOffscreen(p->DefaultGLFormat?p->DefaultGLFormat:GL_RGBA8, p->W, p->H, MAIN.PanelMultisample, 0);
+        int GLFormat=(p->PanelTemplate&&p->PanelTemplate->DefaultGLFormat)?p->PanelTemplate->DefaultGLFormat:GL_RGBA8;
+        p->OffScr = tnsCreate2DOffscreen(GLFormat, p->W, p->H, MAIN.PanelMultisample, 0);
     }
     tnsDrawToOffscreen(p->OffScr, 1, 0);
 }
@@ -2169,7 +2170,6 @@ laPanel *laCreatePanelT(laBlock *b, laUiTemplate* uit){
 
     strSafeSet(&p->Title, uit->Title->Ptr);
     p->PanelTemplate = uit;
-    p->DefaultGLFormat=uit->DefaultGLFormat?uit->DefaultGLFormat:GL_RGBA8;
 
     p->Show = 1;
     p->PP.EndInstance = p;
@@ -2765,10 +2765,10 @@ void laAddPanelMessage(laPanelMessageList *pml, char *Message){
     lstAppendItem(&pml->Msg, pm);
 }
 
-void laRedrawAllWindows(){
+void laRedrawAllWindows(){ if((!MAIN.CurrentWindow) || (!MAIN.CurrentWindow->win)) return;
     for(laWindow* w=MAIN.Windows.pFirst;w;w=w->Item.pNext) la_UpdateUiPlacement(w);
 }
-void laRedrawCurrentWindow(){
+void laRedrawCurrentWindow(){ if((!MAIN.CurrentWindow) || (!MAIN.CurrentWindow->win)) return;
     if (MAIN.CurrentWindow) la_UpdateUiPlacement(MAIN.CurrentWindow);
 }
 void laRedrawCurrentPanel(){
@@ -5568,8 +5568,7 @@ int la_TestUiListMinumWidth(laUiList *uil){
             RowMode=0; rW=(int)((float)rW / ui->C->PreWidth + 2); if (W < rW) W = rW;
         }elif (ui->Type->GetMinWidth){
             tW = ui->Type->GetMinWidth(ui) + bt->LP + bt->RP;
-            tW = (int)((float)tW / ui->C->PreWidth + 2);
-            if(RowMode){ rW+=tW; }else{ if (W < tW) W = tW; }
+            if(RowMode){ rW+=tW; }else{ tW = (int)((float)tW / ui->C->PreWidth + 2); if (W < tW) W = tW; }
         }
         ui = ui->Item.pNext;
     }

+ 11 - 8
la_tns_kernel.c

@@ -1950,14 +1950,15 @@ void tnsConfigure2DTexture(tnsTexture *t){
         int format=isDepth?GL_DEPTH_COMPONENT:GL_RGBA;
         if(t->Multisample) glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, t->Multisample, t->GLTexBitsType, t->Width, t->Height, GL_TRUE);
         else{ glTexImage2D(GL_TEXTURE_2D, 0, t->GLTexBitsType, t->Width, t->Height, 0, format, GL_UNSIGNED_BYTE, 0);
-            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
-            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
+            int a=a=glGetError();
+            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
             //glTexEnvi(GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_REPLACE);
         }
     }
-    tnsUnbindTexture(t);
+    tnsUnbindTexture();
 }
 void tnsConfigure3DTexture(tnsTexture *t){
     tnsBindTexture(t);
@@ -1968,7 +1969,7 @@ void tnsConfigure3DTexture(tnsTexture *t){
         glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
         glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
         //glTexEnvi(GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_REPLACE);
-    tnsUnbindTexture(t);
+    tnsUnbindTexture();
 }
 
 void tnsReconfigureTextureParameters(int Multisample){
@@ -1983,14 +1984,14 @@ void tnsReconfigureTextureParameters(int Multisample){
             if(recreate){
                 glDeleteTextures(1, &t->GLTexHandle);
                 glGenTextures(1, &t->GLTexHandle);
-                T->TexColor=0;
             }
+            T->TexColor=0;
             tnsConfigure2DTexture(t);
             tnsAttach2DOffscreenBuffer(o, GL_COLOR_ATTACHMENT0, t);
         }
         t=o->pDepth;
         if(t){
-            t->Multisample = Multisample;
+            t->Multisample = Multisample; T->TexColor=0;
             tnsConfigure2DTexture(t);
             tnsAttach2DOffscreenBuffer(o, GL_DEPTH_ATTACHMENT, t);
         }
@@ -2045,7 +2046,7 @@ void tnsActiveTexture(GLenum tex){
     T->GlTextureSets = tex;
 }
 void tnsBindTexture(tnsTexture *t){
-    if (!t || T->TexColor==t) return;
+    if ((!t) || T->TexColor==t) return;
     if(t->GLTexType == GL_TEXTURE_2D){ tnsActiveTexture(GL_TEXTURE0); glBindTexture(t->GLTexType, t->GLTexHandle); T->TexColor=t;}
     elif(t->GLTexType == GL_TEXTURE_2D_MULTISAMPLE){ tnsActiveTexture(GL_TEXTURE1); glBindTexture(t->GLTexType, t->GLTexHandle); T->TexColor=t;}
     elif(t->GLTexType == GL_RENDERBUFFER){ glBindRenderbufferEXT(GL_RENDERBUFFER, t->GLTexHandle); T->TexRenderbuffer = t;}
@@ -2057,7 +2058,7 @@ void tnsUnbindTexture(){
         if(T->TexColor->GLTexType == GL_TEXTURE_2D){tnsActiveTexture(GL_TEXTURE0);}
         else if(T->TexColor->GLTexType == GL_TEXTURE_2D_MULTISAMPLE){tnsActiveTexture(GL_TEXTURE1);}
         else if(T->TexColor->GLTexType == GL_TEXTURE_3D){tnsActiveTexture(GL_TEXTURE0);}
-        glBindTexture(T->TexColor->GLTexType, -1); T->TexColor=0;
+        glBindTexture(T->TexColor->GLTexType, 0); T->TexColor=0;
     }
 }
 void tnsUniformUseTexture(tnsShader* s, int mode, int sample){
@@ -2274,6 +2275,7 @@ void tnsUseImage(tnsImage* im){
         for(int i=0;i<H;i++){ png_read_row(png_ptr, &buf[((H-i-1)*W)*4], NULL); }
         im->Texture=tnsCreate2DTexture(GL_RGBA8,W,H,0);
         tnsBindTexture(im->Texture); glTexSubImage2D(GL_TEXTURE_2D,0,0,0,W,H,GL_RGBA,GL_UNSIGNED_BYTE,buf);
+        tnsUnbindTexture();
     }
 cleanup_png_read:
     if(png_ptr && info_ptr) png_destroy_read_struct(&png_ptr,&info_ptr,0);
@@ -3192,6 +3194,7 @@ int CMP_NAME_IsThisFont(tnsFont *enumed, char *name){
 };
 
 int tnsStringGetDimension(char* content, uint32_t* contentU, int Count, int WLimit, int* Rows, int UseMono){
+    if((!MAIN.CurrentWindow)||(!MAIN.CurrentWindow->win)) return 0;
     real sx = 0; int sy = FM->UsingFont->height; real MA=FM->UsingFont->MonoAdvance;
     int i, rows=1, advance=1;
     int C = 0;

+ 6 - 3
resources/la_nodes_basic.c

@@ -692,9 +692,12 @@ int IDN_CommentEval(laCommentNode* n){ return 1; }
 void laui_CommentNode(laUiList *uil, laPropPack *This, laPropPack *Extra, laColumn *UNUSED, int context){
     laColumn* c=laFirstColumn(uil); laCommentNode*n=This->EndInstance;
     LA_BASE_NODE_HEADER(uil,c,This);
-    
-    laShowItemFull(uil,c,This,"content",LA_WIDGET_STRING_MULTI,0,0,0)->Flags|=LA_UI_FLAGS_NO_SCROLL_INACTIVE;
-}
+    laColumn* cl,*cr; laSplitColumn(uil,c,0.7); cl=laLeftColumn(c,0);cr=laRightColumn(c,1);
+    laUiItem* b=laOnConditionToggle(uil,cr,0,0,0,0,0);{
+        laShowItemFull(uil,cl,This,"content",LA_WIDGET_STRING_MULTI,0,0,0)->Flags|=LA_UI_FLAGS_NO_SCROLL_INACTIVE;
+    }laElse(uil,b);{
+        laShowItemFull(uil,cl,This,"content",LA_WIDGET_STRING_PLAIN,0,0,0)->Flags|=LA_TEXT_LINE_WRAP;
+    }laEndCondition(uil,b);}
 
 void IDN_RGB2OKHSLInit(laRGB2OKHSLNode* n, int NoCreate){
     if(!NoCreate){

+ 7 - 6
resources/la_properties.c

@@ -365,6 +365,7 @@ void laset_WindowTitle(laWindow *w, char *content){
 void laset_WindowActiveLayout(laWindow *w, laLayout *l, int UNUSED_State){
     la_StopAllOperators();
     w->CurrentLayout = l;
+    if(!w->win){return;}
     laRenameWindow(w, l->ID->Ptr);
     laRedrawCurrentWindow();
 }
@@ -509,10 +510,10 @@ void* laget_CurrentRackPage(laRackPageCollection* c){
 }
 
 void laset_WindowColorSpace(laWindow* w, int space){
-    w->OutputColorSpace=space; laRedrawCurrentWindow();
+    w->OutputColorSpace=space; if(w->win) laRedrawCurrentWindow();
 }
 void laset_WindowShowStripes(laWindow* w, int stripes){
-    w->OutputShowStripes=stripes; laRedrawCurrentWindow();
+    w->OutputShowStripes=stripes; if(w->win) laRedrawCurrentWindow();
 }
 
 void *tnsget_TnsMain(void *unused,void *unused2){
@@ -656,12 +657,12 @@ void lapost_Panel(laPanel *p){
         if(p->Mode) laui_DefaultPanelTitleBar(&p->TitleBar, &p->PP, &p->PropLinkPP, uit->Header);
     }
     if(p->IsMenuPanel){ laui_DefaultMenuBarActual(&p->TitleBar, &p->PP, &p->PropLinkPP, 0, 0); }
-    if(p->Title) p->TitleWidth = tnsStringGetWidth(transLate(p->Title->Ptr), 0, 0);
-    XSync(MAIN.dpy,1);
+    //if(p->Title) p->TitleWidth = tnsStringGetWidth(transLate(p->Title->Ptr), 0, 0);
+    XSync(MAIN.dpy,0);
 }
 void lapost_UserPreferences(void* unused){
-    MAIN.ScaledUiRowHeight=MAIN.UiRowHeight;
-    tnsInvalidateFontCache();
+    //MAIN.ScaledUiRowHeight=MAIN.UiRowHeight;
+    //tnsInvalidateFontCache();
 }
 void laset_ColorPickerGamma(void* unused, real gamma){
     MAIN.ColorPickerGamma=gamma; laRedrawCurrentWindow();

+ 2 - 2
resources/la_widgets.c

@@ -1387,9 +1387,9 @@ void la_ImageDraw(laUiItem *ui, int h){
     int Full=ui->Flags&LA_UI_IMAGE_FULL_W;
     real r=(real)(ui->R-ui->L)/W; if(r<1){W*=r;H*=r;}
     real UseW=Full?(W):((real)LA_RH*ui->SymbolID/H*W);
-    real L=0,U=0,UseH=Full?H:(ui->B-ui->U);
+    real L=(ui->R-ui->L-UseW)/2,U=0,UseH=Full?H:(ui->B-ui->U);
     if(Full){ U=(ui->B-ui->U-H)/2; }
-    if(ui->Flags&LA_TEXT_ALIGN_LEFT){ L=(ui->R-ui->L-UseW)/2; }
+    if((ui->Flags&LA_TEXT_ALIGN_CENTER) || Full){ L=0; }
     elif(ui->Flags&LA_TEXT_ALIGN_RIGHT){ L=ui->R-ui->L-UseW; }
     tnsDraw2DTextureDirectly(im->Texture,ui->L+L,ui->U+U,UseW,UseH);
     tnsFlush();