diff options
author | jh5.cho <jh5.cho@samsung.com> | 2017-03-24 17:27:09 +0900 |
---|---|---|
committer | jh5.cho <jh5.cho@samsung.com> | 2017-03-24 19:09:11 +0900 |
commit | 100744230e0dc754ec4ffc9324f001ac68353107 (patch) | |
tree | f6a16bcd6e5ec61140b78ebd52ac62b4f878266d | |
parent | 48cdd049dc259e6f27093a173c887e71e9a426e9 (diff) | |
download | elm-sharp-100744230e0dc754ec4ffc9324f001ac68353107.tar.gz elm-sharp-100744230e0dc754ec4ffc9324f001ac68353107.tar.bz2 elm-sharp-100744230e0dc754ec4ffc9324f001ac68353107.zip |
Refactor RenderPost event using EvasEventsubmit/tizen/20170324.105839accepted/tizen/unified/20170327.051736accepted/tizen/tv/20170327.051659accepted/tizen/mobile/20170327.051639accepted/tizen/ivi/20170327.051721accepted/tizen/common/20170324.123607accepted/tizen_tvaccepted/tizen_mobileaccepted/tizen_iviaccepted/tizen_common
- RenderPost event is implemented as EvasEvent, not EvasObjectEvent,
due to the malfuntion under TCT execute envirenment
- Update Version to Beta-018
Change-Id: Idaf0137f094674d016f1bdf248b8b8ff007a6660
-rwxr-xr-x | ElmSharp/ElmSharp/EvasObject.cs | 31 | ||||
-rwxr-xr-x[-rw-r--r--] | ElmSharp/Interop/Interop.Evas.cs | 8 | ||||
-rw-r--r-- | packaging/elm-sharp.spec | 2 |
3 files changed, 36 insertions, 5 deletions
diff --git a/ElmSharp/ElmSharp/EvasObject.cs b/ElmSharp/ElmSharp/EvasObject.cs index f9cf919..0b3d8ef 100755 --- a/ElmSharp/ElmSharp/EvasObject.cs +++ b/ElmSharp/ElmSharp/EvasObject.cs @@ -45,7 +45,8 @@ namespace ElmSharp EvasObjectEvent<EvasKeyEventArgs> _keydown; EvasObjectEvent _moved; EvasObjectEvent _resized; - EvasObjectEvent _renderPost; + EventHandler _renderPost; + Interop.Evas.EvasCallback _renderPostCallback = null; readonly HashSet<IInvalidatable> _eventStore = new HashSet<IInvalidatable>(); @@ -103,13 +104,30 @@ namespace ElmSharp add { _resized.On += value; } remove { _resized.On -= value; } } + /// <summary> /// Current widget RenderPost Event Handler /// </summary> public event EventHandler RenderPost { - add { _renderPost.On += value; } - remove { _renderPost.On -= value; } + add + { + _renderPost += value; + if (_renderPostCallback == null) + { + _renderPostCallback = new Interop.Evas.EvasCallback((o, e, d) => _renderPost?.Invoke(this, EventArgs.Empty)); + Interop.Evas.evas_event_callback_add(Interop.Evas.evas_object_evas_get(Handle), Interop.Evas.ObjectCallbackType.RenderPost, _renderPostCallback, IntPtr.Zero); + } + } + remove + { + _renderPost -= value; + if (_renderPost?.GetInvocationList().Length == 0) + { + Interop.Evas.evas_event_callback_del(Interop.Evas.evas_object_evas_get(Handle), Interop.Evas.ObjectCallbackType.RenderPost, _renderPostCallback); + _renderPostCallback = null; + } + } } /// <summary> @@ -510,7 +528,6 @@ namespace ElmSharp _keyup = new EvasObjectEvent<EvasKeyEventArgs>(this, EvasObjectCallbackType.KeyUp, EvasKeyEventArgs.Create); _moved = new EvasObjectEvent(this, EvasObjectCallbackType.Move); _resized = new EvasObjectEvent(this, EvasObjectCallbackType.Resize); - _renderPost = new EvasObjectEvent(this, Interop.Evas.evas_object_evas_get(Handle), EvasObjectCallbackType.RenderPost); _deleted.On += (s, e) => MakeInvalidate(); _keydown.On += (s, e) => KeyDown?.Invoke(this, e); @@ -525,6 +542,12 @@ namespace ElmSharp { if (IsRealized) { + if(_renderPostCallback != null) + { + Interop.Evas.evas_event_callback_del(Interop.Evas.evas_object_evas_get(Handle), Interop.Evas.ObjectCallbackType.RenderPost, _renderPostCallback); + _renderPostCallback = null; + } + OnUnrealize(); IntPtr toBeDeleted = Handle; Handle = IntPtr.Zero; diff --git a/ElmSharp/Interop/Interop.Evas.cs b/ElmSharp/Interop/Interop.Evas.cs index bbc2b99..6adbb98 100644..100755 --- a/ElmSharp/Interop/Interop.Evas.cs +++ b/ElmSharp/Interop/Interop.Evas.cs @@ -62,6 +62,14 @@ internal static partial class Interop } internal delegate void EventCallback(IntPtr data, IntPtr evas, IntPtr obj, IntPtr info); + internal delegate void EvasCallback(IntPtr data, IntPtr evas, IntPtr info); + + [DllImport(Libraries.Evas)] + internal static extern void evas_event_callback_add(IntPtr obj, ObjectCallbackType type, EvasCallback func, IntPtr data); + + [DllImport(Libraries.Evas)] + internal static extern void evas_event_callback_del(IntPtr obj, ObjectCallbackType type, EvasCallback func); + [DllImport(Libraries.Evas)] internal static extern void evas_object_event_callback_add(IntPtr obj, ObjectCallbackType type, EventCallback func, IntPtr data); [DllImport(Libraries.Evas)] diff --git a/packaging/elm-sharp.spec b/packaging/elm-sharp.spec index 1df2f6c..2f140ee 100644 --- a/packaging/elm-sharp.spec +++ b/packaging/elm-sharp.spec @@ -1,4 +1,4 @@ -%define DEV_VERSION beta-017 +%define DEV_VERSION beta-018 Name: elm-sharp Summary: C# Binding for Elementary |