From: huayong.xu Date: Wed, 16 Apr 2025 07:24:14 +0000 (+0800) Subject: [NUI] Cache KeyEventArgs in View. X-Git-Tag: submit/tizen/20250423.063125~1^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ccedf38f099c75e6b40686ceeff8b4130573c91d;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git [NUI] Cache KeyEventArgs in View. When KeyEvent is triggered frequently, a cache can reduce the peak value of memory usage. --- diff --git a/src/Tizen.NUI/src/public/BaseComponents/ViewEvent.cs b/src/Tizen.NUI/src/public/BaseComponents/ViewEvent.cs index 32faa31de..d66e7ccf5 100755 --- a/src/Tizen.NUI/src/public/BaseComponents/ViewEvent.cs +++ b/src/Tizen.NUI/src/public/BaseComponents/ViewEvent.cs @@ -837,6 +837,8 @@ namespace Tizen.NUI.BaseComponents keyInputFocusLostEventHandler?.Invoke(this, null); } + private KeyEventArgs keyEventArgs; + private bool OnKeyEvent(IntPtr view, IntPtr keyEvent) { if (Disposed || IsDisposeQueued) @@ -851,23 +853,23 @@ namespace Tizen.NUI.BaseComponents return true; } - KeyEventArgs e = new KeyEventArgs(); + if (keyEventArgs == null) + { + keyEventArgs = new KeyEventArgs(); + } bool result = false; - - e.Key = Tizen.NUI.Key.GetKeyFromPtr(keyEvent); - + using var key = Tizen.NUI.Key.GetKeyFromPtr(keyEvent); + keyEventArgs.Key = key; if (keyEventHandler != null) { Delegate[] delegateList = keyEventHandler.GetInvocationList(); - - // Oring the result of each callback. + // ORing the result of each callback. foreach (EventHandlerWithReturnType del in delegateList) { - result |= del(this, e); + result |= del(this, keyEventArgs); } } - return result; }