1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
Common subdirectories: cxfe/CVS and cxfe-mod/CVS
diff -uN cxfe/cxfe.c cxfe-mod/cxfe.c
--- cxfe/cxfe.c 2004-11-27 03:07:59.000000000 +0100
+++ cxfe-mod/cxfe.c 2005-01-15 06:40:05.724443072 +0100
@@ -103,8 +103,57 @@
uint32_t status;
} MWMHints;
+static int dpms_disabled=0;
+static int timeout_save=0;
+void wsScreenSaverOn( Display *mDisplay )
+{
+ int nothing;
+ if ( dpms_disabled )
+ {
+ if ( DPMSQueryExtension( mDisplay,¬hing,¬hing ) )
+ {
+ if ( !DPMSEnable( mDisplay ) ) printf("DPMS restoring failed.\n"); // restoring power saving settings
+ else
+ {
+ // DPMS does not seem to be enabled unless we call DPMSInfo
+ BOOL onoff;
+ CARD16 state;
+ DPMSInfo( mDisplay,&state,&onoff );
+ if ( onoff ) printf("Successfully enabled DPMS.\n");
+ else printf("DPMS not enabled.\n");
+ }
+ }
+ }
+ if ( timeout_save )
+ {
+ int dummy, interval, prefer_blank, allow_exp;
+ XGetScreenSaver( mDisplay,&dummy,&interval,&prefer_blank,&allow_exp );
+ XSetScreenSaver( mDisplay,timeout_save,interval,prefer_blank,allow_exp );
+ XGetScreenSaver( mDisplay,&timeout_save,&interval,&prefer_blank,&allow_exp );
+ }
+}
+void wsScreenSaverOff( Display * mDisplay )
+{
+ int interval,prefer_blank,allow_exp,nothing;
+ if ( DPMSQueryExtension( mDisplay,¬hing,¬hing ) )
+ {
+ BOOL onoff;
+ CARD16 state;
+ DPMSInfo( mDisplay,&state,&onoff );
+ if ( onoff )
+ {
+ Status stat;
+ printf("Disabling DPMS.\n");
+ dpms_disabled=1;
+ stat=DPMSDisable( mDisplay ); // monitor powersave off
+ //mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"stat: %d.\n",stat );
+ }
+ }
+ XGetScreenSaver( mDisplay,&timeout_save,&interval,&prefer_blank,&allow_exp );
+ if ( timeout_save ) XSetScreenSaver( mDisplay,0,interval,prefer_blank,allow_exp ); // turning off screensaver
+}
static void *osd_loop(void *dummy)
{
@@ -755,6 +804,10 @@
XLockDisplay(display);
XUnmapWindow(display, window[fullscreen]);
fullscreen = !fullscreen;
+ if (fullscreen)
+ wsScreenSaverOff(display);
+ else
+ wsScreenSaverOn(display);
XMapRaised(display, window[fullscreen]);
XSync(display, False);
XTranslateCoordinates(display, window[fullscreen],
@@ -920,6 +973,7 @@
}
}
}
+
char* makestring(char *string, int len)
{
int i;
@@ -1134,6 +1188,9 @@
else
completion_event = -1;
+ if (fullscreen)
+ wsScreenSaverOff(display);
+
XMapRaised(display, window[fullscreen]);
res_h = (DisplayWidth(display, screen) * 1000 / DisplayWidthMM(display, screen));
@@ -1293,6 +1350,7 @@
if (x11) {
XLockDisplay(display);
+ wsScreenSaverOn(display);
XUnmapWindow(display, window[fullscreen]);
XDestroyWindow(display, window[0]);
XDestroyWindow(display, window[1]);
diff -uN cxfe/main.h cxfe-mod/main.h
--- cxfe/main.h 2004-11-27 02:32:28.000000000 +0100
+++ cxfe-mod/main.h 2005-01-15 06:40:29.770787472 +0100
@@ -43,6 +43,7 @@
#include <X11/Xatom.h>
#include <X11/Xutil.h>
#include <X11/extensions/XShm.h>
+#include <X11/extensions/dpms.h>
#include <xine.h>
#include <xine/xineutils.h>
Common subdirectories: cxfe/termio and cxfe-mod/termio
|