mirror of
https://git.jami.net/savoirfairelinux/jami-client-qt.git
synced 2025-08-05 15:25:51 +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
|
#else
|
||||||
: QObject(parent)
|
: QObject(parent)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
|
@ -83,6 +84,18 @@ ScreenSaver::inhibit(void)
|
||||||
qDebug() << "Error inhibiting screen saver: " << error.message() << error.name();
|
qDebug() << "Error inhibiting screen saver: " << error.message() << error.name();
|
||||||
}
|
}
|
||||||
#endif
|
#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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,6 +124,12 @@ ScreenSaver::uninhibit(void)
|
||||||
}
|
}
|
||||||
request_ = 0u;
|
request_ = 0u;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef Q_OS_MACOS
|
||||||
|
IOReturn releaseResult = IOPMAssertionRelease(preventSleepAssertionID);
|
||||||
|
preventSleepAssertionID = 0;
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,6 +138,9 @@ ScreenSaver::isInhibited(void)
|
||||||
{
|
{
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
return request_ != 0u;
|
return request_ != 0u;
|
||||||
|
#endif
|
||||||
|
#ifdef Q_OS_MACOS
|
||||||
|
return preventSleepAssertionID != 0;
|
||||||
#endif
|
#endif
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,6 +26,10 @@
|
||||||
#define N_SERVICES 3
|
#define N_SERVICES 3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef Q_OS_MACOS
|
||||||
|
#include "IOKit/pwr_mgt/IOPMLib.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
class ScreenSaver : public QObject
|
class ScreenSaver : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@ -40,16 +44,21 @@ public:
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
private:
|
private:
|
||||||
bool createInterface(void);
|
bool createInterface(void);
|
||||||
QString services_[N_SERVICES] = { "org.freedesktop.ScreenSaver",
|
QString services_[N_SERVICES] = {"org.freedesktop.ScreenSaver",
|
||||||
"org.gnome.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/gnome/ScreenSaver",
|
||||||
"/org/mate/ScreenSaver" };
|
"/org/mate/ScreenSaver"};
|
||||||
|
|
||||||
uint request_;
|
uint request_;
|
||||||
QDBusConnection sessionBus_;
|
QDBusConnection sessionBus_;
|
||||||
QDBusInterface* screenSaverInterface_;
|
QDBusInterface* screenSaverInterface_;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef Q_OS_MACOS
|
||||||
|
private:
|
||||||
|
IOPMAssertionID preventSleepAssertionID {0};
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue