From: jeremy-jang <35089715+jeremy-jang@users.noreply.github.com> Date: Wed, 21 Jun 2023 02:29:05 +0000 (+0900) Subject: [ThemeManager] Clear current theme cache when theme changed (#5320) (#5345) X-Git-Tag: submit/tizen_7.0/20230621.151132~1^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=271f5f6ed3dbcbafd3f04133a54ff88a7e217cf1;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [ThemeManager] Clear current theme cache when theme changed (#5320) (#5345) * [ThemeManager] Clear current theme cache when theme changed * Fix ThemeLoader.Dispose --------- Signed-off-by: Sangyoon Jang --- diff --git a/src/Tizen.Applications.ThemeManager/Tizen.Applications.ThemeManager/ThemeLoader.cs b/src/Tizen.Applications.ThemeManager/Tizen.Applications.ThemeManager/ThemeLoader.cs index 14bcae7a9..babba8fb3 100755 --- a/src/Tizen.Applications.ThemeManager/Tizen.Applications.ThemeManager/ThemeLoader.cs +++ b/src/Tizen.Applications.ThemeManager/Tizen.Applications.ThemeManager/ThemeLoader.cs @@ -49,10 +49,19 @@ namespace Tizen.Applications.ThemeManager { throw Interop.ThemeManager.ThemeManagerErrorFactory.GetException(err, "Failed to create themeloader"); } + + _callback = new Interop.ThemeManager.ThemeLoaderChangedCallback(OnThemeChanged); + err = Interop.ThemeManager.LoaderAddEvent(_loaderHandle, _callback, IntPtr.Zero, out _eventId); + if (err != Interop.ThemeManager.ErrorCode.None) + { + throw Interop.ThemeManager.ThemeManagerErrorFactory.GetException(err, "Failed to add event"); + } } private int OnThemeChanged(IntPtr handle, IntPtr userData) { + _currentTheme = null; + Interop.ThemeManager.ErrorCode err = Interop.ThemeManager.ThemeClone(handle, out IntPtr cloned); if (err != Interop.ThemeManager.ErrorCode.None) return -1; @@ -72,34 +81,12 @@ namespace Tizen.Applications.ThemeManager { add { - if (_changedEventHandler == null) - { - if (_callback == null) - _callback = new Interop.ThemeManager.ThemeLoaderChangedCallback(OnThemeChanged); - Interop.ThemeManager.ErrorCode err = Interop.ThemeManager.LoaderAddEvent(_loaderHandle, _callback, IntPtr.Zero, out _eventId); - - if (err != Interop.ThemeManager.ErrorCode.None) - { - throw Interop.ThemeManager.ThemeManagerErrorFactory.GetException(err, "Failed to add event"); - } - - } _changedEventHandler += value; } remove { _changedEventHandler -= value; - if (_changedEventHandler == null) - { - Interop.ThemeManager.ErrorCode err = Interop.ThemeManager.LoaderRemoveEvent(_loaderHandle, _eventId); - - if (err != Interop.ThemeManager.ErrorCode.None) - { - throw Interop.ThemeManager.ThemeManagerErrorFactory.GetException(err, "Failed to remove event"); - } - _callback = null; - } } } @@ -217,6 +204,12 @@ namespace Tizen.Applications.ThemeManager if (_loaderHandle != IntPtr.Zero) { + Interop.ThemeManager.ErrorCode err = Interop.ThemeManager.LoaderRemoveEvent(_loaderHandle, _eventId); + if (err != Interop.ThemeManager.ErrorCode.None) + { + Log.Error(LogTag, "Failed to remove event"); + } + Interop.ThemeManager.LoaderDestroy(_loaderHandle); _loaderHandle = IntPtr.Zero; }