SDL_dgavideo.h
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:3k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. /*
  2.     SDL - Simple DirectMedia Layer
  3.     Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002  Sam Lantinga
  4.     This library is free software; you can redistribute it and/or
  5.     modify it under the terms of the GNU Library General Public
  6.     License as published by the Free Software Foundation; either
  7.     version 2 of the License, or (at your option) any later version.
  8.     This library is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.     Library General Public License for more details.
  12.     You should have received a copy of the GNU Library General Public
  13.     License along with this library; if not, write to the Free
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15.     Sam Lantinga
  16.     slouken@libsdl.org
  17. */
  18. #ifdef SAVE_RCSID
  19. static char rcsid =
  20.  "@(#) $Id: SDL_dgavideo.h,v 1.4 2002/04/22 21:38:04 wmay Exp $";
  21. #endif
  22. #ifndef _SDL_dgavideo_h
  23. #define _SDL_dgavideo_h
  24. #include <X11/Xlib.h>
  25. #include "SDL_mouse.h"
  26. #include "SDL_mutex.h"
  27. #include "SDL_sysvideo.h"
  28. /* Hidden "this" pointer for the video functions */
  29. #define _THIS SDL_VideoDevice *this
  30. /* Define this if you need the DGA driver to be thread-safe */
  31. #define LOCK_DGA_DISPLAY
  32. #ifdef LOCK_DGA_DISPLAY
  33. #define LOCK_DISPLAY() SDL_mutexP(event_lock)
  34. #define UNLOCK_DISPLAY() SDL_mutexV(event_lock)
  35. #else
  36. #define LOCK_DISPLAY()
  37. #define UNLOCK_DISPLAY()
  38. #endif
  39. /* This is the structure we use to keep track of video memory */
  40. typedef struct vidmem_bucket {
  41. struct vidmem_bucket *prev;
  42. int used;
  43. int dirty;
  44. Uint8 *base;
  45. unsigned int size;
  46. struct vidmem_bucket *next;
  47. } vidmem_bucket;
  48. /* Private display data */
  49. struct SDL_PrivateVideoData {
  50. Display *DGA_Display;
  51. Colormap DGA_colormap;
  52. int visualClass;
  53. #define NUM_MODELISTS 4 /* 8, 16, 24, and 32 bits-per-pixel */
  54. int SDL_nummodes[NUM_MODELISTS];
  55. SDL_Rect **SDL_modelist[NUM_MODELISTS];
  56. /* Information for the video surface */
  57. Uint8 *memory_base;
  58. int memory_pitch;
  59. SDL_mutex *hw_lock;
  60. int sync_needed;
  61. int was_flipped;
  62. /* Information for hardware surfaces */
  63. vidmem_bucket surfaces;
  64. int surfaces_memtotal;
  65. int surfaces_memleft;
  66. /* Information for double-buffering */
  67. int flip_page;
  68. int flip_yoffset[2];
  69. Uint8 *flip_address[2];
  70. /* Used to handle DGA events */
  71. int event_base;
  72. #ifdef LOCK_DGA_DISPLAY
  73. SDL_mutex *event_lock;
  74. #endif
  75. };
  76. /* Old variable names */
  77. #define DGA_Display (this->hidden->DGA_Display)
  78. #define DGA_Screen DefaultScreen(DGA_Display)
  79. #define DGA_colormap (this->hidden->DGA_colormap)
  80. #define DGA_visualClass (this->hidden->visualClass)
  81. #define memory_base (this->hidden->memory_base)
  82. #define memory_pitch (this->hidden->memory_pitch)
  83. #define flip_page (this->hidden->flip_page)
  84. #define flip_yoffset (this->hidden->flip_yoffset)
  85. #define flip_address (this->hidden->flip_address)
  86. #define sync_needed (this->hidden->sync_needed)
  87. #define was_flipped (this->hidden->was_flipped)
  88. #define SDL_nummodes (this->hidden->SDL_nummodes)
  89. #define SDL_modelist (this->hidden->SDL_modelist)
  90. #define surfaces (this->hidden->surfaces)
  91. #define surfaces_memtotal (this->hidden->surfaces_memtotal)
  92. #define surfaces_memleft (this->hidden->surfaces_memleft)
  93. #define hw_lock (this->hidden->hw_lock)
  94. #define DGA_event_base (this->hidden->event_base)
  95. #define event_lock (this->hidden->event_lock)
  96. #endif /* _SDL_dgavideo_h */