OSDN Git Service

dshow: reset list for each filter removed
authorRamiro Polla <ramiro.polla@gmail.com>
Tue, 13 Sep 2011 17:55:08 +0000 (14:55 -0300)
committerStefano Sabatini <stefasab@gmail.com>
Fri, 16 Sep 2011 09:16:05 +0000 (11:16 +0200)
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
libavdevice/dshow.c

index 8dc9df9..5fa9000 100644 (file)
@@ -138,7 +138,9 @@ dshow_read_close(AVFormatContext *s)
             IBaseFilter *f;
             IEnumFilters_Reset(fenum);
             while (IEnumFilters_Next(fenum, 1, &f, NULL) == S_OK)
-                IGraphBuilder_RemoveFilter(ctx->graph, f);
+                if (IGraphBuilder_RemoveFilter(ctx->graph, f) == S_OK)
+                    IEnumFilters_Reset(fenum); /* When a filter is removed,
+                                                * the list must be reset. */
             IEnumFilters_Release(fenum);
         }
         IGraphBuilder_Release(ctx->graph);