diff --git a/channels/video/client/video_main.c b/channels/video/client/video_main.c index c82961b4b..f02772418 100644 --- a/channels/video/client/video_main.c +++ b/channels/video/client/video_main.c @@ -1175,8 +1175,12 @@ static UINT video_plugin_initialize(IWTSPlugin* plugin, IWTSVirtualChannelManage static UINT video_plugin_terminated(IWTSPlugin* pPlugin) { VIDEO_PLUGIN* video = (VIDEO_PLUGIN*)pPlugin; + if (!video) + return CHANNEL_RC_INVALID_INSTANCE; + + if (video->context && video->context->priv) + freerdp_timer_remove(video->rdpcontext, video->context->priv->timerID); - freerdp_timer_remove(video->rdpcontext, video->context->priv->timerID); if (video->control_callback) { IWTSVirtualChannelManager* mgr = video->control_callback->channel_mgr; diff --git a/libfreerdp/core/timer.c b/libfreerdp/core/timer.c index dc52e74d9..b54a44511 100644 --- a/libfreerdp/core/timer.c +++ b/libfreerdp/core/timer.c @@ -199,7 +199,9 @@ static DWORD WINAPI timer_thread(LPVOID arg) const uint64_t diff = next - now; const uint64_t diffMS = diff / 1000; - timeout = MIN(INFINITE, (uint32_t)diffMS); + timeout = INFINITE; + if (diffMS < INFINITE) + timeout = (uint32_t)diffMS; } return 0; }