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:
parent
a0fc85d0a9
commit
6aaac12758
2 changed files with 38 additions and 7 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue