146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/*
246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    SDL - Simple DirectMedia Layer
346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Copyright (C) 1997-2006 Sam Lantinga
446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    This library is free software; you can redistribute it and/or
646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    modify it under the terms of the GNU Lesser General Public
746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    License as published by the Free Software Foundation; either
846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    version 2.1 of the License, or (at your option) any later version.
946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    This library is distributed in the hope that it will be useful,
1146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    but WITHOUT ANY WARRANTY; without even the implied warranty of
1246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Lesser General Public License for more details.
1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    You should have received a copy of the GNU Lesser General Public
1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    License along with this library; if not, write to the Free Software
1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
1846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Sam Lantinga
2046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    slouken@libsdl.org
2146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/
2246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_config.h"
2346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifndef _SDL_gsvideo_h
2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _SDL_gsvideo_h
2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <sys/types.h>
2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <termios.h>
2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <linux/ps2/dev.h>
3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include <linux/ps2/gs.h>
3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_mouse.h"
3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_mutex.h"
3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "../SDL_sysvideo.h"
3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Hidden "this" pointer for the video functions */
3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _THIS	SDL_VideoDevice *this
3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Private display data */
4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerstruct SDL_PrivateVideoData {
4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	/* Gotta love that simple PS2 graphics interface. :) */
4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int console_fd;
4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int memory_fd;
4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	struct ps2_screeninfo saved_vinfo;
4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	/* Ye olde linux keyboard code */
4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int current_vt;
4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int saved_vt;
5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int keyboard_fd;
5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int saved_kbd_mode;
5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	struct termios saved_kbd_termios;
5346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
5446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	/* Ye olde linux mouse code */
5546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int mouse_fd;
5646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int cursor_drawn;
5746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
5846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	/* The memory mapped DMA area and associated variables */
5946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	caddr_t mapped_mem;
6046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int pixels_len;
6146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int mapped_len;
6246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	struct ps2_image screen_image;
6346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int screen_image_size;
6446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	unsigned long long *head_tags_mem;
6546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	unsigned long long *image_tags_mem;
6646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	unsigned long long *tex_tags_mem;
6746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	unsigned long long *scale_tags_mem;
6846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner	int dma_pending;
6946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner};
7046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Old variable names */
7146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define console_fd		(this->hidden->console_fd)
7246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define memory_fd		(this->hidden->memory_fd)
7346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define saved_vinfo		(this->hidden->saved_vinfo)
7446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define current_vt		(this->hidden->current_vt)
7546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define saved_vt		(this->hidden->saved_vt)
7646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define keyboard_fd		(this->hidden->keyboard_fd)
7746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define saved_kbd_mode		(this->hidden->saved_kbd_mode)
7846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define saved_kbd_termios	(this->hidden->saved_kbd_termios)
7946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define mouse_fd		(this->hidden->mouse_fd)
8046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define cursor_drawn		(this->hidden->cursor_drawn)
8146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define mapped_mem		(this->hidden->mapped_mem)
8246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define pixels_len		(this->hidden->pixels_len)
8346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define mapped_len		(this->hidden->mapped_len)
8446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define screen_image		(this->hidden->screen_image)
8546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define screen_image_size	(this->hidden->screen_image_size)
8646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define head_tags_mem		(this->hidden->head_tags_mem)
8746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define image_tags_mem		(this->hidden->image_tags_mem)
8846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define tex_tags_mem		(this->hidden->tex_tags_mem)
8946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define scale_tags_mem		(this->hidden->scale_tags_mem)
9046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define dma_pending		(this->hidden->dma_pending)
9146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
9246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* Shared between the mouse and video code for screen update scaling */
9346be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int scaleimage_nonblock(int fd,
9446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner                               unsigned long long *tm, unsigned long long *sm);
9546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* _SDL_gsvideo_h */
96