]> git.sesse.net Git - movit/blobdiff - resample_effect.cpp
Fix a leak if ResampleEffect is destroyed before being put on a chain.
[movit] / resample_effect.cpp
index 86d574b32d6468f22688a7c894de6356f1895909..453a83832f7cb5d905a11b49951ac63a6f14cc12 100644 (file)
@@ -301,7 +301,8 @@ double compute_sum_sq_error(const Tap<float>* weights, unsigned num_weights,
 }  // namespace
 
 ResampleEffect::ResampleEffect()
-       : input_width(1280),
+       : owns_effects(true),
+         input_width(1280),
          input_height(720),
          offset_x(0.0f), offset_y(0.0f),
          zoom_x(1.0f), zoom_y(1.0f),
@@ -319,6 +320,14 @@ ResampleEffect::ResampleEffect()
        update_size();
 }
 
+ResampleEffect::~ResampleEffect()
+{
+       if (owns_effects) {
+               delete hpass;
+               delete vpass;
+       }
+}
+
 void ResampleEffect::rewrite_graph(EffectChain *graph, Node *self)
 {
        Node *hpass_node = graph->add_node(hpass);
@@ -327,6 +336,7 @@ void ResampleEffect::rewrite_graph(EffectChain *graph, Node *self)
        graph->replace_receiver(self, hpass_node);
        graph->replace_sender(self, vpass_node);
        self->disabled = true;
+       owns_effects = false;
 } 
 
 // We get this information forwarded from the first blur pass,