From 2bd4062c7c2ba079517ee26848c6569c9d1246d8 Mon Sep 17 00:00:00 2001 From: ilho159kim Date: Wed, 31 Jan 2024 20:02:47 +0900 Subject: [PATCH] [Packagemanager] Fix SetPackageManagerEventStatus (#5928) Since native API internally unregister event and register event so fix it to actually set event only when necessary Signed-off-by: Ilho Kim --- .../Tizen.Applications/PackageManager.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Tizen.Applications.PackageManager/Tizen.Applications/PackageManager.cs b/src/Tizen.Applications.PackageManager/Tizen.Applications/PackageManager.cs index 45d84fffb5c..169b2db2de6 100755 --- a/src/Tizen.Applications.PackageManager/Tizen.Applications/PackageManager.cs +++ b/src/Tizen.Applications.PackageManager/Tizen.Applications/PackageManager.cs @@ -37,6 +37,7 @@ public static class PackageManager private static SafePackageManagerHandle s_handle = new SafePackageManagerHandle(); private static Interop.PackageManager.EventStatus s_eventStatus = Interop.PackageManager.EventStatus.All; + private static Interop.PackageManager.EventStatus s_registered_eventStatus = Interop.PackageManager.EventStatus.All; private static event EventHandler s_installEventHandler; private static event EventHandler s_uninstallEventHandler; private static event EventHandler s_updateEventHandler; @@ -1396,6 +1397,9 @@ private static void RegisterPackageManagerEventIfNeeded() if (s_installEventHandler != null && s_uninstallEventHandler != null && s_updateEventHandler != null && s_moveEventHandler != null && s_clearDataEventHandler != null) return; + if ((s_registered_eventStatus & s_eventStatus) == s_eventStatus) + return; + var err = Interop.PackageManager.ErrorCode.None; if (!Handle.IsInvalid) @@ -1407,8 +1411,11 @@ private static void RegisterPackageManagerEventIfNeeded() } if (err != Interop.PackageManager.ErrorCode.None) { + s_registered_eventStatus = Interop.PackageManager.EventStatus.All; Log.Warn(LogTag, string.Format("Failed to register callback for package manager event. err = {0}", err)); throw PackageManagerErrorFactory.GetException(err, "Failed to register package manager event."); + } else { + s_registered_eventStatus = s_eventStatus; } } @@ -1467,6 +1474,7 @@ private static void UnregisterPackageManagerEventIfNeeded() { throw PackageManagerErrorFactory.GetException(err, "Failed to unregister package manager event event."); } + s_registered_eventStatus = Interop.PackageManager.EventStatus.All; } } }