From: Kyeonghun Lee Date: Tue, 14 Mar 2017 06:51:01 +0000 (+0900) Subject: modify logic for event register/unregister X-Git-Tag: submit/trunk/20170823.075128~97^2~10 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1b202936a272286c667186b5e8e04e64fec62c24;p=platform%2Fcore%2Fcsapi%2Ftizenfx.git modify logic for event register/unregister Change-Id: I8e6dc6c31fa6ce098ed87668275274305065b28e Signed-off-by: Kyeonghun Lee --- diff --git a/src/Tizen.Messaging/Interop/Interop.Messages.cs b/src/Tizen.Messaging/Interop/Interop.Messages.cs index c68e3f1..7697262 100755 --- a/src/Tizen.Messaging/Interop/Interop.Messages.cs +++ b/src/Tizen.Messaging/Interop/Interop.Messages.cs @@ -108,6 +108,9 @@ internal static partial class Interop [DllImport(Libraries.Messages, EntryPoint = "messages_set_message_incoming_cb")] internal static extern int SetMessageIncomingCb(IntPtr serviceHandle, MessageIncomingCallback cb, IntPtr userData); + [DllImport(Libraries.Messages, EntryPoint = "messages_unset_message_incoming_cb")] + internal static extern int UnsetMessageIncomingCb(IntPtr serviceHandle); + [DllImport(Libraries.Messages, EntryPoint = "messages_send_message")] internal static extern int SendMessage(IntPtr serviceHandle, IntPtr messageHandle, bool saveToSentbox, MessageSentCallback cb, IntPtr userData); diff --git a/src/Tizen.Messaging/Tizen.Messaging.Messages/MessagesEvent.cs b/src/Tizen.Messaging/Tizen.Messaging.Messages/MessagesEvent.cs index bae6475..dd0d616 100755 --- a/src/Tizen.Messaging/Tizen.Messaging.Messages/MessagesEvent.cs +++ b/src/Tizen.Messaging/Tizen.Messaging.Messages/MessagesEvent.cs @@ -24,13 +24,11 @@ namespace Tizen.Messaging.Messages private Interop.Messages.MessageIncomingCallback _messageReceivedCallback; - private bool _registered = false; - internal event EventHandler _MessageReceived { add { - if (_registered == false && _messageReceived == null) + if (_messageReceived == null) { RegisterMessageReceivedEvent(); } @@ -39,6 +37,10 @@ namespace Tizen.Messaging.Messages remove { _messageReceived -= value; + if (_messageReceived == null) + { + UnregisterMessageReceivedEvent(); + } } } @@ -109,8 +111,15 @@ namespace Tizen.Messaging.Messages { Log.Error(Globals.LogTag, "Failed to set message incoming callback, Error - " + (MessagesError)ret); } + } - _registered = true; + private void UnregisterMessageReceivedEvent() + { + int ret = Interop.Messages.UnsetMessageIncomingCb(_MessageServiceHandle); + if (ret != (int)MessagesError.None) + { + Log.Error(Globals.LogTag, "Failed to unset message incoming callback, Error - " + (MessagesError)ret); + } } } }