From b870a11a99b34fff346bf504b1691ac2f3f8fa16 Mon Sep 17 00:00:00 2001 From: Nicolas Mazzon Date: Wed, 1 Mar 2023 23:24:04 +0100 Subject: [PATCH] On Windows, check whether CoCreateInstance succeeds --- CHANGELOG.md | 1 + src/platform_impl/windows/window.rs | 14 ++++++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd511a8a..67b8293c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ And please only add new entries to the top of this list, right below the `# Unre - Web: Added support for `Window::theme`. - On Wayland, fix rounding issues when doing resize. - On macOS, fix wrong focused state on startup. +- On Windows, fix crash on setting taskbar when using Visual Studio debugger. # 0.28.1 diff --git a/src/platform_impl/windows/window.rs b/src/platform_impl/windows/window.rs index fad48049..21fa458e 100644 --- a/src/platform_impl/windows/window.rs +++ b/src/platform_impl/windows/window.rs @@ -1218,10 +1218,13 @@ unsafe fn taskbar_mark_fullscreen(handle: HWND, fullscreen: bool) { &IID_ITaskbarList2, &mut task_bar_list2 as *mut _ as *mut _, ); + if hr != S_OK { + // In visual studio retrieving the taskbar list fails + return; + } let hr_init = (*(*task_bar_list2).lpVtbl).parent.HrInit; - - if hr != S_OK || hr_init(task_bar_list2.cast()) != S_OK { + if hr_init(task_bar_list2.cast()) != S_OK { // In some old windows, the taskbar object could not be created, we just ignore it return; } @@ -1247,10 +1250,13 @@ pub(crate) unsafe fn set_skip_taskbar(hwnd: HWND, skip: bool) { &IID_ITaskbarList, &mut task_bar_list as *mut _ as *mut _, ); + if hr != S_OK { + // In visual studio retrieving the taskbar list fails + return; + } let hr_init = (*(*task_bar_list).lpVtbl).HrInit; - - if hr != S_OK || hr_init(task_bar_list.cast()) != S_OK { + if hr_init(task_bar_list.cast()) != S_OK { // In some old windows, the taskbar object could not be created, we just ignore it return; }