• Yuxuan Shui's avatar
    mfmediaengine: Don't send event notify when engine is shutdown. · e8943a64
    Yuxuan Shui authored
    I've also tried saving a cancel cookie from `BeginCreateObject*` and using it to cancel the
    operation in engine shutdown. However there are 2 problems:
    
      1. Callback might still get called after `CancelObjectCreation`. Microsoft's
         [own documentation](https://learn.microsoft.com/en-us/windows/win32/api/mfidl/nf-mfidl-imfsourceresolver-cancelobjectcreation)
         says as much:
           > Because these methods are asynchronous, however, they might be completed before the
           > operation can be canceled. Therefore, your callback might still be invoked after you
           > call this method.
      2. Our implementations of `BeginCreateObject*` are not cancellable. They call either
         `MFPutWorkItem` or `IMFByteStream_BeginRead`, neight of which provides cancellation.
         (and our `CancelObjectCreation` doesn't actually work. AsyncResult objects aren't added to
         `handler->results` list until they are completed, which means any attempts to cancel an
         yet-to-be-completed object creation will always fail with `MF_E_UNEXPECTED`)
    e8943a64
main.c 102 KB