This is an automated email from the git hooks/post-receive script.
pierov pushed a commit to branch geckoview-99.0.1-11.0-1 in repository tor-browser.
commit da0305f982f2c07bb1c8aeab25ea1acb667b3dd8 Author: Emilio Cobos Álvarez emilio@crisal.io AuthorDate: Wed Mar 23 17:17:35 2022 +0000
Bug 1758357 - Don't call SetCursor redundantly on Windows. r=cmartin a=dmeehan
Bug 1724120 apparently regressed this, which is a bit surprising because the redundant ::SetCursor() call is already there. The real fix is the one above, however I think this change is still worth it. Make cursor updates avoid redundant ::SetCursor() calls the same way other widget back-ends do (always except for mUpdateCursor, which is set on scale changes and so on).
Differential Revision: https://phabricator.services.mozilla.com/D141864 --- widget/windows/nsWindow.cpp | 7 ++++--- widget/windows/nsWindow.h | 1 - 2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp index 69abb58ef4f53..6ec40095e3990 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -259,7 +259,6 @@ bool nsWindow::sDropShadowEnabled = true; uint32_t nsWindow::sInstanceCount = 0; bool nsWindow::sSwitchKeyboardLayout = false; BOOL nsWindow::sIsOleInitialized = FALSE; -HCURSOR nsWindow::sCustomHCursor = nullptr; nsIWidget::Cursor nsWindow::sCurrentCursor = {}; nsWindow* nsWindow::sCurrentWindow = nullptr; bool nsWindow::sJustGotDeactivate = false; @@ -3244,13 +3243,15 @@ static HCURSOR CursorForImage(const nsIWidget::Cursor& aCursor,
// Setting the actual cursor void nsWindow::SetCursor(const Cursor& aCursor) { + static HCURSOR sCustomHCursor = nullptr; + mCursor = aCursor;
- if (sCurrentCursor == aCursor && sCustomHCursor) { - ::SetCursor(sCustomHCursor); + if (!mUpdateCursor && sCurrentCursor == aCursor) { return; }
+ mUpdateCursor = false; if (sCustomHCursor) { ::DestroyIcon(sCustomHCursor); sCustomHCursor = nullptr; diff --git a/widget/windows/nsWindow.h b/widget/windows/nsWindow.h index f757e9c27650a..ffbdaf0fe1f00 100644 --- a/widget/windows/nsWindow.h +++ b/widget/windows/nsWindow.h @@ -667,7 +667,6 @@ class nsWindow final : public nsBaseWidget { static TriStateBool sCanQuit; static nsWindow* sCurrentWindow; static BOOL sIsOleInitialized; - static HCURSOR sCustomHCursor; static Cursor sCurrentCursor; static bool sSwitchKeyboardLayout; static bool sJustGotDeactivate;