comparison src/video/qnxgf/SDL_gf_render.c @ 3109:7b3a09fb9c8b

Support for HID devices (mice and keyboards only for now) has been added
author Mike Gorchak <lestat@i.com.ua>
date Tue, 28 Apr 2009 04:33:30 +0000
parents 82e60908fab1
children 7f684f249ec9
comparison
equal deleted inserted replaced
3108:aa1897bee1e9 3109:7b3a09fb9c8b
33 33
34 #include "SDL_gf_render.h" 34 #include "SDL_gf_render.h"
35 #include "SDL_qnxgf.h" 35 #include "SDL_qnxgf.h"
36 36
37 static SDL_Renderer* gf_createrenderer(SDL_Window* window, Uint32 flags); 37 static SDL_Renderer* gf_createrenderer(SDL_Window* window, Uint32 flags);
38 static int gf_displaymodechanged(SDL_Renderer* renderer); 38 static int gf_displaymodechanged(SDL_Renderer* renderer);
39 static int gf_activaterenderer(SDL_Renderer* renderer); 39 static int gf_activaterenderer(SDL_Renderer* renderer);
40 static int gf_createtexture(SDL_Renderer* renderer, SDL_Texture* texture); 40 static int gf_createtexture(SDL_Renderer* renderer, SDL_Texture* texture);
41 static int gf_querytexturepixels(SDL_Renderer* renderer, SDL_Texture* texture, void** pixels, int* pitch); 41 static int gf_querytexturepixels(SDL_Renderer* renderer, SDL_Texture* texture, void** pixels, int* pitch);
42 static int gf_settexturepalette(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Color* colors, int firstcolor, int ncolors); 42 static int gf_settexturepalette(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Color* colors, int firstcolor, int ncolors);
43 static int gf_gettexturepalette(SDL_Renderer* renderer, SDL_Texture* texture, SDL_Color* colors, int firstcolor, int ncolors); 43 static int gf_gettexturepalette(SDL_Renderer* renderer, SDL_Texture* texture, SDL_Color* colors, int firstcolor, int ncolors);
44 static int gf_settexturecolormod(SDL_Renderer* renderer, SDL_Texture* texture); 44 static int gf_settexturecolormod(SDL_Renderer* renderer, SDL_Texture* texture);
45 static int gf_settexturealphamod(SDL_Renderer* renderer, SDL_Texture* texture); 45 static int gf_settexturealphamod(SDL_Renderer* renderer, SDL_Texture* texture);
46 static int gf_settextureblendmode(SDL_Renderer* renderer, SDL_Texture* texture); 46 static int gf_settextureblendmode(SDL_Renderer* renderer, SDL_Texture* texture);
47 static int gf_settexturescalemode(SDL_Renderer* renderer, SDL_Texture* texture); 47 static int gf_settexturescalemode(SDL_Renderer* renderer, SDL_Texture* texture);
48 static int gf_updatetexture(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Rect* rect, const void* pixels, int pitch); 48 static int gf_updatetexture(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Rect* rect, const void* pixels, int pitch);
49 static int gf_locktexture(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Rect* rect, int markDirty, void** pixels, int* pitch); 49 static int gf_locktexture(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Rect* rect, int markDirty, void** pixels, int* pitch);
50 static void gf_unlocktexture(SDL_Renderer* renderer, SDL_Texture* texture); 50 static void gf_unlocktexture(SDL_Renderer* renderer, SDL_Texture* texture);
51 static void gf_dirtytexture(SDL_Renderer* renderer, SDL_Texture* texture, int numrects, const SDL_Rect* rects); 51 static void gf_dirtytexture(SDL_Renderer* renderer, SDL_Texture* texture, int numrects, const SDL_Rect* rects);
52 static int gf_renderpoint(SDL_Renderer* renderer, int x, int y); 52 static int gf_renderpoint(SDL_Renderer* renderer, int x, int y);
53 static int gf_renderline(SDL_Renderer* renderer, int x1, int y1, int x2, int y2); 53 static int gf_renderline(SDL_Renderer* renderer, int x1, int y1, int x2, int y2);
54 static int gf_renderfill(SDL_Renderer* renderer, const SDL_Rect* rect); 54 static int gf_renderfill(SDL_Renderer* renderer, const SDL_Rect* rect);
55 static int gf_rendercopy(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Rect* srcrect, const SDL_Rect* dstrect); 55 static int gf_rendercopy(SDL_Renderer* renderer, SDL_Texture* texture, const SDL_Rect* srcrect, const SDL_Rect* dstrect);
56 static void gf_renderpresent(SDL_Renderer* renderer); 56 static void gf_renderpresent(SDL_Renderer* renderer);
57 static void gf_destroytexture(SDL_Renderer* renderer, SDL_Texture* texture); 57 static void gf_destroytexture(SDL_Renderer* renderer, SDL_Texture* texture);
58 static void gf_destroyrenderer(SDL_Renderer* renderer); 58 static void gf_destroyrenderer(SDL_Renderer* renderer);
59 59
60 SDL_RenderDriver gf_renderdriver= 60 SDL_RenderDriver gf_renderdriver=
220 220
221 /* Create layer surfaces, which could be visible */ 221 /* Create layer surfaces, which could be visible */
222 for (it=0; it<rdata->surfaces_count; it++) 222 for (it=0; it<rdata->surfaces_count; it++)
223 { 223 {
224 /* TODO: add palette creation */ 224 /* TODO: add palette creation */
225 /* do not waste surfaces when using GL ES */
226 225
227 /* Create displayable surfaces */ 226 /* Create displayable surfaces */
228 status=gf_surface_create_layer(&rdata->surface[it], &didata->layer, 1, 0, 227 status=gf_surface_create_layer(&rdata->surface[it], &didata->layer, 1, 0,
229 didata->current_mode.w, didata->current_mode.h, 228 didata->current_mode.w, didata->current_mode.h,
230 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format), NULL, 229 qnxgf_sdl_to_gf_pixelformat(didata->current_mode.format), NULL,
234 { 233 {
235 /* Free already allocated surfaces */ 234 /* Free already allocated surfaces */
236 for (jt=it-1; jt>0; jt--) 235 for (jt=it-1; jt>0; jt--)
237 { 236 {
238 gf_surface_free(rdata->surface[jt]); 237 gf_surface_free(rdata->surface[jt]);
238 rdata->surface[jt]=NULL;
239 } 239 }
240 SDL_free(rdata); 240 SDL_free(rdata);
241 SDL_free(renderer); 241 SDL_free(renderer);
242 if (status==GF_ERR_MEM) 242 if (status==GF_ERR_MEM)
243 { 243 {
286 SDL_RenderData* rdata=(SDL_RenderData*)renderer->driverdata; 286 SDL_RenderData* rdata=(SDL_RenderData*)renderer->driverdata;
287 SDL_VideoDisplay* display = SDL_GetDisplayFromWindow(rdata->window); 287 SDL_VideoDisplay* display = SDL_GetDisplayFromWindow(rdata->window);
288 SDL_DisplayData* didata = (SDL_DisplayData*)display->driverdata; 288 SDL_DisplayData* didata = (SDL_DisplayData*)display->driverdata;
289 289
290 /* Setup current surface as visible */ 290 /* Setup current surface as visible */
291 gf_layer_set_surfaces(didata->layer, &rdata->surface[rdata->surface_visible_idx], 1); 291 // gf_layer_set_surfaces(didata->layer, &rdata->surface[rdata->surface_visible_idx], 1);
292 292
293 /* Set visible surface when hardware in idle state */ 293 /* Set visible surface when hardware in idle state */
294 gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE); 294 // gf_layer_update(didata->layer, GF_LAYER_UPDATE_NO_WAIT_IDLE);
295 295
296 return 0; 296 return 0;
297 } 297 }
298 298
299 static int gf_createtexture(SDL_Renderer* renderer, SDL_Texture* texture) 299 static int gf_createtexture(SDL_Renderer* renderer, SDL_Texture* texture)
389 SDL_RenderData* rdata=(SDL_RenderData*)renderer->driverdata; 389 SDL_RenderData* rdata=(SDL_RenderData*)renderer->driverdata;
390 uint32_t it; 390 uint32_t it;
391 391
392 for (it=0; it<rdata->surfaces_count; it++) 392 for (it=0; it<rdata->surfaces_count; it++)
393 { 393 {
394 gf_surface_free(rdata->surface[it]); 394 if (rdata->surface[it]!=NULL)
395 {
396 gf_surface_free(rdata->surface[it]);
397 }
395 } 398 }
396 } 399 }
397 400
398 /* vi: set ts=4 sw=4 expandtab: */ 401 /* vi: set ts=4 sw=4 expandtab: */