SDL  2.0
SDL_pspvideo.c
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 1997-2016 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_internal.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 PSP 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 PSP 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 {
162  SDL_VideoDisplay display;
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: */
#define SDL_MINOR_VERSION
Definition: SDL_version.h:61
void(* RestoreWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:208
int PSP_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
void PSP_GL_UnloadLibrary(_THIS)
SDL_GLContext PSP_GL_CreateContext(_THIS, SDL_Window *window)
#define SDL_MAJOR_VERSION
Definition: SDL_version.h:60
SDL_bool(* IsScreenKeyboardShown)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:263
int(* CreateWindowFrom)(_THIS, SDL_Window *window, const void *data)
Definition: SDL_sysvideo.h:196
SDL_Window * window
void(* free)(_THIS)
Definition: SDL_sysvideo.h:345
A collection of pixels used in software blitting.
Definition: SDL_surface.h:69
int(* GL_SetSwapInterval)(_THIS, int interval)
Definition: SDL_sysvideo.h:240
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: SDL_opengl.h:1967
void(* ShowWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:203
The structure that defines a display mode.
Definition: SDL_video.h:53
SDL_version version
Definition: SDL_syswm.h:183
Uint8 major
Definition: SDL_version.h:53
void(* SetWindowSize)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:200
void(* GL_SwapWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:242
void PSP_DestroyWindow(_THIS, SDL_Window *window)
void PSP_RestoreWindow(_THIS, SDL_Window *window)
void PSP_SetWindowGrab(_THIS, SDL_Window *window, SDL_bool grabbed)
void PSP_GL_SwapWindow(_THIS, SDL_Window *window)
void PSP_MinimizeWindow(_THIS, SDL_Window *window)
void PSP_VideoQuit(_THIS)
int SDL_AddVideoDisplay(const SDL_VideoDisplay *display)
Definition: SDL_video.c:593
int(* GL_LoadLibrary)(_THIS, const char *path)
Definition: SDL_sysvideo.h:234
int PSP_GL_MakeCurrent(_THIS, SDL_Window *window, SDL_GLContext context)
int PSP_GL_GetSwapInterval(_THIS)
struct SDL_GLDriverData * gl_data
Definition: SDL_sysvideo.h:333
int(* SetDisplayMode)(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
Definition: SDL_sysvideo.h:189
int PSP_CreateWindow(_THIS, SDL_Window *window)
SDL_bool
Definition: SDL_stdinc.h:126
void(* HideWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:204
void PSP_PumpEvents(_THIS)
void(* RaiseWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:205
void * SDL_calloc(size_t nmemb, size_t size)
SDL_bool(* GetWindowWMInfo)(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
Definition: SDL_sysvideo.h:227
SDL_GLContext(* GL_CreateContext)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:237
SDL_bool PSP_HasScreenKeyboardSupport(_THIS)
void PSP_SetWindowTitle(_THIS, SDL_Window *window)
void PSP_SetWindowSize(_THIS, SDL_Window *window)
void PSP_GL_DeleteContext(_THIS, SDL_GLContext context)
#define _THIS
int(* GL_MakeCurrent)(_THIS, SDL_Window *window, SDL_GLContext context)
Definition: SDL_sysvideo.h:238
void SDL_free(void *mem)
void * driverdata
Definition: SDL_video.h:59
void PSP_ShowScreenKeyboard(_THIS, SDL_Window *window)
int PSP_GL_LoadLibrary(_THIS, const char *path)
SDL_bool PSP_GetWindowWMInfo(_THIS, SDL_Window *window, struct SDL_SysWMinfo *info)
SDL_DisplayMode current_mode
Definition: SDL_sysvideo.h:127
GLenum mode
void(* DestroyWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:214
#define SDL_zero(x)
Definition: SDL_stdinc.h:355
void(* SetWindowIcon)(_THIS, SDL_Window *window, SDL_Surface *icon)
Definition: SDL_sysvideo.h:198
void PSP_SetWindowPosition(_THIS, SDL_Window *window)
SDL_bool(* HasScreenKeyboardSupport)(_THIS)
Definition: SDL_sysvideo.h:260
void PSP_SetWindowIcon(_THIS, SDL_Window *window, SDL_Surface *icon)
void(* GL_UnloadLibrary)(_THIS)
Definition: SDL_sysvideo.h:236
int PSP_GL_SetSwapInterval(_THIS, int interval)
void(* GetDisplayModes)(_THIS, SDL_VideoDisplay *display)
Definition: SDL_sysvideo.h:181
#define NULL
Definition: begin_code.h:143
#define SDL_OutOfMemory()
Definition: SDL_error.h:52
SDL_DisplayMode desktop_mode
Definition: SDL_sysvideo.h:126
void(* VideoQuit)(_THIS)
Definition: SDL_sysvideo.h:161
#define SDL_SetError
int PSP_CreateWindowFrom(_THIS, SDL_Window *window, const void *data)
void(* SetWindowPosition)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:199
void(* ShowScreenKeyboard)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:261
void PSP_GetDisplayModes(_THIS, SDL_VideoDisplay *display)
void PSP_RaiseWindow(_THIS, SDL_Window *window)
int(* CreateWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:195
The type used to identify a window.
Definition: SDL_sysvideo.h:71
void(* MinimizeWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:207
void * PSP_GL_GetProcAddress(_THIS, const char *proc)
SDL_bool egl_initialized
Definition: SDL_pandora.h:32
SDL_bool PSP_IsScreenKeyboardShown(_THIS, SDL_Window *window)
int(* VideoInit)(_THIS)
Definition: SDL_sysvideo.h:155
void * driverdata
Definition: SDL_sysvideo.h:106
void(* GL_DeleteContext)(_THIS, SDL_GLContext context)
Definition: SDL_sysvideo.h:243
void PSP_ShowWindow(_THIS, SDL_Window *window)
void PSP_HideWindow(_THIS, SDL_Window *window)
Uint32 format
Definition: SDL_video.h:55
void(* SetWindowTitle)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:197
int(* GL_GetSwapInterval)(_THIS)
Definition: SDL_sysvideo.h:241
void(* MaximizeWindow)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:206
int PSP_VideoInit(_THIS)
void PSP_MaximizeWindow(_THIS, SDL_Window *window)
void PSP_HideScreenKeyboard(_THIS, SDL_Window *window)
void(* SetWindowGrab)(_THIS, SDL_Window *window, SDL_bool grabbed)
Definition: SDL_sysvideo.h:213
void *(* GL_GetProcAddress)(_THIS, const char *proc)
Definition: SDL_sysvideo.h:235
void(* PumpEvents)(_THIS)
Definition: SDL_sysvideo.h:249
void(* HideScreenKeyboard)(_THIS, SDL_Window *window)
Definition: SDL_sysvideo.h:262