Come assicurarsi che il filtro Grabber campione non genererà alcun più callback alla chiusura il mio grafico di filtro DirectShow?
-
26-10-2019 - |
Domanda
Ho un'applicazione DirectShow scritto in Delphi 6 utilizzando la libreria dei componenti DSPACK. Quando chiudo i miei grafici di filtro (play stop), ottengo una violazione di accesso a causa di una richiamata dal Campione del filtro DirectShow Grabber che si verificano dopo che l'oggetto che possiede il metodo di callback è stata distrutta. Non succede ogni volta, ma abbastanza spesso. qualcuno mi può punto ad un esempio di codice o di un documento che mi dice i passi che devo prendere per arrestare miei grafici in un modo che che consente di verificare tutte le richiamate Grabber campione in sospeso sono stati ricevuti o eliminati?
Soluzione
Che dire emissione ISampleGrabber::SetCallback(NULL, ...
prima dell'arresto / rilasciare il grafico di filtro?
Più di questo, è possibile impostare un flag interno che indica la terminazione e verificare nelle callback si deve tornare comparso immediatamente, senza ulteriori elaborazioni.