summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinje Ahn <minje.ahn@samsung.com>2016-03-23 09:37:57 +0900
committerMinje Ahn <minje.ahn@samsung.com>2016-03-23 09:43:25 +0900
commit7020eb25112070454fe450cab3b0b7215d8f90cc (patch)
tree4e16aa2b7521801db235736622ebb98704668b6c
parent5ab78ec86380f306e30b6ac419a0e7bcb21dadbe (diff)
downloadlibmedia-thumbnail-7020eb25112070454fe450cab3b0b7215d8f90cc.tar.gz
libmedia-thumbnail-7020eb25112070454fe450cab3b0b7215d8f90cc.tar.bz2
libmedia-thumbnail-7020eb25112070454fe450cab3b0b7215d8f90cc.zip
Change-Id: I90d6103c199c4a7e209f16e1e0e6f648f488e866 Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
-rwxr-xr-xinclude/media-thumbnail.h4
-rw-r--r--packaging/libmedia-thumbnail.spec2
-rwxr-xr-xserver/thumb-server-internal.c7
-rwxr-xr-xsrc/include/ipc/media-thumb-ipc.h1
-rwxr-xr-xsrc/ipc/media-thumb-ipc.c24
-rwxr-xr-xsrc/media-thumbnail.c9
-rwxr-xr-xtest/test-thumb.c3
7 files changed, 27 insertions, 23 deletions
diff --git a/include/media-thumbnail.h b/include/media-thumbnail.h
index 0d05d55..a5fe4ca 100755
--- a/include/media-thumbnail.h
+++ b/include/media-thumbnail.h
@@ -37,7 +37,7 @@ typedef int (*ThumbFunc) (int error_code, char* path, void* data);
typedef void (*ThumbRawFunc) (int error_code, int request_id, const char* org_path, int thumb_width, int thumb_height, unsigned char* thumb_data, int thumb_size, void* data);
-int thumbnail_request_from_db_async(const char *origin_path, ThumbFunc func, void *user_data, uid_t uid);
+int thumbnail_request_from_db_async(unsigned int request_id, const char *origin_path, ThumbFunc func, void *user_data, uid_t uid);
int thumbnail_request_extract_raw_data_async(int request_id, const char *origin_path, int width, int height, ThumbRawFunc func, void *user_data, uid_t uid);
@@ -45,7 +45,7 @@ int thumbnail_request_extract_all_thumbs(uid_t uid);
int thumbnail_request_from_db_with_size(const char *origin_path, char *thumb_path, int max_length, int *origin_width, int *origin_height, uid_t uid);
-int thumbnail_request_cancel_media(const char *origin_path);
+int thumbnail_request_cancel_media(unsigned int request_id, const char *origin_path);
int thumbnail_request_cancel_raw_data(int request_id);
diff --git a/packaging/libmedia-thumbnail.spec b/packaging/libmedia-thumbnail.spec
index 8ca33cb..e535413 100644
--- a/packaging/libmedia-thumbnail.spec
+++ b/packaging/libmedia-thumbnail.spec
@@ -1,6 +1,6 @@
Name: libmedia-thumbnail
Summary: Media thumbnail service library for multimedia applications
-Version: 0.1.93
+Version: 0.1.94
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0 and public domain
diff --git a/server/thumb-server-internal.c b/server/thumb-server-internal.c
index eb1e912..270c496 100755
--- a/server/thumb-server-internal.c
+++ b/server/thumb-server-internal.c
@@ -635,10 +635,9 @@ int _thumbnail_get_raw_data(const char *origin_path,
return MS_MEDIA_ERR_INVALID_PARAMETER;
}
- if (!g_file_test
- (origin_path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
- thumb_err("Original path (%s) does not exist", origin_path);
- return MS_MEDIA_ERR_INVALID_PARAMETER;
+ if (!g_file_test(origin_path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) {
+ thumb_err("Original path (%s) does not exist", origin_path);
+ return MS_MEDIA_ERR_INVALID_PARAMETER;
}
int file_type = THUMB_NONE_TYPE;
diff --git a/src/include/ipc/media-thumb-ipc.h b/src/include/ipc/media-thumb-ipc.h
index aa5db4b..1b5b17f 100755
--- a/src/include/ipc/media-thumb-ipc.h
+++ b/src/include/ipc/media-thumb-ipc.h
@@ -73,6 +73,7 @@ int _media_thumb_request(int msg_type,
uid_t uid);
int _media_thumb_request_async(int msg_type,
+ unsigned int request_id,
const char *origin_path,
thumbUserData *userData,
uid_t uid);
diff --git a/src/ipc/media-thumb-ipc.c b/src/ipc/media-thumb-ipc.c
index f8f213f..29ce6b1 100755
--- a/src/ipc/media-thumb-ipc.c
+++ b/src/ipc/media-thumb-ipc.c
@@ -43,6 +43,7 @@ static GQueue *g_manage_raw_queue = NULL;
typedef struct {
GIOChannel *channel;
int msg_type;
+ unsigned int request_id;
bool isCanceled;
int source_id;
uid_t uid;
@@ -139,7 +140,7 @@ int __media_thumb_pop_req_queue(const char *path)
return MS_MEDIA_ERR_NONE;
}
-int __media_thumb_check_req_queue_for_cancel(const char *path)
+int __media_thumb_check_req_queue_for_cancel(unsigned int request_id, const char *path)
{
int req_len = 0;
@@ -151,7 +152,7 @@ int __media_thumb_check_req_queue_for_cancel(const char *path)
thumbReq *req = NULL;
req = (thumbReq *)g_queue_peek_head(g_request_queue);
- if (req != NULL && strncmp(path, req->path, strlen(path)) == 0) {
+ if (req != NULL && strncmp(path, req->path, strlen(path)) == 0 && request_id == req->request_id) {
req->isCanceled = true;
__media_thumb_shutdown_channel(false);
@@ -162,7 +163,7 @@ int __media_thumb_check_req_queue_for_cancel(const char *path)
return MS_MEDIA_ERR_INTERNAL;
}
-int __media_thumb_pop_manage_queue(const char *path)
+int __media_thumb_pop_manage_queue(unsigned int request_id, const char *path)
{
int req_len = 0, i;
bool flag = false;
@@ -177,7 +178,7 @@ int __media_thumb_pop_manage_queue(const char *path)
req = (thumbReq *)g_queue_peek_nth(g_manage_queue, i);
if (req == NULL) continue;
- if (strncmp(path, req->path, strlen(path)) == 0) {
+ if (strncmp(path, req->path, strlen(path)) == 0 && request_id == req->request_id) {
g_queue_pop_nth(g_manage_queue, i);
SAFE_FREE(req->path);
@@ -188,7 +189,7 @@ int __media_thumb_pop_manage_queue(const char *path)
}
}
if (!flag) {
- return __media_thumb_check_req_queue_for_cancel(path);
+ return __media_thumb_check_req_queue_for_cancel(request_id, path);
} else {
__media_thumb_shutdown_channel(false);
@@ -296,7 +297,7 @@ int __media_thumb_pop_raw_data_manage_queue(int request_id)
return MS_MEDIA_ERR_NONE;
}
-
+#if 0
int __media_thumb_check_req_queue(const char *path)
{
int req_len = 0, i;
@@ -348,7 +349,7 @@ int __media_thumb_check_req_queue(const char *path)
return MS_MEDIA_ERR_NONE;
}
-
+#endif
bool __media_thumb_check_cancel(void)
{
thumbReq *req = NULL;
@@ -997,7 +998,7 @@ int _media_thumb_raw_data_send_request()
return MS_MEDIA_ERR_NONE;
}
-int _media_thumb_request_async(int msg_type, const char *origin_path, thumbUserData *userData, uid_t uid)
+int _media_thumb_request_async(int msg_type, unsigned int request_id, const char *origin_path, thumbUserData *userData, uid_t uid)
{
int err = MS_MEDIA_ERR_NONE;
@@ -1018,6 +1019,7 @@ int _media_thumb_request_async(int msg_type, const char *origin_path, thumbUserD
thumb_req->path = strdup(origin_path);
thumb_req->userData = userData;
thumb_req->isCanceled = false;
+ thumb_req->request_id = request_id;
thumb_req->uid = uid;
g_queue_push_tail(g_manage_queue, (gpointer)thumb_req);
@@ -1028,11 +1030,12 @@ int _media_thumb_request_async(int msg_type, const char *origin_path, thumbUserD
} else {
if (msg_type != THUMB_REQUEST_CANCEL_MEDIA) {
/* Enqueue */
+#if 0
if ((msg_type == THUMB_REQUEST_DB_INSERT) && (__media_thumb_check_req_queue(origin_path) < 0)) {
thumb_err("duplicated request");
return MS_MEDIA_ERR_THUMB_DUPLICATED_REQUEST;
}
-
+#endif
thumbReq *thumb_req = NULL;
THUMB_MALLOC(thumb_req, sizeof(thumbReq));
if (thumb_req == NULL) {
@@ -1044,12 +1047,13 @@ int _media_thumb_request_async(int msg_type, const char *origin_path, thumbUserD
thumb_req->path = strdup(origin_path);
thumb_req->userData = userData;
thumb_req->isCanceled = false;
+ thumb_req->request_id = request_id;
thumb_req->uid = uid;
g_queue_push_tail(g_manage_queue, (gpointer)thumb_req);
} else {
/* Dequeue */
- err = __media_thumb_pop_manage_queue(origin_path);
+ err = __media_thumb_pop_manage_queue(request_id, origin_path);
}
}
diff --git a/src/media-thumbnail.c b/src/media-thumbnail.c
index f378f14..1cbc719 100755
--- a/src/media-thumbnail.c
+++ b/src/media-thumbnail.c
@@ -30,7 +30,6 @@
int thumbnail_request_from_db_with_size(const char *origin_path, char *thumb_path, int max_length, int *origin_width, int *origin_height, uid_t uid)
{
int err = MS_MEDIA_ERR_NONE;
- //int need_update_db = 0;
media_thumb_info thumb_info;
if (origin_path == NULL || thumb_path == NULL) {
@@ -94,7 +93,7 @@ int thumbnail_request_extract_all_thumbs(uid_t uid)
return MS_MEDIA_ERR_NONE;
}
-int thumbnail_request_from_db_async(const char *origin_path, ThumbFunc func, void *user_data, uid_t uid)
+int thumbnail_request_from_db_async(unsigned int request_id, const char *origin_path, ThumbFunc func, void *user_data, uid_t uid)
{
int err = MS_MEDIA_ERR_NONE;
@@ -127,7 +126,7 @@ int thumbnail_request_from_db_async(const char *origin_path, ThumbFunc func, voi
userData->user_data = user_data;
/* Request for thumb file to the daemon "Thumbnail generator" */
- err = _media_thumb_request_async(THUMB_REQUEST_DB_INSERT, origin_path, userData, uid);
+ err = _media_thumb_request_async(THUMB_REQUEST_DB_INSERT, request_id, origin_path, userData, uid);
if (err != MS_MEDIA_ERR_NONE) {
thumb_err("_media_thumb_request failed : %d", err);
SAFE_FREE(userData);
@@ -170,7 +169,7 @@ int thumbnail_request_extract_raw_data_async(int request_id, const char *origin_
return MS_MEDIA_ERR_NONE;
}
-int thumbnail_request_cancel_media(const char *origin_path)
+int thumbnail_request_cancel_media(unsigned int request_id, const char *origin_path)
{
int err = MS_MEDIA_ERR_NONE;
@@ -179,7 +178,7 @@ int thumbnail_request_cancel_media(const char *origin_path)
return MS_MEDIA_ERR_INVALID_PARAMETER;
}
- err = _media_thumb_request_async(THUMB_REQUEST_CANCEL_MEDIA, origin_path, NULL, 0);
+ err = _media_thumb_request_async(THUMB_REQUEST_CANCEL_MEDIA, request_id, origin_path, NULL, 0);
if (err != MS_MEDIA_ERR_NONE) {
thumb_err("_media_thumb_request failed : %d", err);
return err;
diff --git a/test/test-thumb.c b/test/test-thumb.c
index d2ba657..1bf115f 100755
--- a/test/test-thumb.c
+++ b/test/test-thumb.c
@@ -110,6 +110,7 @@ int main(int argc, char *argv[])
{
int mode;
int err = -1;
+ unsigned int req_id = 0;
const char *origin_path = NULL;
if ((argc != 3) && (argc != 4)) {
@@ -179,7 +180,7 @@ int main(int argc, char *argv[])
} else if (mode == 6) {
printf("Test thumbnail_request_cancel_media\n");
- err = thumbnail_request_cancel_media(origin_path);
+ err = thumbnail_request_cancel_media(req_id, origin_path);
if (err < 0) {
printf("thumbnail_request_cancel_media failed : %d\n", err);
return -1;