mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-10 22:49:00 +01:00
Qt/GameTracker: Remove workaround
This commit is contained in:
parent
28ca6fec9a
commit
64c3d01551
@ -13,6 +13,8 @@
|
|||||||
#include "DiscIO/DirectoryBlob.h"
|
#include "DiscIO/DirectoryBlob.h"
|
||||||
|
|
||||||
#include "DolphinQt2/QtUtils/QueueOnObject.h"
|
#include "DolphinQt2/QtUtils/QueueOnObject.h"
|
||||||
|
#include "DolphinQt2/QtUtils/RunOnObject.h"
|
||||||
|
|
||||||
#include "DolphinQt2/Settings.h"
|
#include "DolphinQt2/Settings.h"
|
||||||
|
|
||||||
// NOTE: Qt likes to be case-sensitive here even though it shouldn't be thus this ugly regex hack
|
// NOTE: Qt likes to be case-sensitive here even though it shouldn't be thus this ugly regex hack
|
||||||
@ -119,37 +121,10 @@ void GameTracker::StartInternal()
|
|||||||
m_cache.Save();
|
m_cache.Save();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Works around a bug in QtCore that will cause crashes when QFileSystemWatcher::addPath
|
|
||||||
// is called on a directory that is located on a removable device
|
|
||||||
static bool IsOnRemovableMedia(const QString& dir)
|
|
||||||
{
|
|
||||||
#ifdef _WIN32
|
|
||||||
const QString absolute_dir = QFileInfo(dir).absolutePath();
|
|
||||||
if (absolute_dir.startsWith(QStringLiteral("//")))
|
|
||||||
return true;
|
|
||||||
const QString root_dir = QDir::toNativeSeparators(absolute_dir.left(3));
|
|
||||||
auto type = GetDriveType(root_dir.toStdWString().c_str());
|
|
||||||
|
|
||||||
switch (type)
|
|
||||||
{
|
|
||||||
case DRIVE_REMOVABLE:
|
|
||||||
case DRIVE_REMOTE:
|
|
||||||
case DRIVE_CDROM:
|
|
||||||
case DRIVE_UNKNOWN:
|
|
||||||
case DRIVE_NO_ROOT_DIR:
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GameTracker::AddPath(const QString& dir)
|
bool GameTracker::AddPath(const QString& dir)
|
||||||
{
|
{
|
||||||
if (Settings::Instance().IsAutoRefreshEnabled() && !IsOnRemovableMedia(dir))
|
if (Settings::Instance().IsAutoRefreshEnabled())
|
||||||
return addPath(dir);
|
RunOnObject(this, [this, dir] { return addPath(dir); });
|
||||||
|
|
||||||
m_tracked_paths.push_back(dir);
|
m_tracked_paths.push_back(dir);
|
||||||
|
|
||||||
@ -158,8 +133,8 @@ bool GameTracker::AddPath(const QString& dir)
|
|||||||
|
|
||||||
bool GameTracker::RemovePath(const QString& dir)
|
bool GameTracker::RemovePath(const QString& dir)
|
||||||
{
|
{
|
||||||
if (Settings::Instance().IsAutoRefreshEnabled() && !IsOnRemovableMedia(dir))
|
if (Settings::Instance().IsAutoRefreshEnabled())
|
||||||
return removePath(dir);
|
RunOnObject(this, [this, dir] { return removePath(dir); });
|
||||||
|
|
||||||
const auto index = m_tracked_paths.indexOf(dir);
|
const auto index = m_tracked_paths.indexOf(dir);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user