Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/config/generalconf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -970,7 +970,7 @@ void GeneralConf::useNativeFullscreenChanged(bool checked)
void GeneralConf::initUseX11LegacyScreenshot()
{
m_useX11LegacyScreenshot =
new QCheckBox(tr("Use legacy X11 screenshot method (deprecated)"), this);
new QCheckBox(tr("Use legacy X11 screenshot method"), this);
m_useX11LegacyScreenshot->setToolTip(
tr("Bypass the freedesktop portal and use Qt's native X11 screen "
"capture. Enable this if your window manager lacks "
Expand Down
28 changes: 17 additions & 11 deletions src/utils/screengrabber.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,12 +101,13 @@ void ScreenGrabber::freeDesktopPortal(bool& ok, QPixmap& res)
QMetaObject::Connection conn = QObject::connect(
request, &org::freedesktop::portal::Request::Response, onPortalResponse);

bool timedOut = false;
QTimer timeout;
timeout.setSingleShot(true);
timeout.setInterval(30000); // 30 second timeout
QObject::connect(&timeout, &QTimer::timeout, &loop, [&loop, this]() {
AbstractLogger::error()
<< tr("Screenshot portal timed out after 30 seconds");
timeout.setInterval(15000); // 15 second timeout

QObject::connect(&timeout, &QTimer::timeout, &loop, [&loop, &timedOut]() {
timedOut = true;
loop.quit();
});
timeout.start();
Expand Down Expand Up @@ -142,6 +143,18 @@ void ScreenGrabber::freeDesktopPortal(bool& ok, QPixmap& res)
request->Close().waitForFinished();
request->deleteLater();

if (timedOut) {
ok = false;

AbstractLogger::error()
<< tr("The xdg-desktop-portal backend did not respond "
"If you are on wayland make sure an xdg-desktop-portal backend "
"for your desktop is "
"installed and properly configured.\n \n"
"If on X11 enable Legacy X11 method in the General Settings");
return;
}

if (res.isNull()) {
ok = false;
return;
Expand Down Expand Up @@ -246,10 +259,6 @@ QPixmap ScreenGrabber::grabEntireDesktop(bool& ok, int preSelectedMonitor)

#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
if (!m_info.waylandDetected() && ConfigHandler().useX11LegacyScreenshot()) {
qWarning() << "Using deprecated legacy X11 screenshot method. "
"Consider installing xdg-desktop-portal for your "
"desktop. Future versions of Flameshot may remove the "
"option to use the legacy method.";
screenshot = x11LegacyScreenshot();
ok = !screenshot.isNull();
if (!ok) {
Expand Down Expand Up @@ -309,9 +318,6 @@ QPixmap ScreenGrabber::grabFullDesktop(bool& ok)
painter.end();
#elif defined(Q_OS_UNIX) && !defined(Q_OS_MACOS)
if (!m_info.waylandDetected() && ConfigHandler().useX11LegacyScreenshot()) {
qWarning() << "Using deprecated legacy X11 screenshot method. "
"Consider installing xdg-desktop-portal for your "
"desktop.";
screenshot = x11LegacyScreenshot();
ok = !screenshot.isNull();
if (!ok) {
Expand Down
Loading