Browse code

dshow: reset list for each filter removed

Signed-off-by: Stefano Sabatini <stefasab@gmail.com>

Ramiro Polla authored on 2011/09/14 02:55:08
Showing 1 changed files
... ...
@@ -138,7 +138,9 @@ dshow_read_close(AVFormatContext *s)
138 138
             IBaseFilter *f;
139 139
             IEnumFilters_Reset(fenum);
140 140
             while (IEnumFilters_Next(fenum, 1, &f, NULL) == S_OK)
141
-                IGraphBuilder_RemoveFilter(ctx->graph, f);
141
+                if (IGraphBuilder_RemoveFilter(ctx->graph, f) == S_OK)
142
+                    IEnumFilters_Reset(fenum); /* When a filter is removed,
143
+                                                * the list must be reset. */
142 144
             IEnumFilters_Release(fenum);
143 145
         }
144 146
         IGraphBuilder_Release(ctx->graph);