void ResetScreenSaver(void) { if (!IsScreenSaverRunning()) return; QDateTime current_time = QDateTime::currentDateTime(); if ((!m_last_deactivated.isValid()) || (m_last_deactivated.secsTo(current_time) > 30)) { if (m_xscreensaverRunning) { LOG(VB_PLAYBACK, LOG_INFO, LOC + "Calling xscreensaver-command -deactivate"); myth_system("xscreensaver-command -deactivate >&- 2>&- &", kMSDontBlockInputDevs | kMSDontDisableDrawing | kMSRunBackground); } if (m_gscreensaverRunning) { LOG(VB_PLAYBACK, LOG_INFO, LOC + "Calling gnome-screensaver-command --poke"); myth_system("gnome-screensaver-command --poke >&- 2>&- &", kMSDontBlockInputDevs | kMSDontDisableDrawing | kMSRunBackground); } m_last_deactivated = current_time; } }
static void IdleObject_Tick(IdleObject * obj) { bool idle = false; int idleType = 0, flags = 0; if (obj->useridlecheck && IdleObject_IsUserIdle(obj)) { idleType = 1; idle = true; } else if (IdleObject_IdleCheckSaver(obj) && IsScreenSaverRunning()) { idleType = 2; idle = true; } else if (IdleObject_IdleCheckFullScr(obj) && IsFullScreen()) { idleType = 5; idle = true; } else if (IdleObject_IdleCheckWorkstation(obj) && IsWorkstationLocked()) { idleType = 3; idle = true; } else if (IdleObject_IdleCheckTerminal(obj) && IsTerminalDisconnected()) { idleType = 4; idle = true; } if (IdleObject_IsPrivacy(obj)) flags |= IDF_PRIVACY; if ( !IdleObject_IsIdle(obj) && idle) { IdleObject_SetIdle(obj); obj->idleType = idleType; NotifyEventHooks(hIdleEvent, 0, IDF_ISIDLE | flags); } if (IdleObject_IsIdle(obj) && !idle) { IdleObject_ClearIdle(obj); obj->idleType = 0; NotifyEventHooks(hIdleEvent, 0, flags); } }
BOOL checkNotifyOptions() { BOOL screenSaverIsRunning = IsScreenSaverRunning(); if (screenSaverIsRunning && bScreenSaverRunning) return TRUE; BOOL workstationIsLocked = IsWorkstationLocked(); if (workstationIsLocked && bWorkstationLocked) return TRUE; BOOL fullScreenMode = IsFullScreen() && !screenSaverIsRunning; if (fullScreenMode && bFullScreenMode) return TRUE; BOOL processesRunning = areThereProcessesRunning(); if (processesRunning && bProcessesAreRunning) return TRUE; return (!fullScreenMode && !screenSaverIsRunning && !workstationIsLocked && !processesRunning && bWorkstationActive); }
static int StatusModeChange(WPARAM wParam, LPARAM lParam) { int statusMode = (int)wParam; char *szProto = (char*)lParam; if (protoModeMsgFlags == 0) return 0; // If its a global change check the complete PFLAGNUM_3 flags to see if a popup might be needed if (!szProto) { if (!(protoModeMsgFlags & Proto_Status2Flag(statusMode))) return 0; } else { // If its a single protocol check the PFLAGNUM_3 for the single protocol if (!(CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_1, 0) & PF1_MODEMSGSEND) || !(CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_3, 0) & Proto_Status2Flag(statusMode))) return 0; } BOOL bScreenSaverRunning = IsScreenSaverRunning(); if (GetStatusModeByte(statusMode, "Ignore")) ChangeAllProtoMessages(szProto, statusMode, NULL); else if (bScreenSaverRunning || GetStatusModeByte(statusMode, "NoDlg", true)) { TCHAR *msg = GetAwayMessage(statusMode, szProto); ChangeAllProtoMessages(szProto, statusMode, msg); mir_free(msg); } else { SetAwasMsgNewData *newdat = (SetAwasMsgNewData*)mir_alloc(sizeof(SetAwasMsgNewData)); newdat->szProto = szProto; newdat->statusMode = statusMode; if (hwndStatusMsg) DestroyWindow(hwndStatusMsg); hwndStatusMsg = CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_SETAWAYMSG), NULL, SetAwayMsgDlgProc, (LPARAM)newdat); } return 0; }
ScreenSaverX11Private(ScreenSaverX11 *outer) : m_dpmsenabled(FALSE), m_dpmsdeactivated(false), m_timeoutInterval(-1), m_resetTimer(0) { m_xscreensaverRunning = myth_system("xscreensaver-command -version >&- 2>&-") == 0; m_gscreensaverRunning = myth_system("gnome-screensaver-command --help >&- 2>&-") == 0; if (IsScreenSaverRunning()) { m_resetTimer = new QTimer(outer); QObject::connect(m_resetTimer, SIGNAL(timeout()), outer, SLOT(resetSlot())); VERBOSE(VB_GENERAL, "XScreenSaver support enabled"); } int dummy; if ((m_dpmsaware = DPMSQueryExtension(qt_xdisplay(), &dummy, &dummy))) { CARD16 power_level; /* If someone runs into X server weirdness that goes away when * they externally disable DPMS, then the 'dpmsenabled' test should * be short circuited by a call to 'DPMSCapable()'. Be sure to * manually initialize dpmsenabled to false. */ DPMSInfo(qt_xdisplay(), &power_level, &m_dpmsenabled); if (m_dpmsenabled) VERBOSE(VB_GENERAL, "DPMS is active."); else VERBOSE(VB_GENERAL, "DPMS is disabled."); } else { VERBOSE(VB_GENERAL, "DPMS is not supported."); } }
ScreenSaverX11Private(ScreenSaverX11 *outer) : m_dpmsaware(false), m_dpmsdeactivated(false), m_xscreensaverRunning(false), m_gscreensaverRunning(false), m_dpmsenabled(false), m_timeoutInterval(-1), m_resetTimer(NULL), m_display(NULL) { const uint flags = kMSDontBlockInputDevs | kMSDontDisableDrawing | kMSProcessEvents; m_xscreensaverRunning = myth_system("xscreensaver-command -version >&- 2>&-", flags) == 0; m_gscreensaverRunning = myth_system("gnome-screensaver-command --help >&- 2>&-", flags) == 0; if (IsScreenSaverRunning()) { m_resetTimer = new QTimer(outer); m_resetTimer->setSingleShot(false); QObject::connect(m_resetTimer, SIGNAL(timeout()), outer, SLOT(resetSlot())); if (m_xscreensaverRunning) LOG(VB_GENERAL, LOG_INFO, LOC + "XScreenSaver support enabled"); if (m_gscreensaverRunning) LOG(VB_GENERAL, LOG_INFO, LOC + "Gnome screen saver support enabled"); } m_display = OpenMythXDisplay(); if (m_display) { int dummy0, dummy1; m_dpmsaware = DPMSQueryExtension(m_display->GetDisplay(), &dummy0, &dummy1); } else { LOG(VB_GENERAL, LOG_ERR, LOC + "Failed to open connection to X11 server"); } if (m_dpmsaware) { CARD16 power_level; /* If someone runs into X server weirdness that goes away when * they externally disable DPMS, then the 'dpmsenabled' test should * be short circuited by a call to 'DPMSCapable()'. Be sure to * manually initialize dpmsenabled to false. */ DPMSInfo(m_display->GetDisplay(), &power_level, &m_dpmsenabled); if (m_dpmsenabled) LOG(VB_GENERAL, LOG_INFO, LOC + "DPMS is active."); else LOG(VB_GENERAL, LOG_INFO, LOC + "DPMS is disabled."); } else { LOG(VB_GENERAL, LOG_INFO, LOC + "DPMS is not supported."); } }
VOID CALLBACK IdleTimer(HWND, UINT, UINT_PTR idEvent, DWORD) { if (hTimer == idEvent && !g_bWindowHidden && ((g_wMaskAdv & (OPT_HIDEIFWINIDLE | OPT_HIDEIFMIRIDLE) && IsUserIdle()) || (g_wMaskAdv & OPT_HIDEIFSCRSVR) && IsScreenSaverRunning())) BossKeyHideMiranda(0, 0); }