On wxMSW, if the dialogs sample with this tipwin-dismiss-race.patch runs in debug mode, then wxWidgets will soon wxASSERT() due to destroying a wxTipWindow instance twice.
To fix this problem, do not destroy an already-destroyed wxPopupTransientWindow .
https://github.com/wxWidgets/wxWidgets/pull/26083
(2 files)
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.![]()
@wsu-cb pushed 1 commit.
—
View it on GitHub or unsubscribe.
You are receiving this because you are subscribed to this thread.![]()
Thanks, but this seems a bit fishy to me, if we can get WM_ACTIVATE again, what guarantees that we get it before the window is scheduled for destruction, i.e. couldn't we still end up calling DismissOnDeactivate() twice? Is it really harmless?
Anyhow, I'll push this now as this seems to fix a real problem, but I'm far from sure that this is the best (or full) fix...
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.![]()
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.![]()
Thanks, but this seems a bit fishy to me, if we can get
WM_ACTIVATEagain, what guarantees that we get it before the window is scheduled for destruction, i.e. couldn't we still end up callingDismissOnDeactivate()twice? Is it really harmless?
A second call to DismissOnDeactivate() is NOT harmless: it will trigger another call to Destroy() which is what triggers the wxASSERT() this PR is trying to avoid. I thought about simply changing the wxASSERT() to silently return (without adding the wxWindow to the schedule-for-destruction list) instead, but I thought the report of suspicious behavior was too useful to remove, which is why I used this approach.
Anyhow, I'll push this now as this seems to fix a real problem, but I'm far from sure that this is the best (or full) fix...
I won't be surprised if another way to double-Destroy() gets found, but I haven't seen it yet.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.![]()
Sorry, I made a typo, I meant to write: "what guarantees that we don't get it before the window is scheduled for destruction". I.e. it looks like there is still a window (of time, not popup) when it can happen... But without debugging this to understand how does it happen exactly I don't know if it really can or not.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.![]()