1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-08-04 14:55:43 +02:00

system: implement screen saver on macOS

GitLab: #1513
Change-Id: I7f8e6a8f19ddd932d62a0523e8f95b29851567b2
This commit is contained in:
Kateryna Kostiuk 2024-01-11 12:08:19 -05:00 committed by Sébastien Blin
parent a0fc85d0a9
commit 6aaac12758
2 changed files with 38 additions and 7 deletions

View file

@ -31,7 +31,8 @@ ScreenSaver::ScreenSaver(QObject* parent)
}
#else
: QObject(parent)
{}
{
}
#endif
#ifdef Q_OS_LINUX
@ -83,6 +84,18 @@ ScreenSaver::inhibit(void)
qDebug() << "Error inhibiting screen saver: " << error.message() << error.name();
}
#endif
#ifdef Q_OS_MACOS
CFStringRef reasonForActivity = CFStringCreateWithCString(NULL,
"Active Call: Keeping Screen Awake",
kCFStringEncodingUTF8);
IOReturn success = IOPMAssertionCreateWithName(kIOPMAssertionTypePreventUserIdleDisplaySleep,
kIOPMAssertionLevelOn,
reasonForActivity,
&preventSleepAssertionID);
CFRelease(reasonForActivity);
return true;
#endif
return false;
}
@ -111,6 +124,12 @@ ScreenSaver::uninhibit(void)
}
request_ = 0u;
#endif
#ifdef Q_OS_MACOS
IOReturn releaseResult = IOPMAssertionRelease(preventSleepAssertionID);
preventSleepAssertionID = 0;
return true;
#endif
return false;
}
@ -119,6 +138,9 @@ ScreenSaver::isInhibited(void)
{
#ifdef Q_OS_LINUX
return request_ != 0u;
#endif
#ifdef Q_OS_MACOS
return preventSleepAssertionID != 0;
#endif
return false;
}

View file

@ -26,6 +26,10 @@
#define N_SERVICES 3
#endif
#ifdef Q_OS_MACOS
#include "IOKit/pwr_mgt/IOPMLib.h"
#endif
class ScreenSaver : public QObject
{
Q_OBJECT
@ -40,16 +44,21 @@ public:
#ifdef Q_OS_LINUX
private:
bool createInterface(void);
QString services_[N_SERVICES] = { "org.freedesktop.ScreenSaver",
QString services_[N_SERVICES] = {"org.freedesktop.ScreenSaver",
"org.gnome.ScreenSaver",
"org.mate.ScreenSaver" };
"org.mate.ScreenSaver"};
QString paths_[N_SERVICES] = { "/org/freedesktop/ScreenSaver",
QString paths_[N_SERVICES] = {"/org/freedesktop/ScreenSaver",
"/org/gnome/ScreenSaver",
"/org/mate/ScreenSaver" };
"/org/mate/ScreenSaver"};
uint request_;
QDBusConnection sessionBus_;
QDBusInterface* screenSaverInterface_;
#endif
#ifdef Q_OS_MACOS
private:
IOPMAssertionID preventSleepAssertionID {0};
#endif
};