From e829eed24de87490a034f3b9aba281916301bba6 Mon Sep 17 00:00:00 2001 From: shubham kumar Date: Mon, 24 Oct 2016 14:55:22 +0530 Subject: [PATCH] [TSAM-9140]cancel on compress/decompress issue resolved Change-Id: I3df3259409fc053e0956e9acd54e5a97047b0fdc Signed-off-by: shubham kumar --- inc/mf-callback.h | 2 ++ inc/mf-main.h | 3 +++ src/common/mf-callback.c | 18 ++++++++++++++++++ src/common/mf-util.c | 16 ++++++++-------- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/inc/mf-callback.h b/inc/mf-callback.h index 7d66f54..867da71 100755 --- a/inc/mf-callback.h +++ b/inc/mf-callback.h @@ -41,6 +41,8 @@ void mf_callback_decompress_cb(void *data); void mf_callback_decompress_done_cb(void *data, Evas_Object *obj, void *event_info); void mfSearchbarCancelCallBack(void *data, Evas_Object *obj, void *event_info); void mf_callback_cancel_cb(void *data, Evas_Object *obj, void *event_info); +void mf_callback_compress_cancel_cb(void *data, Evas_Object *obj, void *event_info); +void mf_callback_decompress_cancel_cb(void *data, Evas_Object *obj, void *event_info); void mf_callback_move_here_cb(void *data, Evas_Object *obj, void *event_info); void mf_callback_paste_here_cb(void *data, Evas_Object *obj, void *event_info); diff --git a/inc/mf-main.h b/inc/mf-main.h index 30f39a1..69f08e8 100755 --- a/inc/mf-main.h +++ b/inc/mf-main.h @@ -38,6 +38,7 @@ #include "mf-search.h" #include "mf-copy.h" #include "mf-popup.h" +#include "pthread.h" #include "mf-media-types.h" #include "mf-ug-detail.h" @@ -340,6 +341,8 @@ struct appdata { myfileSharedGadget mf_SharedGadget; myfileOtg mf_Otg; myfileBundle mf_Bundle; + pthread_t thread; + pthread_t thread1; mf_genlist_item_class_s mf_gl_style; Eina_List *storage_list; Eina_List *file_list; diff --git a/src/common/mf-callback.c b/src/common/mf-callback.c index 99422ea..e121685 100755 --- a/src/common/mf-callback.c +++ b/src/common/mf-callback.c @@ -621,6 +621,24 @@ void mf_rename_done_cb(void *data, Evas_Object *obj, void *event_info) mf_file_compression_start(ap); } +void mf_callback_compress_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + mf_debug("cancel pthread now"); + struct appdata *ap = (struct appdata *)data; + int ret = pthread_cancel(ap->thread); + SAFE_FREE_OBJ(ap->mf_MainWindow.pProgressPopup); + mf_callback_cancel_cb(ap,NULL,NULL); +} + +void mf_callback_decompress_cancel_cb(void *data, Evas_Object *obj, void *event_info) +{ + mf_debug("cancel pthread now"); + struct appdata *ap = (struct appdata *)data; + int ret = pthread_cancel(ap->thread1); + SAFE_FREE_OBJ(ap->mf_MainWindow.pProgressPopup); + mf_callback_cancel_cb(ap,NULL,NULL); +} + void mf_callback_cancel_cb(void *data, Evas_Object *obj, void *event_info) { MF_TRACE_BEGIN; diff --git a/src/common/mf-util.c b/src/common/mf-util.c index 5032a7a..42751c9 100755 --- a/src/common/mf-util.c +++ b/src/common/mf-util.c @@ -151,7 +151,7 @@ static int __mf_util_is_mmc_supported(int *supported) void mf_file_decompression_start(void *data) { struct appdata *ap = (struct appdata *)data; - ap->mf_MainWindow.pProgressPopup = mf_popup_create_progress_pb_popup(ap, MF_LABEL_DECOMPRESS, MF_LABEL_DECOMPRESSING, 10, mf_callback_cancel_cb, ap);; + ap->mf_MainWindow.pProgressPopup = mf_popup_create_progress_pb_popup(ap, MF_LABEL_DECOMPRESS, MF_LABEL_DECOMPRESSING, 10, mf_callback_compress_cancel_cb, ap);; evas_object_show(ap->mf_MainWindow.pProgressPopup); @@ -163,14 +163,14 @@ void mf_file_decompression_start(void *data) ap->mf_FileOperation.sync_pipe = ecore_pipe_add(__mf_decompress_pipe_cb, ap); - pthread_t thread; + //pthread_t thread; pthread_attr_t attr; pthread_attr_init(&attr); int ret; ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - pthread_create(&thread, &attr,(void *)& mf_callback_decompress_cb, (void *) ap); - pthread_detach(thread); + pthread_create(&ap->thread1, &attr,(void *)& mf_callback_decompress_cb, (void *) ap); + pthread_detach(ap->thread1); } @@ -179,7 +179,7 @@ void mf_file_compression_start(void *data) struct appdata *ap = (struct appdata *)data; - ap->mf_MainWindow.pProgressPopup = mf_popup_create_progress_pb_popup(ap, MF_LABEL_COMPRESS, MF_LABEL_COMPRESSING, 10, mf_callback_cancel_cb, ap);; + ap->mf_MainWindow.pProgressPopup = mf_popup_create_progress_pb_popup(ap, MF_LABEL_COMPRESS, MF_LABEL_COMPRESSING, 10, mf_callback_compress_cancel_cb, ap);; evas_object_show(ap->mf_MainWindow.pProgressPopup); @@ -192,14 +192,14 @@ void mf_file_compression_start(void *data) ap->mf_FileOperation.sync_pipe = ecore_pipe_add(__mf_compress_pipe_cb, ap); - pthread_t thread; + //pthread_t thread; pthread_attr_t attr; pthread_attr_init(&attr); int ret; ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); - pthread_create(&thread, NULL,(void *)& mf_callback_compress_cb, (void *) ap); - pthread_detach(thread); + pthread_create(&(ap->thread), NULL,(void *)& mf_callback_compress_cb, (void *) ap); + pthread_detach(ap->thread); } /****************************** -- 2.7.4