[DF181219-00478] Add deinitialize logic for crash 47/196247/1 accepted/tizen/5.0/unified/20181227.062014 submit/tizen_5.0/20181226.112537
authorJihoon Jung <jh8801.jung@samsung.com>
Wed, 26 Dec 2018 11:22:54 +0000 (20:22 +0900)
committerJihoon Jung <jh8801.jung@samsung.com>
Wed, 26 Dec 2018 11:24:12 +0000 (20:24 +0900)
Change-Id: I0e2421da3d50b1e0d14f1e3218f9a58d3d463213

packaging/mtp-initiator.spec
src/daemon/mtp_daemon.c
src/daemon/mtp_daemon_event.c
src/daemon/mtp_daemon_gdbus_storageinfo.c

index 0586716a7bbc7fd87c73587a09c6780399abb4f8..4c9d49278cfb5f0fcd78e99b54207bb18ccb9a6d 100644 (file)
@@ -1,6 +1,6 @@
 Name:       mtp-initiator
 Summary:    mtp(media transfer protocol) initiator
-Version:    1.4.30
+Version:    1.4.33
 Release:    0
 Group:      Network & Connectivity/Other
 License:    Apache-2.0
index ab00177d5d9e0a9fe523a2e27d238999a4cb469c..76ca83ea0a9e27436023c16a94af6128982eaf2d 100644 (file)
@@ -81,8 +81,6 @@ static mtp_error_e __daemon_deinitalize(mtp_context *mtp_ctx)
        if (ret != MTP_ERROR_NONE)
                return ret;
 
-       mtp_ctx->is_running = false;
-
        if (mtp_ctx->c_thread != NULL) {
                g_thread_join(mtp_ctx->c_thread);
                g_thread_unref(mtp_ctx->c_thread);
@@ -181,6 +179,8 @@ int main(int argc, char *argv[])
        g_main_loop_run(mtp_ctx->main_loop);
 
 EXIT:
+       g_thread_pool_free(mtp_ctx->device_list->threads, true, true);
+
        /* LCOV_EXCL_START */
        ret = __daemon_deinitalize(mtp_ctx);
        if (ret != MTP_ERROR_NONE)
index 43a8e24ee58c884322f557fec6175a054adf3156..49834fe63ede83fafcb142cfdf0001a52967e651 100755 (executable)
@@ -168,6 +168,7 @@ int __usb_host_status_changed_cb(struct libusb_context *ctx,
 
        if (mtp_ctx->device_list->device_num == 0) {
                mtp_daemon_gdbus_emit_event(MTP_INITIATOR_EVENT_TURNED_OFF, 0, mtp_ctx);
+               mtp_ctx->is_running = false;
                g_main_loop_quit(mtp_ctx->main_loop);
        }
 
@@ -325,9 +326,8 @@ static gpointer __dispatch_event(gpointer user_data)
        }
 
        MTP_LOGE("dispatch thread created");
-       struct timeval tv = {0, 200000};
        while (mtp_ctx->is_running) {
-               libusb_handle_events_timeout_completed(mtp_ctx->usb_ctx, &tv, NULL);
+               libusb_handle_events_completed(mtp_ctx->usb_ctx, NULL);
        }
 
        g_thread_exit(NULL);
index 85f753fdcccec82cfc7ab2ad3783542e926f18a0..4ee64478d5ab616e9c3795992054d83262f955eb 100755 (executable)
@@ -97,7 +97,7 @@ static void __storageinfo_get_freespace_thread_func(gpointer user_data)
                if (storage)
                        value = storage->FreeSpaceInBytes; //LCOV_EXCL_LINE
 
-               MTP_LOGI("device_id: %d, mtp_storage: %d, FreeSpaceInBytes: %llu",
+               MTP_LOGI("device_id: %d, mtp_storage: %d, FreeSpaceInBytes: %" G_GUINT64_FORMAT,
                        device_id, mtp_storage, value);
        } else {
                /* LCOV_EXCL_START */
@@ -144,7 +144,7 @@ static void __storageinfo_get_maxcapacity_thread_func(gpointer user_data)
                if (storage)
                        value = storage->MaxCapacity; //LCOV_EXCL_LINE
 
-               MTP_LOGI("device_id: %d, mtp_storage: %d, MaxCapacity: %llu",
+               MTP_LOGI("device_id: %d, mtp_storage: %d, MaxCapacity: %" G_GUINT64_FORMAT,
                        device_id, mtp_storage, value);
        } else {
                /* LCOV_EXCL_START */