Skip to content

Commit

Permalink
Disable TurboVeille screensaver if present
Browse files Browse the repository at this point in the history
  • Loading branch information
pmandin committed Jan 11, 2007
1 parent 1dfc2c9 commit 96fe8ef
Show file tree
Hide file tree
Showing 3 changed files with 133 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/video/xbios/SDL_xbios.c
Expand Up @@ -49,6 +49,7 @@
#include "SDL_xbios_blowup.h"
#include "SDL_xbios_centscreen.h"
#include "SDL_xbios_sb3.h"
#include "SDL_xbios_tveille.h"

#define XBIOS_VID_DRIVER_NAME "xbios"

Expand Down Expand Up @@ -464,6 +465,11 @@ static int XBIOS_VideoInit(_THIS, SDL_PixelFormat *vformat)
SDL_AtariGL_InitPointers(this);
#endif

/* Disable screensavers */
if (SDL_XBIOS_TveillePresent(this)) {
SDL_XBIOS_TveilleDisable(this);
}

/* We're done! */
return(0);
}
Expand Down Expand Up @@ -928,6 +934,11 @@ static void XBIOS_VideoQuit(_THIS)
}

this->screen->pixels = NULL;

/* Restore screensavers */
if (SDL_XBIOS_TveillePresent(this)) {
SDL_XBIOS_TveilleRestore(this);
}
}

#if SDL_VIDEO_OPENGL
Expand Down
52 changes: 52 additions & 0 deletions src/video/xbios/SDL_xbios_tveille.c
@@ -0,0 +1,52 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2004 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Sam Lantinga
slouken@libsdl.org
*/
#include "SDL_config.h"

/*
Turbo veille screensaver
Patrice Mandin
*/

#include <mint/cookie.h>

#include "SDL_xbios.h"
#include "SDL_xbios_tveille.h"

static tveille_t *cookie_veil;
static int status;

int SDL_XBIOS_TveillePresent(_THIS)
{
return (Getcookie(C_VeiL, (unsigned long *)&cookie_veil) == C_FOUND);
}

void SDL_XBIOS_TveilleDisable(_THIS)
{
status = cookie_veil->enabled;
cookie_veil->enabled = 0xff;
}

void SDL_XBIOS_TveilleRestore(_THIS)
{
cookie_veil->enabled = status;
}
70 changes: 70 additions & 0 deletions src/video/xbios/SDL_xbios_tveille.h
@@ -0,0 +1,70 @@
/*
SDL - Simple DirectMedia Layer
Copyright (C) 1997-2004 Sam Lantinga
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Sam Lantinga
slouken@libsdl.org
*/
#include "SDL_config.h"

/*
Turbo veille screensaver
Patrice Mandin
*/

#ifndef _SDL_xbios_tveille_h
#define _SDL_xbios_tveille_h

#include "SDL_xbios.h"

/*--- Defines ---*/

#ifndef C_VeiL
#define C_VeiL 0x5665694CL
#endif

/*--- Structures ---*/

typedef struct {
unsigned long version;
void (*prg_ptr)();
void (*kbd_ptr)();
void (*vbl_ptr)();
unsigned long vbl_count;
void (*oldkbd_ptr)();
unsigned long off_count;
unsigned long prg_size;
unsigned long dummy1[4];
unsigned char dummy2;
unsigned char status;
unsigned short freq;
unsigned short dummy3;
unsigned char clear_first;
unsigned char enabled; /* 0=enabled, 0xff=disabled */
unsigned char serial_redir;
unsigned char dummy4;
void (*oldserial_ptr)();
} __attribute__((packed)) tveille_t;

/*--- Functions prototypes ---*/

int SDL_XBIOS_TveillePresent(_THIS);
void SDL_XBIOS_TveilleDisable(_THIS);
void SDL_XBIOS_TveilleEnable(_THIS);

#endif /* _SDL_xbios_tveille_h */

0 comments on commit 96fe8ef

Please sign in to comment.