Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
fca56390 by Pierre Lamot at 2024-11-21T10:09:13+00:00
qt: fix race condition when SystemPalette is destroyed
As we don't control the destruction order of QML component, when scene is
unloading
SystemPalette may be destroyed before ColorContext item that uses this palette,
with
palette change not propagated in time.
- - - - -
1 changed file:
- modules/gui/qt/style/colorcontext.cpp
Changes:
=====================================
modules/gui/qt/style/colorcontext.cpp
=====================================
@@ -189,8 +189,7 @@ bool ColorContext::setInheritedPalette(SystemPalette*
palette)
return false;
if (m_palette)
{
- disconnect(m_palette, &SystemPalette::sourceChanged, this,
&ColorContext::colorsChanged);
- disconnect(m_palette, &SystemPalette::paletteChanged, this,
&ColorContext::colorsChanged);
+ disconnect(m_palette, nullptr, this, nullptr);
}
m_palette = palette;
@@ -199,6 +198,17 @@ bool ColorContext::setInheritedPalette(SystemPalette*
palette)
{
connect(m_palette, &SystemPalette::sourceChanged, this,
&ColorContext::colorsChanged);
connect(m_palette, &SystemPalette::paletteChanged, this,
&ColorContext::colorsChanged);
+ connect(m_palette, &SystemPalette::destroyed, this, [this](){
+ if (m_parentContext)
+ {
+ if (m_hasExplicitPalette)
+ connect(m_parentContext, &ColorContext::paletteChanged,
this, &ColorContext::setInheritedPalette);
+ setInheritedPalette(m_parentContext->m_palette);
+ }
+ else
+ setInheritedPalette(nullptr);
+ m_hasExplicitPalette = false;
+ });
}
else
m_initialized = false;
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/commit/fca563901ccfa05552412a85af7aad380d357775
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/commit/fca563901ccfa05552412a85af7aad380d357775
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits