return -1;
}
+static int __post_notification(guchar *data, int datalen, uid_t uid)
+{
+ int ret;
+ GVariant *noti_gv = NULL;
+ GVariant *body = NULL;
+ notification_h noti;
+
+ noti_gv = g_variant_new_from_data(G_VARIANT_TYPE("(v)"),
+ data, datalen, TRUE, NULL, NULL);
+
+ if (noti_gv == NULL)
+ return -1;
+
+ g_variant_get(noti_gv, "(v)", &body);
+
+ if (body == NULL) {
+ g_variant_unref(noti_gv);
+ return -1;
+ }
+
+ noti = notification_create(NOTIFICATION_TYPE_NOTI);
+ if (noti == NULL) {
+ g_variant_unref(body);
+ g_variant_unref(noti_gv);
+ return -1;
+ }
+
+ ret = notification_ipc_make_noti_from_gvariant(noti, body);
+
+ if (ret != NOTIFICATION_ERROR_NONE) {
+ g_variant_unref(body);
+ g_variant_unref(noti_gv);
+ notification_free(noti);
+ return -1;
+ }
+
+ device_display_change_state(DISPLAY_STATE_NORMAL);
+ ret = notification_post_for_uid(noti, uid);
+
+ g_variant_unref(body);
+ g_variant_unref(noti_gv);
+ notification_free(noti);
+
+ return ret;
+}
+
static void __alarm_expired()
{
int ret;
bundle_free(b);
}
} else if (strncmp(g_quark_to_string(__alarm_info->quark_noti), "null", 4) != 0) {
- GVariant *noti_gv = NULL;
- GVariant *body = NULL;
- guchar *data;
- notification_h noti;
+ guchar *noti_data;
int datalen;
+ ret = -1;
- data = g_base64_decode(g_quark_to_string(__alarm_info->quark_noti),
+ noti_data = g_base64_decode(g_quark_to_string(__alarm_info->quark_noti),
(gsize *)&datalen);
+ if (noti_data) {
+ ret = __post_notification(noti_data, datalen, __alarm_info->uid);
+ free(noti_data);
+ }
- noti_gv = g_variant_new_from_data(G_VARIANT_TYPE("(v)"),
- data, datalen,
- TRUE, NULL, NULL);
-
- g_variant_get(noti_gv, "(v)", &body);
-
- noti = notification_create(NOTIFICATION_TYPE_NOTI);
- notification_ipc_make_noti_from_gvariant(noti, body);
- notification_post_for_uid(noti, __alarm_info->uid);
+ if (ret < 0)
+ ALARM_MGR_EXCEPTION_PRINT("Failed to post notification\n");
} else {
char appid[MAX_SERVICE_NAME_LEN] = { 0, };
pkgmgrinfo_appinfo_h appinfo_handle = NULL;