Code

Rename LPE: mirror reflect --> mirror symmetry
[inkscape.git] / src / display / nr-filter-colormatrix.cpp
index 054b3899b41171a84156539a208a82995ca96def..1d73f14e1906ec92ff560d18bba0d8fec95cdc8a 100644 (file)
@@ -43,14 +43,16 @@ int FilterColorMatrix::render(FilterSlot &slot, FilterUnits const &/*units*/) {
 
     // this primitive is defined for non-premultiplied RGBA values,
     // thus convert them to that format
+    bool free_in_on_exit = false;
     if (in->mode != NR_PIXBLOCK_MODE_R8G8B8A8N) {
         NRPixBlock *original_in = in;
         in = new NRPixBlock;
         nr_pixblock_setup_fast(in, NR_PIXBLOCK_MODE_R8G8B8A8N,
                                original_in->area.x0, original_in->area.y0,
                                original_in->area.x1, original_in->area.y1,
-                               false);
+                               true);
         nr_blit_pixblock_pixblock(in, original_in);
+        free_in_on_exit = true;
     }
 
     unsigned char *in_data = NR_PIXBLOCK_PX(in);
@@ -143,6 +145,12 @@ int FilterColorMatrix::render(FilterSlot &slot, FilterUnits const &/*units*/) {
         case COLORMATRIX_ENDTYPE:
             break;
     }
+
+    if (free_in_on_exit) {
+        nr_pixblock_release(in);
+        delete in;
+    }
+
     out->empty = FALSE;
     slot.set(_output, out);
     return 0;