mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-07-14 09:32:20 +08:00
fix: rarely crash after install finished
in DownloadItem::slotAsyncInstall, QProcess should not be deleteLater since it is not pointer Log: fix rarely crash; move installExtraArg set before download started
This commit is contained in:
parent
8cb92d9972
commit
f08366a3d5
src
@ -536,7 +536,27 @@ void AppIntoPage::on_downloadButton_clicked()
|
||||
|
||||
emit clickedDownloadBtn();
|
||||
|
||||
DownloadItem *item = dw->addItem(info["Name"].toString(), info["Filename"].toString(), info["Pkgname"].toString(), iconpixmap, downloadUrl);
|
||||
// 处理 tags,设置 installExtraArg
|
||||
QString installExtraArg;
|
||||
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
|
||||
QStringList taglist = info["Tags"].toString().split(";", Qt::SkipEmptyParts);
|
||||
#else
|
||||
QStringList taglist = info["Tags"].toString().split(";", QString::SkipEmptyParts);
|
||||
#endif
|
||||
if (taglist.contains("native")) {
|
||||
installExtraArg = "--native";
|
||||
} else if (taglist.contains("amber-ce-bookworm")) {
|
||||
installExtraArg = "--amber-ce-bookworm";
|
||||
} else if (taglist.contains("amber-ce-trixie")) {
|
||||
installExtraArg = "--amber-ce-trixie";
|
||||
} else if (taglist.contains("amber-ce-sid")) {
|
||||
installExtraArg = "--amber-ce-sid";
|
||||
} else if (taglist.contains("amber-ce-deepin23")) {
|
||||
installExtraArg = "--amber-ce-deepin23";
|
||||
}
|
||||
|
||||
DownloadItem *item = dw->addItem(info["Name"].toString(), info["Filename"].toString(), info["Pkgname"].toString(),
|
||||
iconpixmap, downloadUrl, installExtraArg);
|
||||
if (item == nullptr)
|
||||
{
|
||||
return;
|
||||
@ -552,21 +572,6 @@ void AppIntoPage::on_downloadButton_clicked()
|
||||
Qt::QueuedConnection);
|
||||
|
||||
isDownloading(downloadUrl);
|
||||
|
||||
// 处理 tags,设置 installExtraArg
|
||||
QString tags = info["Tags"].toString();
|
||||
QStringList taglist = tags.split(";", Qt::SkipEmptyParts);
|
||||
if (taglist.contains("native")) {
|
||||
item->installExtraArg = "--native";
|
||||
} else if (taglist.contains("amber-ce-bookworm")) {
|
||||
item->installExtraArg = "--amber-ce-bookworm";
|
||||
} else if (taglist.contains("amber-ce-trixie")) {
|
||||
item->installExtraArg = "--amber-ce-trixie";
|
||||
} else if (taglist.contains("amber-ce-sid")) {
|
||||
item->installExtraArg = "--amber-ce-sid";
|
||||
} else if (taglist.contains("amber-ce-deepin23")) {
|
||||
item->installExtraArg = "--amber-ce-deepin23";
|
||||
}
|
||||
}
|
||||
|
||||
void AppIntoPage::on_pushButton_3_clicked()
|
||||
|
@ -252,8 +252,5 @@ void DownloadItem::slotAsyncInstall(int t)
|
||||
ui->widget_spinner->hide();
|
||||
DownloadItem::isInstall = false;
|
||||
|
||||
installer.deleteLater();
|
||||
isInstall.deleteLater();
|
||||
|
||||
emit finished(error == 0 && !haveError && !notRoot);
|
||||
}
|
||||
|
@ -85,7 +85,9 @@ void DownloadListWidget::clearItem()
|
||||
ui->listWidget->clear();
|
||||
}
|
||||
|
||||
DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl)
|
||||
DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QString pkgName,
|
||||
const QPixmap icon, QString downloadurl,
|
||||
const QString &installExtraArg)
|
||||
{
|
||||
if (fileName.isEmpty())
|
||||
{
|
||||
@ -104,6 +106,7 @@ DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QStrin
|
||||
di->setName(name);
|
||||
di->setFileName(fileName);
|
||||
di->pkgName = pkgName;
|
||||
di->installExtraArg = installExtraArg;
|
||||
di->seticon(icon);
|
||||
QListWidgetItem *pItem = new QListWidgetItem();
|
||||
pItem->setSizeHint(QSize(240, 56)); // ui 中单个 downloaditem 高度固定 56px(上下 margin 8px,图片固定 48x48)
|
||||
|
@ -19,7 +19,9 @@ class DownloadListWidget : public DBlurEffectWidget
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
DownloadItem *addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl);
|
||||
DownloadItem *addItem(QString name, QString fileName, QString pkgName,
|
||||
const QPixmap icon, QString downloadurl,
|
||||
const QString &installExtraArg);
|
||||
int nowDownload = 0;
|
||||
int allDownload = 0;
|
||||
int toDownload = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user