summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeungbae Shin <seungbae.shin@samsung.com>2017-08-18 16:55:47 +0900
committerSeungbae Shin <seungbae.shin@samsung.com>2017-08-21 13:32:13 +0900
commita224a74dc66719bf1600fd89d6ede7afbad6c712 (patch)
tree39f6f35e914ab7013db8a9f889b833737c6048c5
parentf9cc34f4f10057d6983e91ef522a147904e137fd (diff)
downloadlibmm-session-a224a74dc66719bf1600fd89d6ede7afbad6c712.tar.gz
libmm-session-a224a74dc66719bf1600fd89d6ede7afbad6c712.tar.bz2
libmm-session-a224a74dc66719bf1600fd89d6ede7afbad6c712.zip
[Version] 0.2.12 [Profile] Common [Issue Type] Cleanup Change-Id: Ic2094a74bc6ce02870076469088bf7fda39f1dc4
-rw-r--r--mm_session.c42
-rw-r--r--packaging/libmm-session.spec2
2 files changed, 28 insertions, 16 deletions
diff --git a/mm_session.c b/mm_session.c
index c537787..a10fc5a 100644
--- a/mm_session.c
+++ b/mm_session.c
@@ -378,7 +378,7 @@ int _mm_session_util_read_information(int app_pid, int *session_type, int *flags
return MM_ERROR_NONE;
}
-void __session_signal_handler(int signo)
+void __session_signal_handler(int signo, siginfo_t *siginfo, void *context)
{
char filename[MAX_FILE_LENGTH];
char str_error[256];
@@ -403,28 +403,40 @@ void __session_signal_handler(int signo)
switch (signo) {
case SIGINT:
- sigaction(SIGINT, &session_int_old_action, NULL);
- raise(signo);
+ if (session_int_old_action.sa_sigaction)
+ session_int_old_action.sa_sigaction(signo, siginfo, context);
+ else
+ sigaction(signo, &session_int_old_action, NULL);
break;
case SIGABRT:
- sigaction(SIGABRT, &session_abrt_old_action, NULL);
- raise(signo);
+ if (session_abrt_old_action.sa_sigaction)
+ session_abrt_old_action.sa_sigaction(signo, siginfo, context);
+ else
+ sigaction(signo, &session_abrt_old_action, NULL);
break;
case SIGSEGV:
- sigaction(SIGSEGV, &session_segv_old_action, NULL);
- raise(signo);
+ if (session_segv_old_action.sa_sigaction)
+ session_segv_old_action.sa_sigaction(signo, siginfo, context);
+ else
+ sigaction(signo, &session_segv_old_action, NULL);
break;
case SIGTERM:
- sigaction(SIGTERM, &session_term_old_action, NULL);
- raise(signo);
+ if (session_term_old_action.sa_sigaction)
+ session_term_old_action.sa_sigaction(signo, siginfo, context);
+ else
+ sigaction(signo, &session_term_old_action, NULL);
break;
case SIGSYS:
- sigaction(SIGSYS, &session_sys_old_action, NULL);
- raise(signo);
+ if (session_sys_old_action.sa_sigaction)
+ session_sys_old_action.sa_sigaction(signo, siginfo, context);
+ else
+ sigaction(signo, &session_sys_old_action, NULL);
break;
case SIGXCPU:
- sigaction(SIGXCPU, &session_xcpu_old_action, NULL);
- raise(signo);
+ if (session_xcpu_old_action.sa_sigaction)
+ session_xcpu_old_action.sa_sigaction(signo, siginfo, context);
+ else
+ sigaction(signo, &session_xcpu_old_action, NULL);
break;
default:
break;
@@ -437,8 +449,8 @@ __attribute__ ((constructor))
void __mmsession_initialize(void)
{
struct sigaction session_action;
- session_action.sa_handler = __session_signal_handler;
- session_action.sa_flags = SA_NOCLDSTOP;
+ session_action.sa_sigaction = __session_signal_handler;
+ session_action.sa_flags = SA_NOCLDSTOP | SA_SIGINFO;
debug_fenter();
diff --git a/packaging/libmm-session.spec b/packaging/libmm-session.spec
index 40c5194..6c9507f 100644
--- a/packaging/libmm-session.spec
+++ b/packaging/libmm-session.spec
@@ -1,6 +1,6 @@
Name: libmm-session
Summary: Multimedia Session Library
-Version: 0.2.11
+Version: 0.2.12
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0