Bläddra i källkod

fix: handle render errors (#3557)

David Luzar 4 år sedan
förälder
incheckning
6bebfe63be
2 ändrade filer med 28 tillägg och 16 borttagningar
  1. 1 1
      src/renderer/renderElement.ts
  2. 27 15
      src/renderer/renderScene.ts

+ 1 - 1
src/renderer/renderElement.ts

@@ -206,7 +206,7 @@ const drawElementOnCanvas = (
           context.canvas.remove();
         }
       } else {
-        console.error(`Unimplemented type ${element.type}`);
+        throw new Error(`Unimplemented type ${element.type}`);
       }
     }
   }

+ 27 - 15
src/renderer/renderScene.ts

@@ -269,7 +269,11 @@ export const renderScene = (
   );
 
   visibleElements.forEach((element) => {
-    renderElement(element, rc, context, renderOptimizations, sceneState);
+    try {
+      renderElement(element, rc, context, renderOptimizations, sceneState);
+    } catch (error) {
+      console.error(error);
+    }
   });
 
   if (appState.editingLinearElement) {
@@ -283,13 +287,17 @@ export const renderScene = (
 
   // Paint selection element
   if (selectionElement) {
-    renderElement(
-      selectionElement,
-      rc,
-      context,
-      renderOptimizations,
-      sceneState,
-    );
+    try {
+      renderElement(
+        selectionElement,
+        rc,
+        context,
+        renderOptimizations,
+        sceneState,
+      );
+    } catch (error) {
+      console.error(error);
+    }
   }
 
   if (isBindingEnabled(appState)) {
@@ -834,13 +842,17 @@ export const renderSceneToSvg = (
   // render elements
   elements.forEach((element) => {
     if (!element.isDeleted) {
-      renderElementToSvg(
-        element,
-        rsvg,
-        svgRoot,
-        element.x + offsetX,
-        element.y + offsetY,
-      );
+      try {
+        renderElementToSvg(
+          element,
+          rsvg,
+          svgRoot,
+          element.x + offsetX,
+          element.y + offsetY,
+        );
+      } catch (error) {
+        console.error(error);
+      }
     }
   });
 };