How can I disable screen blanking or saver from SDL layer?
You can do it in a platform dependent manner, by accessing the SDL
system dependent hooks in SDL_syswm.h
Take a look at the scrap demo for an example of using this API:
http://www.libsdl.org/projects/scrap/
Thank you, I’ve succeeded to disable screen saver. I had saw the code of XawTV.
IMHO, If SDL has abstracted API to disable it, SDL people could be more happy.
Kentarou
P.S.
Just for ml-member’s interests, here is a copy&pasted code:
static Display *dpy;
static void (*Lock_Display)(void);
static void (*Unlock_Display)(void);
void ScreenSaverInit()
{
SDL_SysWMinfo info;
dpy = NULL;
SDL_VERSION(&info.version);
if ( SDL_GetWMInfo(&info) ) {
if ( info.subsystem == SDL_SYSWM_X11 ) {
dpy = info.info.x11.display;
Lock_Display = info.info.x11.lock_func;
Unlock_Display = info.info.x11.unlock_func;
}
}
}
void ScreenSaver(int flag)
{
static int timeout,interval,prefer_blanking,allow_exposures;
static BOOL dpms_on;
CARD16 dpms_state;
int dpms_dummy;
if(dpy == NULL) return;
if(flag) {
Lock_Display();
XGetScreenSaver(dpy,&timeout,&interval,
&prefer_blanking,&allow_exposures);
XSetScreenSaver(dpy,0,0,DefaultBlanking,DefaultExposures);
if ((DPMSQueryExtension(dpy, &dpms_dummy, &dpms_dummy)) &&
(DPMSCapable(dpy))) {
DPMSInfo(dpy, &dpms_state, &dpms_on);
DPMSDisable(dpy);
}
Unlock_Display();
} else {
Lock_Display();
XSetScreenSaver(dpy,timeout,interval,prefer_blanking,allow_expos
ures);
if ((DPMSQueryExtension(dpy, &dpms_dummy, &dpms_dummy)) &&
(DPMSCapable(dpy)) && (dpms_on)) {
DPMSEnable(dpy);
}
Unlock_Display();
}
}From: slouken@libsdl.org (slouken)
Subject: Re: [SDL] How to disable screen blanking/saver?
Date: Sat, 04 May 2002 08:19:44 -0700