Ticket #29: screensaver-x11-1.3.diff
File screensaver-x11-1.3.diff, 3.2 KB (added by , 19 years ago) |
---|
-
libs/libmyth/screensaver-x11.cpp
8 8 } 9 9 10 10 #include "mythcontext.h" 11 #include "util.h" 11 12 12 13 class ScreenSaverX11Private 13 14 { … … 19 20 int preferblank; 20 21 int allowexposure; 21 22 bool dpmsdisabled; 23 bool xscreensaverRunning; 22 24 } state; 23 25 24 26 friend class ScreenSaverX11; 25 27 }; 26 28 29 ScreenSaverXSSTimer::ScreenSaverXSSTimer() 30 { 31 resetTimer = new QTimer(); 32 connect(resetTimer, SIGNAL(timeout()), this, SLOT(resetSlot())); 33 } 34 35 ScreenSaverXSSTimer::~ScreenSaverXSSTimer() 36 { 37 delete resetTimer; 38 } 39 40 void ScreenSaverXSSTimer::resetXSS() 41 { 42 myth_system(QString("xscreensaver-command -deactivate >&- 2>&- &")); 43 } 44 45 void ScreenSaverXSSTimer::resetSlot() 46 { 47 resetXSS(); 48 } 49 27 50 ScreenSaverX11::ScreenSaverX11() 28 51 { 29 52 d = new ScreenSaverX11Private(); 53 d->state.xscreensaverRunning = 54 (myth_system("xscreensaver-command -version >&- 2>&-") == 0); 55 if (d->state.xscreensaverRunning) 56 { 57 t = new ScreenSaverXSSTimer(); 58 t->timeoutInterval = -1; 59 VERBOSE(VB_GENERAL, QString("XScreenSaver support enabled")); 60 } 30 61 } 31 62 32 63 ScreenSaverX11::~ScreenSaverX11() 33 64 { 34 65 delete d; 66 delete t; 35 67 } 36 68 37 69 void ScreenSaverX11::Disable(void) … … 63 95 VERBOSE(VB_GENERAL, "Disable DPMS"); 64 96 } 65 97 } 98 99 if (d->state.xscreensaverRunning) 100 { 101 if (t->resetTimer) 102 { 103 t->resetTimer->stop(); 104 } 105 if (t->timeoutInterval == -1) 106 { 107 t->timeoutInterval = 108 gContext->GetNumSettingOnHost("xscreensaverInterval", 109 gContext->GetHostName(), 110 60) * 1000; 111 } 112 if (t->timeoutInterval > 0) 113 { 114 t->resetTimer->start(t->timeoutInterval, FALSE); 115 } 116 } 66 117 } 67 118 68 119 void ScreenSaverX11::Restore(void) … … 84 135 VERBOSE(VB_GENERAL, "Enable DPMS"); 85 136 } 86 137 } 138 139 if (d->state.xscreensaverRunning) 140 { 141 if (t->resetTimer) 142 { 143 t->resetTimer->stop(); 144 } 145 } 87 146 } 88 147 89 148 void ScreenSaverX11::Reset(void) 90 149 { 91 150 XResetScreenSaver(qt_xdisplay()); 151 if (d->state.xscreensaverRunning) 152 { 153 t->resetXSS(); 154 } 92 155 } 93 156 -
libs/libmyth/screensaver-x11.h
3 3 4 4 #include "screensaver.h" 5 5 6 #include <qobject.h> 7 #include <qtimer.h> 8 9 class ScreenSaverXSSTimer : public QObject 10 { 11 Q_OBJECT 12 public: 13 ScreenSaverXSSTimer(); 14 ~ScreenSaverXSSTimer(); 15 void resetXSS(void); 16 int timeoutInterval; 17 QTimer *resetTimer; 18 19 private slots: 20 void resetSlot(); 21 22 }; 23 6 24 class ScreenSaverX11 : public ScreenSaverControl 7 25 { 8 26 public: … … 15 33 16 34 protected: 17 35 class ScreenSaverX11Private *d; 36 class ScreenSaverXSSTimer *t; 18 37 }; 19 38 20 39 #endif // MYTH_SCREENSAVER_X11_H