[Scummvm-cvs-logs] SF.net SVN: scummvm:[55095] scummvm/trunk/graphics/video/codecs

fuzzie at users.sourceforge.net fuzzie at users.sourceforge.net
Sun Jan 2 15:57:49 CET 2011


Revision: 55095
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55095&view=rev
Author:   fuzzie
Date:     2011-01-02 14:57:49 +0000 (Sun, 02 Jan 2011)

Log Message:
-----------
VIDEO: Stop leaking surface data in several codecs.

Modified Paths:
--------------
    scummvm/trunk/graphics/video/codecs/cdtoons.cpp
    scummvm/trunk/graphics/video/codecs/indeo3.cpp
    scummvm/trunk/graphics/video/codecs/qtrle.cpp
    scummvm/trunk/graphics/video/codecs/rpza.cpp
    scummvm/trunk/graphics/video/codecs/rpza.h
    scummvm/trunk/graphics/video/codecs/smc.cpp
    scummvm/trunk/graphics/video/codecs/smc.h

Modified: scummvm/trunk/graphics/video/codecs/cdtoons.cpp
===================================================================
--- scummvm/trunk/graphics/video/codecs/cdtoons.cpp	2011-01-02 14:57:20 UTC (rev 55094)
+++ scummvm/trunk/graphics/video/codecs/cdtoons.cpp	2011-01-02 14:57:49 UTC (rev 55095)
@@ -62,6 +62,7 @@
 }
 
 CDToonsDecoder::~CDToonsDecoder() {
+	_surface->free();
 	delete _surface;
 
 	for (Common::HashMap<uint16, CDToonsBlock>::iterator i = _blocks.begin(); i != _blocks.end(); i++)

Modified: scummvm/trunk/graphics/video/codecs/indeo3.cpp
===================================================================
--- scummvm/trunk/graphics/video/codecs/indeo3.cpp	2011-01-02 14:57:20 UTC (rev 55094)
+++ scummvm/trunk/graphics/video/codecs/indeo3.cpp	2011-01-02 14:57:49 UTC (rev 55095)
@@ -58,6 +58,7 @@
 }
 
 Indeo3Decoder::~Indeo3Decoder() {
+	_surface->free();
 	delete _surface;
 
 	delete[] _iv_frame[0].the_buf;

Modified: scummvm/trunk/graphics/video/codecs/qtrle.cpp
===================================================================
--- scummvm/trunk/graphics/video/codecs/qtrle.cpp	2011-01-02 14:57:20 UTC (rev 55094)
+++ scummvm/trunk/graphics/video/codecs/qtrle.cpp	2011-01-02 14:57:49 UTC (rev 55095)
@@ -415,6 +415,7 @@
 
 QTRLEDecoder::~QTRLEDecoder() {
 	_surface->free();
+	delete _surface;
 }
 
 } // End of namespace Graphics

Modified: scummvm/trunk/graphics/video/codecs/rpza.cpp
===================================================================
--- scummvm/trunk/graphics/video/codecs/rpza.cpp	2011-01-02 14:57:20 UTC (rev 55094)
+++ scummvm/trunk/graphics/video/codecs/rpza.cpp	2011-01-02 14:57:49 UTC (rev 55095)
@@ -47,6 +47,11 @@
 	_surface->create(width, height, _pixelFormat.bytesPerPixel);
 }
 
+RPZADecoder::~RPZADecoder() {
+	_surface->free();
+	delete _surface;
+}
+
 #define ADVANCE_BLOCK() \
 	pixelPtr += 4; \
 	if (pixelPtr >= _surface->w) { \

Modified: scummvm/trunk/graphics/video/codecs/rpza.h
===================================================================
--- scummvm/trunk/graphics/video/codecs/rpza.h	2011-01-02 14:57:20 UTC (rev 55094)
+++ scummvm/trunk/graphics/video/codecs/rpza.h	2011-01-02 14:57:49 UTC (rev 55095)
@@ -34,7 +34,7 @@
 class RPZADecoder : public Codec {
 public:
 	RPZADecoder(uint16 width, uint16 height);
-	~RPZADecoder() { delete _surface; }
+	~RPZADecoder();
 
 	const Surface *decodeImage(Common::SeekableReadStream *stream);
 	PixelFormat getPixelFormat() const { return _pixelFormat; }

Modified: scummvm/trunk/graphics/video/codecs/smc.cpp
===================================================================
--- scummvm/trunk/graphics/video/codecs/smc.cpp	2011-01-02 14:57:20 UTC (rev 55094)
+++ scummvm/trunk/graphics/video/codecs/smc.cpp	2011-01-02 14:57:49 UTC (rev 55095)
@@ -52,6 +52,11 @@
 	_surface->create(width, height, 1);
 }
 
+SMCDecoder::~SMCDecoder() {
+	_surface->free();
+	delete _surface;
+}
+
 const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *stream) {
 	byte *pixels = (byte *)_surface->pixels;
 

Modified: scummvm/trunk/graphics/video/codecs/smc.h
===================================================================
--- scummvm/trunk/graphics/video/codecs/smc.h	2011-01-02 14:57:20 UTC (rev 55094)
+++ scummvm/trunk/graphics/video/codecs/smc.h	2011-01-02 14:57:49 UTC (rev 55095)
@@ -40,7 +40,7 @@
 class SMCDecoder : public Codec {
 public:
 	SMCDecoder(uint16 width, uint16 height);
-	~SMCDecoder() { delete _surface; }
+	~SMCDecoder();
 
 	const Surface *decodeImage(Common::SeekableReadStream *stream);
 	PixelFormat getPixelFormat() const { return PixelFormat::createFormatCLUT8(); }


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list