mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-01-17 02:21:26 +01:00
DPMS support
This commit is contained in:
parent
07695a0320
commit
1343df0907
10 changed files with 143 additions and 7 deletions
17
ChangeLog
17
ChangeLog
|
|
@ -1,5 +1,22 @@
|
|||
2006-04-04 David Reveman <davidr@novell.com>
|
||||
|
||||
* hw/xgl/glx/xglxorg.c (xglxInitXorg): No need to try and disable
|
||||
dpms and screensaver with command line arguments as we now
|
||||
do that as part of detecting DPMS support in xglx.c.
|
||||
|
||||
* hw/xgl/glx/xglx.c (xglxOsVendorInit): Check for DPMS,
|
||||
get default timeouts, disable current timeouts and screensaver.
|
||||
Add xglxDPMSSupported and xglxDPMSet for DPMS support.
|
||||
|
||||
* hw/xgl/Makefile.am (Xgl_SOURCES): Remove dpmsstubs.c.
|
||||
|
||||
* hw/xgl/egl/module/xeglmodule.c:
|
||||
* hw/xgl/egl/xegl.c:
|
||||
* hw/xgl/glx/module/xglxmodule.c:
|
||||
* hw/xgl/glx/xglx.c:
|
||||
* hw/xgl/xglinit.c: DPMS support by adding DPMSSupported
|
||||
and DPMSSet as ddx module functions.
|
||||
|
||||
* hw/xgl/glx/xglx.c (xglxScreenInit): Re-install colormap
|
||||
after initializing software cursor (#6489). (Tiago Vignatti)
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,6 @@ Xgl_LDFLAGS = -export-dynamic
|
|||
Xgl_SOURCES = \
|
||||
xglinit.c \
|
||||
$(top_srcdir)/mi/miinitext.c \
|
||||
$(top_srcdir)/Xext/dpmsstubs.c \
|
||||
$(top_srcdir)/Xi/stubs.c \
|
||||
$(top_srcdir)/fb/fbcmap.c
|
||||
Xgl_LDADD = \
|
||||
|
|
|
|||
|
|
@ -102,3 +102,15 @@ OsVendorInit (void)
|
|||
{
|
||||
xeglOsVendorInit ();
|
||||
}
|
||||
|
||||
|
||||
Bool
|
||||
DPMSSupported (void)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
DPMSSet (int level)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -129,3 +129,14 @@ OsVendorInit (void)
|
|||
{
|
||||
xeglOsVendorInit ();
|
||||
}
|
||||
|
||||
Bool
|
||||
DPMSSupported (void)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
DPMSSet (int level)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -102,3 +102,15 @@ OsVendorInit (void)
|
|||
{
|
||||
xglxOsVendorInit ();
|
||||
}
|
||||
|
||||
Bool
|
||||
DPMSSupported (void)
|
||||
{
|
||||
return xglxDPMSSupported ();
|
||||
}
|
||||
|
||||
void
|
||||
DPMSSet (int level)
|
||||
{
|
||||
xglxDPMSSet (level);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@
|
|||
#include "xglx.h"
|
||||
|
||||
#include <X11/extensions/Xrandr.h>
|
||||
#include <X11/extensions/dpms.h>
|
||||
#include <X11/cursorfont.h>
|
||||
|
||||
#include <glitz-glx.h>
|
||||
|
|
@ -132,6 +133,7 @@ static CARD32 lastEventTime = 0;
|
|||
static ScreenPtr currentScreen = 0;
|
||||
static Bool softCursor = FALSE;
|
||||
static Bool fullscreen = TRUE;
|
||||
static Bool xDpms = FALSE;
|
||||
|
||||
static Bool randrExtension = FALSE;
|
||||
static int randrEvent, randrError;
|
||||
|
|
@ -1413,9 +1415,35 @@ xglxOsVendorInit (void)
|
|||
xscreen = DefaultScreen (xdisplay);
|
||||
|
||||
if (!xDisplayName)
|
||||
{
|
||||
int timeout, interval, preferBlanking, allowExposures;
|
||||
|
||||
XDefineCursor (xdisplay, RootWindow (xdisplay, xscreen),
|
||||
XCreateFontCursor (xdisplay, XC_watch));
|
||||
|
||||
if (DPMSCapable (xdisplay))
|
||||
{
|
||||
CARD16 standby, suspend, off;
|
||||
|
||||
DPMSGetTimeouts (xdisplay, &standby, &suspend, &off);
|
||||
DPMSSetTimeouts (xdisplay, 0, 0, 0);
|
||||
DPMSEnable (xdisplay);
|
||||
DPMSForceLevel (xdisplay, DPMSModeOn);
|
||||
|
||||
DPMSStandbyTime = standby * MILLI_PER_SECOND;
|
||||
DPMSSuspendTime = suspend * MILLI_PER_SECOND;
|
||||
DPMSOffTime = off * MILLI_PER_SECOND;
|
||||
|
||||
xDpms = TRUE;
|
||||
}
|
||||
|
||||
XGetScreenSaver (xdisplay, &timeout, &interval,
|
||||
&preferBlanking, &allowExposures);
|
||||
XSetScreenSaver (xdisplay, 0, interval,
|
||||
preferBlanking, allowExposures);
|
||||
XResetScreenSaver (xdisplay);
|
||||
}
|
||||
|
||||
if (!glitz_glx_find_window_format (xdisplay, xscreen, 0, NULL, 0))
|
||||
FatalError ("no GLX visuals available\n");
|
||||
}
|
||||
|
|
@ -1485,3 +1513,16 @@ xglxCreateARGBCursor (ScreenPtr pScreen,
|
|||
}
|
||||
|
||||
#endif
|
||||
|
||||
Bool
|
||||
xglxDPMSSupported (void)
|
||||
{
|
||||
return xDpms;
|
||||
}
|
||||
|
||||
void
|
||||
xglxDPMSSet (int level)
|
||||
{
|
||||
if (xDpms)
|
||||
DPMSForceLevel (xdisplay, level);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -117,6 +117,15 @@ xglxGiveUp (void);
|
|||
void
|
||||
xglxOsVendorInit (void);
|
||||
|
||||
Bool
|
||||
xglxDPMSSupported (void);
|
||||
|
||||
int
|
||||
xglxDPMSGet (int *plevel);
|
||||
|
||||
void
|
||||
xglxDPMSSet (int level);
|
||||
|
||||
#ifndef NXGLXORG
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -167,6 +167,19 @@ OsVendorInit (void)
|
|||
xglxOsVendorInit ();
|
||||
}
|
||||
|
||||
void ddxInitGlobals()
|
||||
void
|
||||
ddxInitGlobals (void)
|
||||
{
|
||||
}
|
||||
|
||||
Bool
|
||||
DPMSSupported (void)
|
||||
{
|
||||
return xglxDPMSSupported ();
|
||||
}
|
||||
|
||||
void
|
||||
DPMSSet (int level)
|
||||
{
|
||||
xglxDPMSSet (level);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -544,7 +544,6 @@ xglxInitXorg (void)
|
|||
pid_t pid;
|
||||
char *name;
|
||||
char *auth[] = { "-auth", xorgAuthBuf, "-nolisten", "tcp" };
|
||||
char *saver[] = { "-dpms", "-v", "-s", "0" };
|
||||
char *endArg = NULL;
|
||||
int authFd;
|
||||
int mask;
|
||||
|
|
@ -592,9 +591,6 @@ xglxInitXorg (void)
|
|||
if (!xglxAddXorgArguments (auth, sizeof (auth) / sizeof (char *)))
|
||||
return 0;
|
||||
|
||||
if (!xglxAddXorgArguments (saver, sizeof (saver) / sizeof (char *)))
|
||||
return 0;
|
||||
|
||||
if (!xglxAddXorgArguments (&xorgDisplay, 1))
|
||||
return 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -77,6 +77,8 @@ typedef struct _xglDDXFunc {
|
|||
void (*abort) (void);
|
||||
void (*giveUp) (void);
|
||||
void (*osVendorInit) (void);
|
||||
Bool (*dpmsSupported) (void);
|
||||
void (*dpmsSet) (int level);
|
||||
} xglDDXFuncRec;
|
||||
|
||||
static xglDDXFuncRec __ddxFunc;
|
||||
|
|
@ -154,7 +156,9 @@ xglEnsureDDXModule (void)
|
|||
SYM (__ddxFunc.processArgument, "ddxProcessArgument"),
|
||||
SYM (__ddxFunc.abort, "AbortDDX"),
|
||||
SYM (__ddxFunc.giveUp, "ddxGiveUp"),
|
||||
SYM (__ddxFunc.osVendorInit, "OsVendorInit")
|
||||
SYM (__ddxFunc.osVendorInit, "OsVendorInit"),
|
||||
SYM (__ddxFunc.dpmsSupported, "DPMSSupported"),
|
||||
SYM (__ddxFunc.dpmsSet, "DPMSSet")
|
||||
};
|
||||
|
||||
ddxHandle = xglLoadModule (ddxModuleName, RTLD_NOW | RTLD_GLOBAL);
|
||||
|
|
@ -336,6 +340,28 @@ ddxInitGlobals (void)
|
|||
{
|
||||
}
|
||||
|
||||
Bool
|
||||
DPMSSupported (void)
|
||||
{
|
||||
if (xglEnsureDDXModule ())
|
||||
return (*__ddxFunc.dpmsSupported) ();
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int
|
||||
DPMSGet (int *plevel)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
void
|
||||
DPMSSet (int level)
|
||||
{
|
||||
if (xglEnsureDDXModule ())
|
||||
return (*__ddxFunc.dpmsSet) (level);
|
||||
}
|
||||
|
||||
#if 1
|
||||
|
||||
/* nvdia's driver seem to be abusing sched_yield and it is causing
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue