[PATCH 5/6] mfmediaengine: Close the media session on shutdown.
Nikolay Sivov
nsivov at codeweavers.com
Wed Jan 5 05:09:32 CST 2022
On 1/4/22 20:35, Derek Lesho wrote:
>
> failed:
> @@ -1297,6 +1302,7 @@ static void free_media_engine(struct media_engine *engine)
> }
> SysFreeString(engine->current_source);
> DeleteCriticalSection(&engine->cs);
> + CloseHandle(engine->session_closed);
> free(engine->video_frame.buffer);
> free(engine);
> }
> @@ -1956,6 +1962,8 @@ static HRESULT WINAPI media_engine_Shutdown(IMFMediaEngine *iface)
> else
> {
> media_engine_set_flag(engine, FLAGS_ENGINE_SHUT_DOWN, TRUE);
> + IMFMediaSession_Close(engine->session);
> + WaitForSingleObject(engine->session_closed, INFINITE);
> IMFMediaSession_Shutdown(engine->session);
> }
Could you explain what does this fix?
> LeaveCriticalSection(&engine->cs);
> @@ -2451,6 +2459,7 @@ static HRESULT init_media_engine(DWORD flags, IMFAttributes *attributes, struct
> engine->duration = NAN;
> engine->video_frame.pts = MINLONGLONG;
> InitializeCriticalSection(&engine->cs);
> + engine->session_closed = CreateEventW(NULL, TRUE, FALSE, NULL);
>
> hr = IMFAttributes_GetUnknown(attributes, &MF_MEDIA_ENGINE_CALLBACK, &IID_IMFMediaEngineNotify,
> (void **)&engine->callback);
More information about the wine-devel
mailing list