Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/slic3r/GUI/RemovableDriveManager.cpp')
-rw-r--r--src/slic3r/GUI/RemovableDriveManager.cpp51
1 files changed, 33 insertions, 18 deletions
diff --git a/src/slic3r/GUI/RemovableDriveManager.cpp b/src/slic3r/GUI/RemovableDriveManager.cpp
index b11cc8dd5..59a202beb 100644
--- a/src/slic3r/GUI/RemovableDriveManager.cpp
+++ b/src/slic3r/GUI/RemovableDriveManager.cpp
@@ -1,4 +1,5 @@
#include "RemovableDriveManager.hpp"
+#include "libslic3r/Platform.hpp"
#include <libslic3r/libslic3r.h>
#include <boost/nowide/convert.hpp>
@@ -185,8 +186,13 @@ namespace search_for_drives_internal
{
//confirms if the file is removable drive and adds it to vector
- //if not same file system - could be removable drive
- if (! compare_filesystem_id(path, parent_path)) {
+ if (
+#ifdef __linux__
+ // Chromium mounts removable drives in a way that produces the same device ID.
+ platform_flavor() == PlatformFlavor::LinuxOnChromium ||
+#endif
+ // If not same file system - could be removable drive.
+ ! compare_filesystem_id(path, parent_path)) {
//free space
boost::system::error_code ec;
boost::filesystem::space_info si = boost::filesystem::space(path, ec);
@@ -229,22 +235,28 @@ std::vector<DriveData> RemovableDriveManager::search_for_removable_drives() cons
#else
- //search /media/* folder
- search_for_drives_internal::search_path("/media/*", "/media", current_drives);
-
- //search_path("/Volumes/*", "/Volumes");
- std::string path(std::getenv("USER"));
- std::string pp(path);
-
- //search /media/USERNAME/* folder
- pp = "/media/"+pp;
- path = "/media/" + path + "/*";
- search_for_drives_internal::search_path(path, pp, current_drives);
+ if (platform_flavor() == PlatformFlavor::LinuxOnChromium) {
+ // ChromeOS specific: search /mnt/chromeos/removable/* folder
+ search_for_drives_internal::search_path("/mnt/chromeos/removable/*", "/mnt/chromeos/removable", current_drives);
+ } else {
+ //search /media/* folder
+ search_for_drives_internal::search_path("/media/*", "/media", current_drives);
+
+ //search_path("/Volumes/*", "/Volumes");
+ std::string path(std::getenv("USER"));
+ std::string pp(path);
+
+ //search /media/USERNAME/* folder
+ pp = "/media/"+pp;
+ path = "/media/" + path + "/*";
+ search_for_drives_internal::search_path(path, pp, current_drives);
+
+ //search /run/media/USERNAME/* folder
+ path = "/run" + path;
+ pp = "/run"+pp;
+ search_for_drives_internal::search_path(path, pp, current_drives);
+ }
- //search /run/media/USERNAME/* folder
- path = "/run" + path;
- pp = "/run"+pp;
- search_for_drives_internal::search_path(path, pp, current_drives);
#endif
return current_drives;
@@ -441,7 +453,10 @@ RemovableDriveManager::RemovableDrivesStatus RemovableDriveManager::status()
RemovableDriveManager::RemovableDrivesStatus out;
{
tbb::mutex::scoped_lock lock(m_drives_mutex);
- out.has_eject = this->find_last_save_path_drive_data() != m_current_drives.end();
+ out.has_eject =
+ // Cannot control eject on Chromium.
+ platform_flavor() != PlatformFlavor::LinuxOnChromium &&
+ this->find_last_save_path_drive_data() != m_current_drives.end();
out.has_removable_drives = ! m_current_drives.empty();
}
if (! out.has_eject)