Mercurial > sdl-ios-xcode
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: */ |