The face_recognition feature is not enabled, DCM does not support face detection.
So it is added to check feature before using DCM thread.
Change-Id: I9fb441cc68a08a5c0ed851a4d04bedfae081cb8b
Signed-off-by: Jiyong Min <jiyong.min@samsung.com>
media_server_CFLAGS = -I${srcdir}/src/server/include \
$(COMMON_CFLAGS) \
- $(PHONESTATUS_CFLAGS)
+ $(PHONESTATUS_CFLAGS) \
+ $(SYSTEM_INFO_CFLAGS)
media_server_CFLAGS += -fPIE
media_server_LDFLAGS = -pie
media_server_LDADD = $(COMMON_LDADD) \
- $(PHONESTATUS_LIBS)
+ $(PHONESTATUS_LIBS) \
+ $(SYSTEM_INFO_LIBS)
######################################################
#media scanner v1
AC_SUBST(CYNARA_SESSION_CFLAGS)
AC_SUBST(CYNARA_SESSION_LIBS)
+#capi-system-info
+PKG_CHECK_MODULES(SYSTEM_INFO, capi-system-info)
+AC_SUBST(SYSTEM_INFO_CFLAGS)
+AC_SUBST(SYSTEM_INFO_LIBS)
+
dnl use notification --------------------------------------------------------------------------
AC_ARG_ENABLE(notification, AC_HELP_STRING([--enable-notification], [using notification]),
[
BuildRequires: pkgconfig(libtzplatform-config)
BuildRequires: pkgconfig(cynara-client)
BuildRequires: pkgconfig(cynara-session)
+BuildRequires: pkgconfig(capi-system-info)
BuildRequires: gettext-tools
%description
#include <glib.h>
#include <sys/un.h>
#include <arpa/inet.h>
-#include <iniparser.h>
#include "media-common-types.h"
#include "media-server-ipc.h"
int ms_dcm_get_server_pid();
void ms_dcm_reset_server_status();
gpointer ms_dcm_agent_start_thread(gpointer data);
-int ms_dcm_get_config();
#endif /*_MEDIA_SERVER_DCM_H_*/
#define LOG_TAG "MEDIA_SERVER_DCM"
-#define MS_SOCK_BLOCK_SIZE 512
-#define MS_INI_GET_INT(dict, key, value, default) \
- do { \
- value = iniparser_getint(dict, key, default); \
- MS_DBG("get %s = %d", key, value); \
- } while (0)
#define DCM_SERVER_PATH tzplatform_mkpath(TZ_SYS_BIN, "dcm-svc")
static GMainLoop *g_dcm_agent_loop = NULL;
MS_DBG_ERR("credential information error");
}
- if (g_dcm_service_active != 1) {
- MS_DBG_ERR("dcm is not activated!");
- dcmMsg res_msg;
- memset((void *)&res_msg, 0, sizeof(res_msg));
- if (send(client_sock, &res_msg, sizeof(dcmMsg), 0) != sizeof(dcmMsg))
- MS_DBG_STRERROR("sendto failed");
- else
- MS_DBG("Sent Refuse msg from %s", recv_msg->msg);
- close(client_sock);
- return FALSE;
- }
-
if (getuid() != cr.uid)
recv_msg->uid = cr.uid;
return TRUE;
}
-int ms_dcm_get_config()
-{
- dictionary *dict = NULL;
-
- dict = iniparser_load(MS_INI_DEFAULT_PATH);
- if (!dict) {
- MS_DBG_ERR("%s load failed", MS_INI_DEFAULT_PATH);
- return -1;
- }
-
- MS_INI_GET_INT(dict, "media-content-config:dcm_activation", g_dcm_service_active, 0);
- MS_DBG("Thumb-server activation level = %d", g_dcm_service_active);
-
- iniparser_freedict(dict);
- return 0;
-}
-
gpointer ms_dcm_agent_start_thread(gpointer data)
{
int sockfd = -1;
#include <vconf.h>
#include <grp.h>
#include <pwd.h>
+#include <iniparser.h>
+#include <system_info.h>
#include "media-util.h"
#include "media-common-utils.h"
static void __ms_add_request_receiver(GMainLoop *mainloop, GIOChannel **channel);
static int __ms_check_mmc_status(void);
static int __ms_check_usb_status(void);
+static bool __ms_is_dcm_supported(void);
static char *priv_lang = NULL;
GThread *thumb_thread = NULL;
GThread *dcm_thread = NULL;
GIOChannel *channel = NULL;
+ bool is_dcm_supported = __ms_is_dcm_supported();
power_off = FALSE;
/*create each threads*/
db_thread = g_thread_new("db_thread", (GThreadFunc)ms_db_thread, NULL);
thumb_thread = g_thread_new("thumb_agent_thread", (GThreadFunc)ms_thumb_agent_start_thread, NULL);
- dcm_thread = g_thread_new("dcm_agent_thread", (GThreadFunc)ms_dcm_agent_start_thread, NULL);
+ if (is_dcm_supported)
+ dcm_thread = g_thread_new("dcm_agent_thread", (GThreadFunc)ms_dcm_agent_start_thread, NULL);
/*clear previous data of sdcard on media database and check db status for updating*/
while (!ms_db_get_thread_status()) {
/*Read ini file */
ms_thumb_get_config();
- ms_dcm_get_config();
MS_DBG_ERR("*** Media Server is running ***");
g_thread_join(db_thread);
g_thread_join(thumb_thread);
- g_thread_join(dcm_thread);
+ if (is_dcm_supported)
+ g_thread_join(dcm_thread);
ms_cynara_finish();
return MS_MEDIA_ERR_NONE;
}
+static bool __ms_is_dcm_supported()
+{
+ bool isFaceRecognitionSupported = FALSE; /* face_recognition feature supported */
+ int dcm_service_mode = -1; /* media-content-config:dcm_activation */
+
+ const int nRetVal = system_info_get_platform_bool("http://tizen.org/feature/vision.face_recognition", &isFaceRecognitionSupported);
+
+ if (nRetVal != SYSTEM_INFO_ERROR_NONE) {
+ MS_DBG_ERR("SYSTEM_INFO_ERROR: vision.face_recognition [%d]", nRetVal);
+ return FALSE;
+ }
+
+ dictionary *dict = NULL;
+
+ dict = iniparser_load(MS_INI_DEFAULT_PATH);
+ if (!dict) {
+ MS_DBG_ERR("%s load failed", MS_INI_DEFAULT_PATH);
+ return -1;
+ }
+
+ dcm_service_mode = iniparser_getint(dict, "media-content-config:dcm_activation", 0);
+ MS_DBG("Dcm-service activation level = %d", dcm_service_mode);
+
+ iniparser_freedict(dict);
+
+ return (isFaceRecognitionSupported && (dcm_service_mode == 1)) ? TRUE : FALSE;
+}
+