Conversation
Public API ChangedPlease follow the ACR process for the changed API below. Added: 35, Removed: 0, Changed: 0Added+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient::Scrollable()
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState Tizen.WindowSystem.Shell.QuickPanelClient::Visible()
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.QuickPanelClient::Orientation()
+ /// <since_tizen>12</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::.ctor(Tizen.WindowSystem.Shell.TizenShell,Tizen.Common.IWindowProvider,Tizen.WindowSystem.Shell.QuickPanelClient/Types)
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::Dispose()
+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::Dispose(System.Boolean)
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::Hide()
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::Show()
+ /// <since_tizen>12</since_tizen
+ System.EventHandler`1<System.Int32> Tizen.WindowSystem.Shell.QuickPanelClient::RotationChanged
+ /// <since_tizen>8</since_tizen
+ System.EventHandler`1<Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState> Tizen.WindowSystem.Shell.QuickPanelClient::VisibleChanged
+ /// <since_tizen>8</since_tizen
+ System.EventHandler`1<Tizen.WindowSystem.Shell.WindowOrientation> Tizen.WindowSystem.Shell.QuickPanelClient::OrientationChanged
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState::Retain
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState::Set
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState::Unknown
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState::Unset
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/Types
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/Types Tizen.WindowSystem.Shell.QuickPanelClient/Types::AppsMenu
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/Types Tizen.WindowSystem.Shell.QuickPanelClient/Types::ContextMenu
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/Types Tizen.WindowSystem.Shell.QuickPanelClient/Types::SystemDefault
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/Types Tizen.WindowSystem.Shell.QuickPanelClient/Types::Unknown
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState::Hidden
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState::Shown
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState::Unknown
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.TizenShell
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.TizenShell::.ctor()
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.TizenShell::Dispose()
+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.WindowSystem.Shell.TizenShell::Dispose(System.Boolean)
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.WindowOrientation
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.WindowOrientation::Landscape
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.WindowOrientation::LandscapeInverse
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.WindowOrientation::Portrait
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.WindowOrientation::PortraitInverse
Internal API ChangedAdded: 182, Removed: 0, Changed: 0 |
799de58 to
ee860aa
Compare
Public API ChangedPlease follow the ACR process for the changed API below. Added: 35, Removed: 0, Changed: 0Added+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient::Scrollable()
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState Tizen.WindowSystem.Shell.QuickPanelClient::Visible()
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.QuickPanelClient::Orientation()
+ /// <since_tizen>12</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::.ctor(Tizen.WindowSystem.Shell.TizenShell,Tizen.Common.IWindowProvider,Tizen.WindowSystem.Shell.QuickPanelClient/Types)
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::Dispose()
+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::Dispose(System.Boolean)
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::Hide()
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.QuickPanelClient::Show()
+ /// <since_tizen>12</since_tizen
+ System.EventHandler`1<System.Int32> Tizen.WindowSystem.Shell.QuickPanelClient::RotationChanged
+ /// <since_tizen>8</since_tizen
+ System.EventHandler`1<Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState> Tizen.WindowSystem.Shell.QuickPanelClient::VisibleChanged
+ /// <since_tizen>8</since_tizen
+ System.EventHandler`1<Tizen.WindowSystem.Shell.WindowOrientation> Tizen.WindowSystem.Shell.QuickPanelClient::OrientationChanged
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState::Retain
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState::Set
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState::Unknown
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState Tizen.WindowSystem.Shell.QuickPanelClient/ScrollableState::Unset
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/Types
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/Types Tizen.WindowSystem.Shell.QuickPanelClient/Types::AppsMenu
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/Types Tizen.WindowSystem.Shell.QuickPanelClient/Types::ContextMenu
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/Types Tizen.WindowSystem.Shell.QuickPanelClient/Types::SystemDefault
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/Types Tizen.WindowSystem.Shell.QuickPanelClient/Types::Unknown
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState::Hidden
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState::Shown
+ /// <since_tizen>8</since_tizen
+ static Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState Tizen.WindowSystem.Shell.QuickPanelClient/VisibleState::Unknown
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.TizenShell
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.TizenShell::.ctor()
+ /// <since_tizen>8</since_tizen
+ System.Void Tizen.WindowSystem.Shell.TizenShell::Dispose()
+ /// <since_tizen>none</since_tizen
+ System.Void Tizen.WindowSystem.Shell.TizenShell::Dispose(System.Boolean)
+ /// <since_tizen>8</since_tizen
+ Tizen.WindowSystem.Shell.WindowOrientation
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.WindowOrientation::Landscape
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.WindowOrientation::LandscapeInverse
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.WindowOrientation::Portrait
+ /// <since_tizen>none</since_tizen
+ static Tizen.WindowSystem.Shell.WindowOrientation Tizen.WindowSystem.Shell.WindowOrientation::PortraitInverse
Internal API ChangedAdded: 182, Removed: 0, Changed: 0 |
myroot
left a comment
There was a problem hiding this comment.
리뷰를 중간에 하다가 멈췄는데,
현재 리펙토링이 단순하게 IDisposable패턴만 수정하고 나머지 부분에 대해서는 리펙토링이 안된것 같습니다.
#6184
이 PR은 이전에 InputGesture에 대해서 리팩토링이 필요한 부분에 대해서 리뷰는 했지만,
릴리즈 시점상 그리고 API변경을 유발하기 때문에 실제로 리뷰대로 리펙토링을 못했던 PR입니다.
이 PR을 참고하여 리팩토링할 부분에 대해서 검토가 더 필요합니다.
| int res = Interop.KVMService.Destroy(_kvmService); | ||
| _kvmService = IntPtr.Zero; |
There was a problem hiding this comment.
unmanaged resource인 _kvmServer가 있는데, 소멸자가 없는 것 같습니다.
https://learn.microsoft.com/en-us/dotnet/fundamentals/runtime-libraries/system-object-finalize
The Finalize method is used to perform cleanup operations on unmanaged resources held by the current object before the object is destroyed.
There was a problem hiding this comment.
소멸자로 인해 GC Thread에서 Dispose()되는 경우에 대한 문제가 있을까요?
| /// <exception cref="ArgumentException">Thrown when failed of invalid argument.</exception> | ||
| public List<string> GetSourceMimetypes() | ||
| { | ||
| int res = Interop.KVMService.GetSourceMimetypes(_kvmService, out string[] mimetypes, out int mimeTypeCount); |
There was a problem hiding this comment.
이 코드는 동작이 되는 건지 확인이 필요할 것 같네요,
TZSH_EXPORT int
tzsh_kvm_service_get_source_mimetypes(tzsh_kvm_service_h service, char ***mime_types, int *mime_type_count)
이런 함수를 호출하는건데, mime_types는 문자열(char*)의 배열(char**)의 포인터(char***) 그리고 여기에 배열이 새롭게 할당되는 것이라서 자동 marshal로는 안될것 같네요
|
Created a new PR #7459 |
Description of Change
Refactored the module to be shared across different layers by removing direct dependencies on NUI
Eliminated inefficient destructors (finalizers) and implemented the standard .NET Dispose pattern.
Benchmark Details
Tizen 11.0 / RPI 4 / tizen-unified_20260119.131423
Performed 100, 200, and 300 iterations of creation and destruction for
TizenShellandQuickPanelClient.Improved performance by 1~4% compared to the previous implementation.
Reduced standard deviation (jitter) by 9~54%.
-> The increase stability is attributed to reduced CPU contension from the Finalizer thread and minimize GC interference previously caused by the DisposeQueue.
-> Although Heap uage remains identical, determinism in memory reclamation is achieved. By bypassing the Finalization Queue, native resources and managed memory are reclaimed immediately upon diposal.