Skip to content

Commit d4dfa83

Browse files
committed
fix: Optimize image saving performance to clipboard on LoongArch64
Improved local image saving speed on LoongArch64 architecture by configuring pixmap quality settings. Testing shows quality=60 provides optimal balance between speed and image fidelity. pick from: 953d402 Log: Enhance LoongArch64 image save performance Bug: https://pms.uniontech.com/bug-view-326039.html
1 parent 6a9033e commit d4dfa83

1 file changed

Lines changed: 9 additions & 5 deletions

File tree

src/main_window.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2473,6 +2473,10 @@ void MainWindow::save2Clipboard(const QPixmap &pix)
24732473
qWarning() << __FUNCTION__ << "Copy Null Pix To Clipboard!";
24742474
return;
24752475
}
2476+
int quality = -1;
2477+
if (QSysInfo::currentCpuArchitecture().startsWith("loongarch64")) {
2478+
quality = 60;
2479+
}
24762480
if (Utils::is3rdInterfaceStart == false) {
24772481
if (DSysInfo::minorVersion().toInt() >= 1070) {
24782482
// check if save to clipboard finished
@@ -2501,11 +2505,11 @@ void MainWindow::save2Clipboard(const QPixmap &pix)
25012505
QByteArray bytes;
25022506
QBuffer buffer(&bytes);
25032507
buffer.open(QIODevice::WriteOnly);
2504-
pix.save(&buffer, "PNG");
2505-
// wayland下只传输一种图片数据到剪切板
2508+
pix.save(&buffer, "PNG", quality);
2509+
//wayland下只传输一种图片数据到剪切板
25062510
t_imageData->setData("image/png", bytes);
25072511
QClipboard *cb = qApp->clipboard();
2508-
qCInfo(dsrApp) << __FUNCTION__ << __LINE__ << "将数据传递到剪贴板!";
2512+
qCInfo(dsrApp) << __FUNCTION__ << __LINE__ << "将数据传递到剪贴板!保存质量: " << quality;
25092513
cb->setMimeData(t_imageData, QClipboard::Clipboard);
25102514
// wayland下添加超时机制,1s后退出事件循环
25112515
// DelayTime *tempTimer = new DelayTime(3000);
@@ -2538,11 +2542,11 @@ void MainWindow::save2Clipboard(const QPixmap &pix)
25382542
QByteArray bytes;
25392543
QBuffer buffer(&bytes);
25402544
buffer.open(QIODevice::WriteOnly);
2541-
pix.save(&buffer, "PNG");
2545+
pix.save(&buffer, "PNG", quality);
25422546
t_imageData->setData("image/png", bytes);
25432547

25442548
QClipboard *cb = qApp->clipboard();
2545-
qCInfo(dsrApp) << __FUNCTION__ << __LINE__ << "将数据传递到剪贴板!";
2549+
qCInfo(dsrApp) << __FUNCTION__ << __LINE__ << "将数据传递到剪贴板!保存质量: " << quality;
25462550
cb->setMimeData(t_imageData, QClipboard::Clipboard);
25472551
qCDebug(dsrApp) << "Whether the data passed to the clipboard is empty? " << t_imageData->imageData().isNull();
25482552
}

0 commit comments

Comments
 (0)