Ticket #982: myth-dpms-fixes.2.patch
File myth-dpms-fixes.2.patch, 5.9 KB (added by , 18 years ago) |
---|
-
libs/libmyth/screensaver-osx.cpp
61 61 ScreenSaverOSXPrivate::timerCallback(NULL, NULL); 62 62 } 63 63 64 bool ScreenSaverOSX::Asleep(void) 65 { 66 return 0; 67 } -
libs/libmyth/screensaver-x11.cpp
20 20 int interval; 21 21 int preferblank; 22 22 int allowexposure; 23 bool dpmsdisabled;24 23 bool xscreensaverRunning; 24 BOOL dpmsaware; 25 BOOL dpmscapable; 26 BOOL dpmsenabled; 27 bool dpmsdefeated; 25 28 } state; 26 29 27 30 QTimer *resetTimer; … … 44 47 d->timeoutInterval = -1; 45 48 VERBOSE(VB_GENERAL, "XScreenSaver support enabled"); 46 49 } 50 51 int dummy; 52 if ((d->state.dpmsaware = DPMSQueryExtension(qt_xdisplay(),&dummy,&dummy))) 53 { 54 CARD16 power_level; 55 56 if ((d->state.dpmscapable = DPMSCapable(qt_xdisplay()))) { 57 58 DPMSInfo(qt_xdisplay(), &power_level, &(d->state.dpmsenabled)); 59 60 if (d->state.dpmsenabled) 61 VERBOSE(VB_GENERAL, "DPMS is active."); 62 else 63 VERBOSE(VB_GENERAL, "DPMS is disabled."); 64 65 } else { 66 d->state.dpmsenabled = false; 67 VERBOSE(VB_GENERAL, "DPMS is supported but not available."); 68 } 69 70 } else { 71 d->state.dpmscapable = false; 72 d->state.dpmsenabled = false; 73 VERBOSE(VB_GENERAL, "DPMS is not supported."); 74 } 75 76 d->state.dpmsdefeated = false; 77 47 78 } 48 79 49 80 ScreenSaverX11::~ScreenSaverX11() 50 81 { 82 /* Ensure DPMS gets left as it was found. */ 83 if (d->state.dpmsdefeated) 84 Restore(); 85 51 86 delete d; 52 87 } 53 88 … … 65 100 XResetScreenSaver(qt_xdisplay()); 66 101 XSetScreenSaver(qt_xdisplay(), 0, 0, 0, 0); 67 102 68 int nothing; 69 70 if (DPMSQueryExtension(qt_xdisplay(), ¬hing, ¬hing)) 103 if (d->state.dpmsenabled) 71 104 { 72 BOOL on; 73 CARD16 power_level; 74 75 DPMSInfo(qt_xdisplay(), &power_level, &on); 76 if (on) 77 { 78 d->state.dpmsdisabled = true; 79 DPMSDisable(qt_xdisplay()); // monitor powersave off 80 VERBOSE(VB_GENERAL, "Disable DPMS"); 81 } 105 d->state.dpmsdefeated = true; 106 DPMSDisable(qt_xdisplay()); 107 VERBOSE(VB_GENERAL, "DPMS powerdown defeated."); 82 108 } 83 109 84 110 if (d->state.xscreensaverRunning) … … 109 135 d->state.allowexposure); 110 136 d->state.saved = false; 111 137 112 if (d->state.dpmsd isabled)138 if (d->state.dpmsdefeated) 113 139 { 114 int nothing; 115 d->state.dpmsdisabled = false; 116 if (DPMSQueryExtension(qt_xdisplay(), ¬hing, ¬hing)) 117 { 118 DPMSEnable(qt_xdisplay()); 119 VERBOSE(VB_GENERAL, "Enable DPMS"); 120 } 140 d->state.dpmsdefeated = false; 141 DPMSEnable(qt_xdisplay()); 142 VERBOSE(VB_GENERAL, "DPMS powerdown re-enabled."); 121 143 } 122 144 123 145 if (d->state.xscreensaverRunning && d->resetTimer) … … 130 152 if (d->state.xscreensaverRunning) 131 153 resetSlot(); 132 154 133 int nothing; 134 if (DPMSQueryExtension(qt_xdisplay(), ¬hing, ¬hing)) 135 { 136 BOOL on; 137 CARD16 power_level; 138 if (!d->state.dpmsdisabled) 139 { 140 DPMSInfo(qt_xdisplay(), &power_level, &on); 141 if (power_level != DPMSModeOn) 142 DPMSForceLevel(qt_xdisplay(), DPMSModeOn); 143 } 144 } 155 if (Asleep()) 156 DPMSForceLevel(qt_xdisplay(), DPMSModeOn); 145 157 } 146 158 159 bool ScreenSaverX11::Asleep(void) 160 { 161 if (!d->state.dpmsenabled) 162 return 0; 163 164 if (d->state.dpmsdefeated) 165 return 0; 166 167 BOOL on; 168 CARD16 power_level; 169 170 DPMSInfo(qt_xdisplay(), &power_level, &on); 171 172 return (power_level != DPMSModeOn); 173 } 174 147 175 void ScreenSaverX11::resetSlot() 148 176 { 149 177 myth_system(QString("xscreensaver-command -deactivate >&- 2>&- &")); -
libs/libmyth/screensaver-null.cpp
17 17 void ScreenSaverNull::Reset(void) 18 18 { 19 19 } 20 21 bool ScreenSaverNull::Asleep(void) 22 { 23 return 0; 24 } -
libs/libmyth/screensaver.h
36 36 virtual void Disable(void) = 0; 37 37 virtual void Restore(void) = 0; 38 38 virtual void Reset(void) = 0; 39 40 virtual bool Asleep(void) = 0; 39 41 }; 40 42 41 43 #endif // MYTH_SCREENSAVER_H -
libs/libmyth/screensaver-null.h
12 12 void Disable(void); 13 13 void Restore(void); 14 14 void Reset(void); 15 16 bool Asleep(void); 15 17 }; 16 18 17 19 #endif // MYTH_SCREENSAVER_NULL_H -
libs/libmyth/screensaver-osx.h
13 13 void Restore(void); 14 14 void Reset(void); 15 15 16 bool Asleep(void); 17 16 18 protected: 17 19 class ScreenSaverOSXPrivate *d; 18 20 }; -
libs/libmyth/screensaver-x11.h
17 17 void Restore(void); 18 18 void Reset(void); 19 19 20 bool Asleep(void); 21 20 22 public slots: 21 23 void resetSlot(); 22 24