Deallocation in YCbCrInput.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 13 Oct 2012 20:26:22 +0000 (22:26 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Sat, 13 Oct 2012 20:26:22 +0000 (22:26 +0200)
ycbcr_input.cpp
ycbcr_input.h

index a73518d..268abcb 100644 (file)
@@ -17,6 +17,9 @@ YCbCrInput::YCbCrInput(const ImageFormat &image_format,
          width(width),
          height(height)
 {
+       pbos[0] = pbos[1] = pbos[2] = 0;
+       texture_num[0] = texture_num[1] = texture_num[2] = 0;
+
        pitch[0] = pitch[1] = pitch[2] = width;
 
        assert(width % ycbcr_format.chroma_subsampling_x == 0);
@@ -32,6 +35,18 @@ YCbCrInput::YCbCrInput(const ImageFormat &image_format,
        register_int("needs_mipmaps", &needs_mipmaps);
 }
 
+YCbCrInput::~YCbCrInput()
+{
+       if (pbos[0] != 0) {
+               glDeleteBuffers(3, pbos);
+               check_error();
+       }
+       if (texture_num[0] != 0) {
+               glDeleteTextures(3, texture_num);
+               check_error();
+       }
+}
+
 void YCbCrInput::finalize()
 {
        // Create PBOs to hold the textures holding the input image, and then the texture itself.
index ed0c6ee..76afc3a 100644 (file)
@@ -30,6 +30,7 @@ public:
        YCbCrInput(const ImageFormat &image_format,
                   const YCbCrFormat &ycbcr_format,
                   unsigned width, unsigned height);
+       ~YCbCrInput();
 
        virtual std::string effect_type_id() const { return "YCbCrInput"; }