summaryrefslogtreecommitdiff
path: root/src/video_out/video_out_xv.c
diff options
context:
space:
mode:
authorEwald Snel <esnel@users.sourceforge.net>2002-04-02 19:29:09 +0000
committerEwald Snel <esnel@users.sourceforge.net>2002-04-02 19:29:09 +0000
commit69f6ab2b002fe21e719b8e386db39ddec31facbb (patch)
treed4d89a1c5b4cdbb1a2ae52e86e97464eff5f6bd0 /src/video_out/video_out_xv.c
parent05feff063271ba86613ef88aa16dad8967ec7349 (diff)
downloadxine-lib-69f6ab2b002fe21e719b8e386db39ddec31facbb.tar.gz
xine-lib-69f6ab2b002fe21e719b8e386db39ddec31facbb.tar.bz2
- Undo my previous patch, it might (at least in theory) cause problems
when freeing frames after closing the video output driver - New patch to fix the frame leak in the Xv driver only CVS patchset: 1667 CVS date: 2002/04/02 19:29:09
Diffstat (limited to 'src/video_out/video_out_xv.c')
-rw-r--r--src/video_out/video_out_xv.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/video_out/video_out_xv.c b/src/video_out/video_out_xv.c
index a0f48d4ba..4fedc7297 100644
--- a/src/video_out/video_out_xv.c
+++ b/src/video_out/video_out_xv.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
- * $Id: video_out_xv.c,v 1.110 2002/04/01 22:19:27 esnel Exp $
+ * $Id: video_out_xv.c,v 1.111 2002/04/02 19:29:09 esnel Exp $
*
* video_out_xv.c, X11 video extension interface for xine
*
@@ -744,6 +744,7 @@ static void xv_add_recent_frame (xv_driver_t *this, xv_frame_t *frame) {
}
/* currently not used - we could have a method to call this from video loop */
+#if 0
static void xv_flush_recent_frames (xv_driver_t *this) {
int i;
@@ -756,6 +757,7 @@ static void xv_flush_recent_frames (xv_driver_t *this) {
this->recent_frames[i] = NULL;
}
}
+#endif
static int xv_redraw_needed (vo_driver_t *this_gen) {
xv_driver_t *this = (xv_driver_t *) this_gen;
@@ -1073,6 +1075,7 @@ static int xv_gui_data_exchange (vo_driver_t *this_gen,
static void xv_exit (vo_driver_t *this_gen) {
xv_driver_t *this = (xv_driver_t *) this_gen;
+ int i;
if (this->deinterlace_frame.image) {
dispose_ximage (this, &this->deinterlace_frame.shminfo,
@@ -1086,7 +1089,13 @@ static void xv_exit (vo_driver_t *this_gen) {
}
XUnlockDisplay (this->display);
- xv_flush_recent_frames (this);
+ for( i=0; i < VO_NUM_RECENT_FRAMES; i++ )
+ {
+ if( this->recent_frames[i] )
+ this->recent_frames[i]->vo_frame.dispose
+ (&this->recent_frames[i]->vo_frame);
+ this->recent_frames[i] = NULL;
+ }
free (this);
}