]> git.sesse.net Git - vlc/commitdiff
Ugly hack to make the filter chain work correctly for the video output core. This...
authorAntoine Cellerier <dionoea@videolan.org>
Wed, 4 Jun 2008 10:57:50 +0000 (12:57 +0200)
committerAntoine Cellerier <dionoea@videolan.org>
Wed, 4 Jun 2008 11:14:12 +0000 (13:14 +0200)
src/misc/filter_chain.c

index 0d649f9942e9f8d44c89f553104bd7764a968319..a86e03120fd8a814283a62ea4225cbf793e85e71 100644 (file)
@@ -277,6 +277,10 @@ const es_format_t *filter_chain_GetFmtOut( filter_chain_t *p_chain )
 /**
  * Apply the filter chain
  */
+
+/* FIXME This include is needed by the Ugly hack */
+#include <vlc_vout.h>
+
 picture_t *filter_chain_VideoFilter( filter_chain_t *p_chain, picture_t *p_pic )
 {
     int i;
@@ -284,9 +288,21 @@ picture_t *filter_chain_VideoFilter( filter_chain_t *p_chain, picture_t *p_pic )
     for( i = 0; i < p_chain->filters.i_count; i++ )
     {
         filter_t *p_filter = pp_filter[i];
-        p_pic = p_filter->pf_video_filter( p_filter, p_pic );
-        if( !p_pic )
+        picture_t *p_newpic = p_filter->pf_video_filter( p_filter, p_pic );
+        if( !p_newpic )
             return NULL;
+        /* FIXME Ugly hack to make it work in picture core.
+         * FIXME Remove this code when the picture release API has been
+         * FIXME cleaned up (a git revert of the commit should work) */
+        if( p_chain->p_this->i_object_type == VLC_OBJECT_VOUT )
+        {
+            if( p_pic->i_refcount )
+                p_pic->i_status = DISPLAYED_PICTURE;
+            else
+                p_pic->i_status = DESTROYED_PICTURE;
+            p_newpic->i_status = READY_PICTURE;
+        }
+        p_pic = p_newpic;
     }
     return p_pic;
 }