# HG changeset patch # User Matti Hamalainen # Date 1543553798 -7200 # Node ID cbb3463fea2a2710875b0b6dfd2d40b4cbf5a56c # Parent 45d9db50d99687aa01a3f784b2393b9258ac9197 Initial dabbling for SDL2 migration of the SW rendering / dmsimple. diff -r 45d9db50d996 -r cbb3463fea2a src/dmengine.h --- a/src/dmengine.h Fri Nov 30 06:52:46 2018 +0200 +++ b/src/dmengine.h Fri Nov 30 06:56:38 2018 +0200 @@ -249,7 +249,10 @@ // Rendering SDL_Window *window; SDL_Renderer *renderer; + + // Software rendering SDL_Surface *screen; + SDL_Texture *texture; // Events SDL_Event event; diff -r 45d9db50d996 -r cbb3463fea2a src/dmsimple.c --- a/src/dmsimple.c Fri Nov 30 06:52:46 2018 +0200 +++ b/src/dmsimple.c Fri Nov 30 06:56:38 2018 +0200 @@ -102,9 +102,6 @@ dw = engine.screen->w - (2 * dx), dy = (engine.screen->h - dh) / 2; - if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) - return DMERR_INIT_FAIL; - // Draw the progress bar dmClearSurface(engine.screen, dmMapRGBA(engine.screen, 0,0,0,0)); dmFillRect(engine.screen, dx, dy, dx+dw, dy+dh, dmMapRGB(engine.screen, 255,255,255)); @@ -120,10 +117,23 @@ } // Flip screen - if (SDL_MUSTLOCK(engine.screen) != 0) - SDL_UnlockSurface(engine.screen); + SDL_Surface dst; + SDL_LockTexture(engine.texture, NULL, &dst.pixels, &dst.pitch); - SDL_Flip(engine.screen); + for (int yc = 0; yc < engine.screen->h; yc++) + { + memcpy(dst.pixels + dst.pitch * yc, + engine.screen->pixels + engine.screen->pitch * yc, + dst.pitch); + } + + SDL_UnlockTexture(engine.texture); + + SDL_SetRenderDrawColor(engine.renderer, 0, 0, 0, 255); + SDL_RenderClear(engine.renderer); + SDL_RenderCopy(engine.renderer, engine.texture, NULL, NULL); + SDL_RenderPresent(engine.renderer); + return DMERR_OK; } @@ -153,7 +163,7 @@ dmPrint(1, "Initializing SDL video %d x %d x %dbpp, flags=0x%08x\n", width, height, depth, flags); - SDL_WM_SetCaption(dmProgDesc, dmProgName); + SDL_SetWindowTitle(engine.window, dmProgDesc); return TRUE; }