Add DeviceBlocked signal for storage callback 27/80827/5 accepted/tizen/common/20160905.171511 accepted/tizen/ivi/20160906.000048 accepted/tizen/mobile/20160905.235957 accepted/tizen/tv/20160906.000013 accepted/tizen/wearable/20160906.000030 submit/tizen/20160905.043624
authorpr.jung <pr.jung@samsung.com>
Wed, 20 Jul 2016 09:40:23 +0000 (18:40 +0900)
committerpr.jung <pr.jung@samsung.com>
Fri, 26 Aug 2016 08:49:01 +0000 (17:49 +0900)
Change-Id: I629060f98ce5ca907f0b8e3ce869b5657ecf3a10
Signed-off-by: pr.jung <pr.jung@samsung.com>
src/storage-external-dbus.c
src/storage-external-dbus.h
src/storage-external.c

index bf032b1..626feb9 100755 (executable)
@@ -36,6 +36,7 @@
 #define STORAGE_EXT_DEVICE_CHANGED "DeviceChanged"
 #define STORAGE_EXT_DEVICE_ADDED   "DeviceAdded"
 #define STORAGE_EXT_DEVICE_REMOVED "DeviceRemoved"
+#define STORAGE_EXT_DEVICE_BLOCKED "DeviceBlocked"
 
 #define DBUS_REPLY_TIMEOUT (-1)
 
@@ -240,6 +241,12 @@ static void storage_ext_device_changed(GVariant *params, enum storage_ext_state
                        &dev->flags,
                        &dev->storage_id);
 
+       /* Callback is called when unmount is started(DeviceBlocked signal) */
+       if (state == STORAGE_EXT_CHANGED && dev->state == STORAGE_EXT_UNMOUNTED) {
+               storage_ext_release_device(&dev);
+               return;
+       }
+
        DD_LIST_FOREACH(changed_list, elem, callback) {
                if (!callback->func)
                        continue;
@@ -282,6 +289,9 @@ static void storage_ext_changed(GDBusConnection *conn,
        else if (!strncmp(signal, STORAGE_EXT_DEVICE_REMOVED, signal_len))
                state = STORAGE_EXT_REMOVED;
 
+       else if (!strncmp(signal, STORAGE_EXT_DEVICE_BLOCKED, signal_len))
+               state = STORAGE_EXT_BLOCKED;
+
        else
                return;
 
index 7ae0d1f..0589959 100644 (file)
@@ -38,6 +38,7 @@ enum storage_ext_state {
        STORAGE_EXT_REMOVED,
        STORAGE_EXT_ADDED,
        STORAGE_EXT_CHANGED,
+       STORAGE_EXT_BLOCKED,
 };
 
 enum storage_ext_type {
index 980c94b..9eba26d 100755 (executable)
@@ -58,6 +58,9 @@ static int storage_ext_get_dev_state(storage_ext_device *dev,
                default:
                        return -EINVAL;
                }
+       case STORAGE_EXT_BLOCKED:
+               *state = STORAGE_STATE_UNMOUNTABLE;
+               return 0;
        default:
                return -EINVAL;
        }