parent
98258acc37
commit
d5983dd362
1
NEWS
1
NEWS
|
@ -7,6 +7,7 @@ ver 0.21.5 (not yet released)
|
||||||
- fix assertion failures with mount points
|
- fix assertion failures with mount points
|
||||||
* storage
|
* storage
|
||||||
- udisks: fix "AlreadyMounted" error
|
- udisks: fix "AlreadyMounted" error
|
||||||
|
- udisks: use relative path from mount URI
|
||||||
* input
|
* input
|
||||||
- buffer: fix crash bug when playing remote WAV file
|
- buffer: fix crash bug when playing remote WAV file
|
||||||
* tags
|
* tags
|
||||||
|
|
|
@ -46,6 +46,8 @@ class UdisksStorage final : public Storage {
|
||||||
const std::string base_uri;
|
const std::string base_uri;
|
||||||
const std::string id;
|
const std::string id;
|
||||||
|
|
||||||
|
const AllocatedPath inside_path;
|
||||||
|
|
||||||
std::string dbus_path;
|
std::string dbus_path;
|
||||||
|
|
||||||
SafeSingleton<ODBus::Glue> dbus_glue;
|
SafeSingleton<ODBus::Glue> dbus_glue;
|
||||||
|
@ -64,10 +66,12 @@ class UdisksStorage final : public Storage {
|
||||||
DeferEvent defer_mount, defer_unmount;
|
DeferEvent defer_mount, defer_unmount;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
template<typename B, typename I>
|
template<typename B, typename I, typename IP>
|
||||||
UdisksStorage(EventLoop &_event_loop, B &&_base_uri, I &&_id)
|
UdisksStorage(EventLoop &_event_loop, B &&_base_uri, I &&_id,
|
||||||
|
IP &&_inside_path)
|
||||||
:base_uri(std::forward<B>(_base_uri)),
|
:base_uri(std::forward<B>(_base_uri)),
|
||||||
id(std::forward<I>(_id)),
|
id(std::forward<I>(_id)),
|
||||||
|
inside_path(std::forward<IP>(_inside_path)),
|
||||||
dbus_glue(_event_loop),
|
dbus_glue(_event_loop),
|
||||||
defer_mount(_event_loop, BIND_THIS_METHOD(DeferredMount)),
|
defer_mount(_event_loop, BIND_THIS_METHOD(DeferredMount)),
|
||||||
defer_unmount(_event_loop, BIND_THIS_METHOD(DeferredUnmount)) {}
|
defer_unmount(_event_loop, BIND_THIS_METHOD(DeferredUnmount)) {}
|
||||||
|
@ -137,7 +141,10 @@ private:
|
||||||
inline void
|
inline void
|
||||||
UdisksStorage::SetMountPoint(Path mount_point)
|
UdisksStorage::SetMountPoint(Path mount_point)
|
||||||
{
|
{
|
||||||
mounted_storage = CreateLocalStorage(mount_point);
|
mounted_storage = inside_path.IsNull()
|
||||||
|
? CreateLocalStorage(mount_point)
|
||||||
|
: CreateLocalStorage(mount_point / inside_path);
|
||||||
|
|
||||||
mount_error = {};
|
mount_error = {};
|
||||||
want_mount = false;
|
want_mount = false;
|
||||||
cond.broadcast();
|
cond.broadcast();
|
||||||
|
@ -360,12 +367,17 @@ CreateUdisksStorageURI(EventLoop &event_loop, const char *base_uri)
|
||||||
} else {
|
} else {
|
||||||
id = {id_begin, relative_path};
|
id = {id_begin, relative_path};
|
||||||
++relative_path;
|
++relative_path;
|
||||||
|
while (*relative_path == '/')
|
||||||
|
++relative_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: use relative_path
|
auto inside_path = *relative_path != 0
|
||||||
|
? AllocatedPath::FromUTF8Throw(relative_path)
|
||||||
|
: nullptr;
|
||||||
|
|
||||||
return std::make_unique<UdisksStorage>(event_loop, base_uri,
|
return std::make_unique<UdisksStorage>(event_loop, base_uri,
|
||||||
std::move(id));
|
std::move(id),
|
||||||
|
std::move(inside_path));
|
||||||
}
|
}
|
||||||
|
|
||||||
const StoragePlugin udisks_storage_plugin = {
|
const StoragePlugin udisks_storage_plugin = {
|
||||||
|
|
Loading…
Reference in New Issue