zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
SDL_pspvideo.c
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 
22 #include "SDL_config.h"
23 
24 #if SDL_VIDEO_DRIVER_PSP
25 
26 /* SDL internals */
27 #include "../SDL_sysvideo.h"
28 #include "SDL_version.h"
29 #include "SDL_syswm.h"
30 #include "SDL_loadso.h"
31 #include "SDL_events.h"
32 #include "../../events/SDL_mouse_c.h"
33 #include "../../events/SDL_keyboard_c.h"
34 
35 
36 
37 /* PSP declarations */
38 #include "SDL_pspvideo.h"
39 #include "SDL_pspevents_c.h"
40 #include "SDL_pspgl_c.h"
41 
42 /* unused
43 static SDL_bool PSP_initialized = SDL_FALSE;
44 */
45 static int
46 PSP_Available(void)
47 {
48  return 1;
49 }
50 
51 static void
52 PSP_Destroy(SDL_VideoDevice * device)
53 {
54 /* SDL_VideoData *phdata = (SDL_VideoData *) device->driverdata; */
55 
56  if (device->driverdata != NULL) {
57  device->driverdata = NULL;
58  }
59 }
60 
61 static SDL_VideoDevice *
62 PSP_Create()
63 {
64  SDL_VideoDevice *device;
65  SDL_VideoData *phdata;
66  SDL_GLDriverData *gldata;
67  int status;
68 
69  /* Check if pandora could be initialized */
70  status = PSP_Available();
71  if (status == 0) {
72  /* PSP could not be used */
73  return NULL;
74  }
75 
76  /* Initialize SDL_VideoDevice structure */
77  device = (SDL_VideoDevice *) SDL_calloc(1, sizeof(SDL_VideoDevice));
78  if (device == NULL) {
80  return NULL;
81  }
82 
83  /* Initialize internal Pandora specific data */
84  phdata = (SDL_VideoData *) SDL_calloc(1, sizeof(SDL_VideoData));
85  if (phdata == NULL) {
87  SDL_free(device);
88  return NULL;
89  }
90 
91  gldata = (SDL_GLDriverData *) SDL_calloc(1, sizeof(SDL_GLDriverData));
92  if (gldata == NULL) {
94  SDL_free(device);
95  return NULL;
96  }
97  device->gl_data = gldata;
98 
99  device->driverdata = phdata;
100 
101  phdata->egl_initialized = SDL_TRUE;
102 
103 
104  /* Setup amount of available displays and current display */
105  device->num_displays = 0;
106 
107  /* Set device free function */
108  device->free = PSP_Destroy;
109 
110  /* Setup all functions which we can handle */
111  device->VideoInit = PSP_VideoInit;
112  device->VideoQuit = PSP_VideoQuit;
115  device->CreateWindow = PSP_CreateWindow;
121  device->ShowWindow = PSP_ShowWindow;
122  device->HideWindow = PSP_HideWindow;
123  device->RaiseWindow = PSP_RaiseWindow;
143 
144  device->PumpEvents = PSP_PumpEvents;
145 
146  return device;
147 }
148 
149 VideoBootStrap PSP_bootstrap = {
150  "PSP",
151  "PSP Video Driver",
152  PSP_Available,
153  PSP_Create
154 };
155 
156 /*****************************************************************************/
157 /* SDL Video and Display initialization/handling functions */
158 /*****************************************************************************/
159 int
161 {
163  SDL_DisplayMode current_mode;
164 
165  SDL_zero(current_mode);
166 
167  current_mode.w = 480;
168  current_mode.h = 272;
169 
170  current_mode.refresh_rate = 60;
171  /* 32 bpp for default */
172  current_mode.format = SDL_PIXELFORMAT_ABGR8888;
173 
174  current_mode.driverdata = NULL;
175 
176  SDL_zero(display);
177  display.desktop_mode = current_mode;
178  display.current_mode = current_mode;
179  display.driverdata = NULL;
180 
181  SDL_AddVideoDisplay(&display);
182 
183  return 1;
184 }
185 
186 void
188 {
189 
190 }
191 
192 void
194 {
195 
196 }
197 
198 int
200 {
201  return 0;
202 }
203 #define EGLCHK(stmt) \
204  do { \
205  EGLint err; \
206  \
207  stmt; \
208  err = eglGetError(); \
209  if (err != EGL_SUCCESS) { \
210  SDL_SetError("EGL error %d", err); \
211  return 0; \
212  } \
213  } while (0)
214 
215 int
217 {
218  SDL_WindowData *wdata;
219 
220  /* Allocate window internal data */
221  wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData));
222  if (wdata == NULL) {
223  return SDL_OutOfMemory();
224  }
225 
226  /* Setup driver data for this window */
227  window->driverdata = wdata;
228 
229 
230  /* Window has been successfully created */
231  return 0;
232 }
233 
234 int
235 PSP_CreateWindowFrom(_THIS, SDL_Window * window, const void *data)
236 {
237  return -1;
238 }
239 
240 void
242 {
243 }
244 void
246 {
247 }
248 void
250 {
251 }
252 void
254 {
255 }
256 void
258 {
259 }
260 void
262 {
263 }
264 void
266 {
267 }
268 void
270 {
271 }
272 void
274 {
275 }
276 void
278 {
279 }
280 void
281 PSP_SetWindowGrab(_THIS, SDL_Window * window, SDL_bool grabbed)
282 {
283 
284 }
285 void
287 {
288 }
289 
290 /*****************************************************************************/
291 /* SDL Window Manager function */
292 /*****************************************************************************/
293 SDL_bool
294 PSP_GetWindowWMInfo(_THIS, SDL_Window * window, struct SDL_SysWMinfo *info)
295 {
296  if (info->version.major <= SDL_MAJOR_VERSION) {
297  return SDL_TRUE;
298  } else {
299  SDL_SetError("application not compiled with SDL %d.%d\n",
301  return SDL_FALSE;
302  }
303 
304  /* Failed to get window manager information */
305  return SDL_FALSE;
306 }
307 
308 
309 /* TO Write Me */
311 {
312  return SDL_FALSE;
313 }
315 {
316 }
318 {
319 }
321 {
322  return SDL_FALSE;
323 }
324 
325 
326 #endif /* SDL_VIDEO_DRIVER_PSP */
327 
328 /* vi: set ts=4 sw=4 expandtab: */
void(* GetDisplayModes)(_THIS, SDL_VideoDisplay *display)
Definition: SDL_sysvideo.h:169
void(* MinimizeWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:195
#define SDL_MINOR_VERSION
Definition: SDL_version.h:61
SDL_bool(* GetWindowWMInfo)(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
Definition: SDL_sysvideo.h:215
SDL_bool(* IsScreenKeyboardShown)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:251
void(* RaiseWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:193
int PSP_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size)
#define NULL
Definition: ftobjs.h:61
void(* HideWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:192
int(* GL_MakeCurrent)(_THIS, SDL_Window *window, SDL_GLContext context)
Definition: SDL_sysvideo.h:226
#define SDL_MAJOR_VERSION
Definition: SDL_version.h:60
void PSP_GL_UnloadLibrary(_THIS)
Definition: SDL_pspgl.c:67
SDL_bool
Definition: SDL_stdinc.h:116
void PSP_GL_DeleteContext(_THIS, SDL_GLContext context)
Definition: SDL_pspgl.c:181
A collection of pixels used in software blitting.
Definition: SDL_surface.h:69
DECLSPEC void SDLCALL SDL_free(void *mem)
void(* SetWindowGrab)(_THIS, SDL_Window *window, SDL_bool grabbed)
Definition: SDL_sysvideo.h:201
void PSP_GL_SwapWindow(_THIS, SDL_Window *window)
Definition: SDL_pspgl.c:175
The structure that defines a display mode.
Definition: SDL_video.h:53
SDL_version version
Definition: SDL_syswm.h:161
Uint8 major
Definition: SDL_version.h:53
void(* SetWindowIcon)(_THIS, SDL_Window *window, SDL_Surface *icon)
Definition: SDL_sysvideo.h:186
SDL_bool(* HasScreenKeyboardSupport)(_THIS)
Definition: SDL_sysvideo.h:248
void PSP_DestroyWindow(_THIS, SDL_Window *window)
char * display
Definition: visualinfo.c:85
int(* CreateWindowFrom)(_THIS, SDL_Window *window, const void *data)
Definition: SDL_sysvideo.h:184
void PSP_RestoreWindow(_THIS, SDL_Window *window)
void PSP_SetWindowGrab(_THIS, SDL_Window *window, SDL_bool grabbed)
void PSP_MinimizeWindow(_THIS, SDL_Window *window)
int PSP_GL_MakeCurrent(_THIS, SDL_Window *window, SDL_GLContext context)
Definition: SDL_pspgl.c:144
void PSP_VideoQuit(_THIS)
void(* HideScreenKeyboard)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:250
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
Definition: SDL_video.c:568
void(* free)(_THIS)
Definition: SDL_sysvideo.h:327
struct SDL_GLDriverData * gl_data
Definition: SDL_sysvideo.h:315
int PSP_CreateWindow(_THIS, SDL_Window *window)
int(* GL_SetSwapInterval)(_THIS, int interval)
Definition: SDL_sysvideo.h:228
int(* CreateWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:183
void(* GL_UnloadLibrary)(_THIS)
Definition: SDL_sysvideo.h:224
SDL_bool PSP_HasScreenKeyboardSupport(_THIS)
void PSP_SetWindowTitle(_THIS, SDL_Window *window)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl2ext.h:848
void PSP_SetWindowSize(_THIS, SDL_Window *window)
int(* VideoInit)(_THIS)
Definition: SDL_sysvideo.h:148
#define _THIS
void * driverdata
Definition: SDL_video.h:59
void PSP_ShowScreenKeyboard(_THIS, SDL_Window *window)
SDL_bool PSP_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
SDL_DisplayMode current_mode
Definition: SDL_sysvideo.h:120
DECLSPEC int SDLCALL SDL_SetError(const char *fmt,...)
Definition: SDL_error.c:53
void(* SetWindowPosition)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:187
int PSP_GL_LoadLibrary(_THIS, const char *path)
Definition: SDL_pspgl.c:45
void(* PumpEvents)(_THIS)
Definition: SDL_sysvideo.h:237
void PSP_SetWindowPosition(_THIS, SDL_Window *window)
void PSP_SetWindowIcon(_THIS, SDL_Window *window, SDL_Surface *icon)
int(* GL_GetSwapInterval)(_THIS)
Definition: SDL_sysvideo.h:229
#define SDL_OutOfMemory()
Definition: SDL_error.h:52
SDL_DisplayMode desktop_mode
Definition: SDL_sysvideo.h:119
void * PSP_GL_GetProcAddress(_THIS, const char *proc)
Definition: SDL_pspgl.c:61
SDL_GLContext PSP_GL_CreateContext(_THIS, SDL_Window *window)
Definition: SDL_pspgl.c:76
void(* GL_DeleteContext)(_THIS, SDL_GLContext context)
Definition: SDL_sysvideo.h:231
void(* MaximizeWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:194
void(* DestroyWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:202
int PSP_CreateWindowFrom(_THIS, SDL_Window *window, const void *data)
void(* SetWindowSize)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:188
int(* SetDisplayMode)(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
Definition: SDL_sysvideo.h:177
void PSP_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
void PSP_RaiseWindow(_THIS, SDL_Window *window)
SDL_GLContext(* GL_CreateContext)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:225
int(* GL_LoadLibrary)(_THIS, const char *path)
Definition: SDL_sysvideo.h:222
SDL_bool egl_initialized
Definition: SDL_pandora.h:32
void(* GL_SwapWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:230
void(* VideoQuit)(_THIS)
Definition: SDL_sysvideo.h:154
void(* ShowWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:191
SDL_bool PSP_IsScreenKeyboardShown(_THIS, SDL_Window *window)
void PSP_PumpEvents(_THIS)
Definition: SDL_pspevents.c:73
#define SDL_zero(x)
Definition: SDL_stdinc.h:254
int PSP_GL_SetSwapInterval(_THIS, int interval)
Definition: SDL_pspgl.c:155
void * driverdata
Definition: SDL_sysvideo.h:99
void(* SetWindowTitle)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:185
void PSP_ShowWindow(_THIS, SDL_Window *window)
void PSP_HideWindow(_THIS, SDL_Window *window)
Uint32 format
Definition: SDL_video.h:55
int PSP_VideoInit(_THIS)
void PSP_MaximizeWindow(_THIS, SDL_Window *window)
void PSP_HideScreenKeyboard(_THIS, SDL_Window *window)
int PSP_GL_GetSwapInterval(_THIS)
Definition: SDL_pspgl.c:169
void *(* GL_GetProcAddress)(_THIS, const char *proc)
Definition: SDL_sysvideo.h:223
GLenum mode
Definition: glew.h:2394
void(* ShowScreenKeyboard)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:249
void(* RestoreWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:196