*/}}
Browse Source

wacom cases and cleanup

YimingWu 4 days ago
parent
commit
1944acee48
3 changed files with 25 additions and 8 deletions
  1. 1 4
      la_data.c
  2. 23 3
      la_kernel.c
  3. 1 1
      la_tns_kernel.c

+ 1 - 4
la_data.c

@@ -2483,7 +2483,7 @@ void la_WriteFloat(laUDF *udf, real Data){
     fwrite(&Data, sizeof(real), 1, udf->DiskFile);
     fwrite(&Data, sizeof(real), 1, udf->DiskFile);
 }
 }
 void la_WriteSized(laUDF *udf, void* Data, int size){
 void la_WriteSized(laUDF *udf, void* Data, int size){
-    printf("%llx %d\n",Data,size);
+    //printf("%llx %d\n",Data,size);
     fwrite(Data, size, 1, udf->DiskFile);
     fwrite(Data, size, 1, udf->DiskFile);
 }
 }
 short la_ReadShort(laUDF *udf){
 short la_ReadShort(laUDF *udf){
@@ -3355,9 +3355,6 @@ int la_ExtractProp(laUDF *udf, laManagedUDF* mUDF, laPropPack *pp, void *ParentI
                                     if(Mode==LA_UDF_MODE_OVERWRITE && ItemType == LA_UDF_HYPER_ITEM){
                                     if(Mode==LA_UDF_MODE_OVERWRITE && ItemType == LA_UDF_HYPER_ITEM){
                                         laUID uid; la_PeekHyperUID(udf, &uid.String);
                                         laUID uid; la_PeekHyperUID(udf, &uid.String);
                                         Instance = la_GetReadDBInstNUID(uid.String);
                                         Instance = la_GetReadDBInstNUID(uid.String);
-                                        if(strSame(pc->Identifier,"our_pallette")){ 
-                                            printf("%d %s\n",Instance,uid.String);
-                                        }
                                         if(Instance){ la_ResetInstance(Instance, pc,IsItem); replaced=1; }
                                         if(Instance){ la_ResetInstance(Instance, pc,IsItem); replaced=1; }
                                         else{ /*logPrint("[Note] Hyper2 item [%s] from property '%s' hasn't been loaded yet, will append.\n", uid.String, p->Identifier);*/ }
                                         else{ /*logPrint("[Note] Hyper2 item [%s] from property '%s' hasn't been loaded yet, will append.\n", uid.String, p->Identifier);*/ }
                                     }
                                     }

+ 23 - 3
la_kernel.c

@@ -156,6 +156,7 @@ void la_ScanWacomDevices(Display *display, int deviceid){
     XIDeviceInfo *info, *dev;
     XIDeviceInfo *info, *dev;
     int ndevices;
     int ndevices;
     int i; char * word;
     int i; char * word;
+    int LikelyPen=-1,LikelyEraser=-1;
 
 
     int _event, _error;
     int _event, _error;
     if (!XQueryExtension(MAIN.dpy, "XInputExtension", &MAIN.xi_opcode, &_event, &_error)) {
     if (!XQueryExtension(MAIN.dpy, "XInputExtension", &MAIN.xi_opcode, &_event, &_error)) {
@@ -171,11 +172,30 @@ void la_ScanWacomDevices(Display *display, int deviceid){
         word = strtok (dev->name," ");
         word = strtok (dev->name," ");
         while (1) {
         while (1) {
             word = strtok (NULL, " "); if (!word) break;
             word = strtok (NULL, " "); if (!word) break;
-            if (strcmp("stylus", word) == 0){ if(LA_G_STYLUS(dev)) MAIN.WacomDeviceStylus = dev->deviceid; }// wacom
-            elif (strcmp("eraser", word) == 0){ if(LA_G_ERASER) MAIN.WacomDeviceEraser = dev->deviceid; }// wacom
+            if (strstr("stylus", word)){ if(LA_G_STYLUS(dev)) MAIN.WacomDeviceStylus = dev->deviceid; }// wacom
+            elif (strstr("eraser", word)){ if(LA_G_ERASER) MAIN.WacomDeviceEraser = dev->deviceid; }// wacom
             elif (is_ipts && strcmp("pen", word) == 0){ if(LA_G_STYLUS(dev)) MAIN.WacomDeviceStylus = dev->deviceid; }// surface ipts
             elif (is_ipts && strcmp("pen", word) == 0){ if(LA_G_STYLUS(dev)) MAIN.WacomDeviceStylus = dev->deviceid; }// surface ipts
             elif (is_ipts && strcmp("eraser", word) == 0){ if(LA_G_ERASER) MAIN.WacomDeviceEraser = dev->deviceid; }// surface ipts
             elif (is_ipts && strcmp("eraser", word) == 0){ if(LA_G_ERASER) MAIN.WacomDeviceEraser = dev->deviceid; }// surface ipts
-            elif (strcmp("pen", word) == 0){ if(LA_G_STYLUS(dev)) MAIN.WacomDeviceStylus = dev->deviceid; }// generic pen
+            elif (strstr("pen", word)){ if(LA_G_STYLUS(dev)) MAIN.WacomDeviceStylus = dev->deviceid; }// generic pen
+        }
+    }
+    if(!MAIN.WacomDeviceStylus){
+        for(i = 0; i < ndevices; i++) {
+            dev = &info[i]; strToLower(dev->name);
+            if (strstr(dev->name, "stylus")){ if(LA_G_STYLUS(dev)) MAIN.WacomDeviceStylus = dev->deviceid; } // xwayland reports "stylus:10" etc
+        }
+    }
+    if(!MAIN.WacomDeviceStylus){
+        for(i = 0; i < ndevices; i++) { dev = &info[i];
+            if(la_DeviceProbablyHasPressure(dev)){ MAIN.WacomDeviceStylus=dev->deviceid; break; } // generic stylus with unknown name
+        }
+    }
+    if(!MAIN.WacomDeviceEraser){
+        if (strstr(dev->name, "eraser")){ if(LA_G_ERASER) MAIN.WacomDeviceEraser = dev->deviceid; } // xwayland reports "eraser:10" etc
+    }
+    if(!MAIN.WacomDeviceEraser){
+        for(i = 0; i < ndevices; i++) { dev = &info[i]; if(MAIN.WacomDeviceStylus == dev->deviceid) continue;
+            if(la_DeviceProbablyHasPressure(dev)){ MAIN.WacomDeviceStylus=dev->deviceid;  break; } // generic eraser with unknown name
         }
         }
     }
     }
     if(MAIN.WacomDeviceStylus || MAIN.WacomDeviceEraser){
     if(MAIN.WacomDeviceStylus || MAIN.WacomDeviceEraser){

+ 1 - 1
la_tns_kernel.c

@@ -4661,7 +4661,7 @@ void tnsEnsureMaterialShader(tnsMaterial* mat, int Refresh){
 
 
 void tnsPrintMaterials(){
 void tnsPrintMaterials(){
     for(tnsMaterial* m=T->World->Materials.pFirst;m;m=m->Item.pNext){
     for(tnsMaterial* m=T->World->Materials.pFirst;m;m=m->Item.pNext){
-        printf("%s %d %d\n",(m->Name&&m->Name->Ptr?m->Name->Ptr:""),m,m->Page->Racks.pFirst);
+        logPrintNew("%s %d %d\n",(m->Name&&m->Name->Ptr?m->Name->Ptr:""),m,m->Page->Racks.pFirst);
     }
     }
 }
 }