Mercurial > sdl-ios-xcode
comparison src/video/directfb/SDL_DirectFB_render.c @ 2241:4932f192c565
Date: Wed, 15 Aug 2007 01:08:38 +0200
From: Couriersud
Subject: Some SDL1.3 patches
Modified UpdateTexture to lock and unlock DirectFB-Surface.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Wed, 15 Aug 2007 03:19:21 +0000 |
parents | 0e70b4b8cf84 |
children | 5234868559fa |
comparison
equal
deleted
inserted
replaced
2240:eebaa05f8bd9 | 2241:4932f192c565 |
---|---|
503 const SDL_Rect * rect, const void *pixels, int pitch) | 503 const SDL_Rect * rect, const void *pixels, int pitch) |
504 { | 504 { |
505 DirectFB_TextureData *data = (DirectFB_TextureData *) texture->driverdata; | 505 DirectFB_TextureData *data = (DirectFB_TextureData *) texture->driverdata; |
506 DirectFB_RenderData *renderdata = | 506 DirectFB_RenderData *renderdata = |
507 (DirectFB_RenderData *) renderer->driverdata; | 507 (DirectFB_RenderData *) renderer->driverdata; |
508 | 508 DFBResult ret; |
509 if (data->pixels) { | 509 Uint8 *dpixels; |
510 Uint8 *src, *dst; | 510 int dpitch; |
511 int row; | 511 Uint8 *src, *dst; |
512 size_t length; | 512 int row; |
513 | 513 size_t length; |
514 src = (Uint8 *) pixels; | 514 |
515 dst = | 515 SDL_DFB_CHECKERR(data->surface->Lock(data->surface, |
516 (Uint8 *) data->pixels + rect->y * data->pitch + | 516 DSLF_WRITE | DSLF_READ, &dpixels, |
517 rect->x * SDL_BYTESPERPIXEL(texture->format); | 517 &dpitch)); |
518 length = rect->w * SDL_BYTESPERPIXEL(texture->format); | 518 src = (Uint8 *) pixels; |
519 for (row = 0; row < rect->h; ++row) { | 519 dst = |
520 SDL_memcpy(dst, src, length); | 520 (Uint8 *) dpixels + rect->y * dpitch + |
521 src += pitch; | 521 rect->x * SDL_BYTESPERPIXEL(texture->format); |
522 dst += data->pitch; | 522 length = rect->w * SDL_BYTESPERPIXEL(texture->format); |
523 } | 523 for (row = 0; row < rect->h; ++row) { |
524 } else { | 524 SDL_memcpy(dst, src, length); |
525 SDL_SetError("FIXME: Update without lock!\n"); | 525 src += pitch; |
526 return -1; | 526 dst += dpitch; |
527 } | 527 } |
528 return 0; | 528 SDL_DFB_CHECKERR(data->surface->Unlock(data->surface) ); |
529 return 0; | |
530 error: | |
531 return 1; | |
532 | |
529 } | 533 } |
530 | 534 |
531 static int | 535 static int |
532 DirectFB_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, | 536 DirectFB_LockTexture(SDL_Renderer * renderer, SDL_Texture * texture, |
533 const SDL_Rect * rect, int markDirty, void **pixels, | 537 const SDL_Rect * rect, int markDirty, void **pixels, |