xsetfbpm.patch revision 277
500N/A--- xset.c Mon Aug 27 15:54:07 2007
500N/A+++ xset.c Tue Jan 15 16:13:13 2008
500N/A@@ -74,6 +74,10 @@
500N/A #endif
943N/A #ifdef DPMSExtension
500N/A #include <X11/extensions/dpms.h>
500N/A+#define FBPM
919N/A+#ifdef FBPM
919N/A+#include <X11/extensions/fbpm.h>
919N/A+#endif
919N/A #ifdef WIN32
919N/A #define BOOL wBOOL
919N/A #ifdef Status
919N/A@@ -182,7 +186,7 @@
919N/A static void xkbset_repeatrate(Display *dpy, int delay, int rate);
919N/A #endif
919N/A
919N/A-int
919N/A+void
919N/A main(int argc, char *argv[])
919N/A {
919N/A register char *arg;
919N/A@@ -651,6 +655,56 @@
919N/A }
500N/A }
500N/A #endif /* DPMSExtension */
500N/A+#ifdef FBPM
500N/A+ else if (strcmp(arg, "+fbpm") == 0) { /* turn on FBPM */
500N/A+ int dummy;
500N/A+ if (FBPMQueryExtension(dpy, &dummy, &dummy))
500N/A+ FBPMEnable(dpy, 0);
500N/A+ else
500N/A+ fprintf(stderr, "server does not have extension for +fbpm option\n");
500N/A+ } else if (strcmp(arg, "-fbpm") == 0) { /* shut off FBPM */
500N/A+ int dummy;
500N/A+ if (FBPMQueryExtension(dpy, &dummy, &dummy))
500N/A+ FBPMDisable(dpy);
500N/A+ else
500N/A+ fprintf(stderr, "server does not have extension for -fbpm option\n");
500N/A+
500N/A+ } else if (strcmp(arg, "fbpm") == 0) { /* planing for force
500N/A+ * fbpm */
500N/A+ int dummy;
500N/A+
500N/A+ if ((i + 1) >= argc) {
500N/A+ usage("missing arguments to -fpbm", NULL);
500N/A+ } else {
500N/A+ /*
500N/A+ * we are skipping the word 'force'... just
500N/A+ * check to make sure its there
500N/A+ */
+ arg = nextarg(i, argv);
+ if (strcmp(arg, "force") != 0) { /* ack ! */
+ fprintf(stderr, "bad parameter %s [needs force]\n", arg);
+ break;
+ }
+ }
+ i++;
+ arg = nextarg(i, argv);
+ i++;
+ if (FBPMQueryExtension(dpy, &dummy, &dummy)) {
+ if (strcmp(arg, "on") == 0) {
+ FBPMEnable(dpy, FBPMModeOn);
+ } else if (strcmp(arg, "standby") == 0) {
+ FBPMEnable(dpy, FBPMModeStandby);
+ } else if (strcmp(arg, "suspend") == 0) {
+ FBPMEnable(dpy, FBPMModeSuspend);
+ } else if (strcmp(arg, "off") == 0) {
+ FBPMEnable(dpy, FBPMModeOff);
+ } else {
+ fprintf(stderr, "bad parameter %s\n", arg);
+ }
+ } else
+ fprintf(stderr, "server does not have extension for fbpm option\n");
+ }
+#endif
else if (strcmp(arg, "s") == 0) {
if (i >= argc) {
set_saver(dpy, ALL, 0); /* Set everything to default */
@@ -1412,6 +1466,44 @@
}
}
#endif
+#ifdef FBPM
+ {
+ int dummy;
+ CARD16 standby, suspend, off;
+ BOOL onoff;
+ CARD16 state;
+
+ printf("FBPM (Frame Buffer Power Management):\n");
+ if (FBPMQueryExtension(dpy, &dummy, &dummy)) {
+ if (FBPMCapable(dpy)) {
+ FBPMInfo(dpy, &state, &onoff);
+ if (onoff) {
+ printf(" FBPM is enabled\n");
+ switch (state) {
+ case FBPMModeOn:
+ printf(" Frame Buffer is on\n");
+ break;
+ case FBPMModeStandby:
+ printf(" Frame Buffer is in standby\n");
+ break;
+ case FBPMModeSuspend:
+ printf(" Frame Buffer is in suspend\n");
+ break;
+ case FBPMModeOff:
+ printf(" Frame Buffer is off\n");
+ break;
+ default:
+ printf(" Unrecognized response from server\n");
+ }
+ } else
+ printf(" FBPM is disabled\n");
+ } else
+ printf(" System is not capable of FBPM\n");
+ } else {
+ printf(" Server does not have the FBPM Extension\n");
+ }
+ }
+#endif
#ifdef FONTCACHE
{
int dummy;
@@ -1542,7 +1634,18 @@
fprintf (stderr, "\t force on \n");
fprintf (stderr, "\t (also implicitly enables DPMS features) \n");
fprintf (stderr, "\t a timeout value of zero disables the mode \n");
+#ifdef FBPM
+
+ fprintf(stderr, " To control Frame Buffer Power Management (FBPM) features:\n");
+ fprintf(stderr, "\t-fbpm Frame Buffer Power Management features off\n");
+ fprintf(stderr, "\t+fbpm Frame Buffer Power Management features on\n");
+ fprintf(stderr, "\t fbpm force on \n");
+ fprintf(stderr, "\t force standby \n");
+ fprintf(stderr, "\t force suspend \n");
+ fprintf(stderr, "\t force off \n");
+ fprintf(stderr, "\t (also implicitly enables FBPM features) \n");
#endif
+#endif
#ifdef FONTCACHE
fprintf (stderr, " To control font cache:\n");
fprintf (stderr, "\t fc [hi-mark [low-mark [balance]]]\n");