X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Facesskernel_src%2Fui_sdl.c;h=3f3cb1397cf89b8009261209869792de95904c06;hb=3764c294f21229bdf700f436fa4884f5e76e0d3a;hp=97856f960f4a4c6c8f986c9ca307c8adee236083;hpb=02cbaac1233be9c5228973a787431fa5e0aa178e;p=tpg%2Facess2.git diff --git a/AcessNative/acesskernel_src/ui_sdl.c b/AcessNative/acesskernel_src/ui_sdl.c index 97856f96..3f3cb139 100644 --- a/AcessNative/acesskernel_src/ui_sdl.c +++ b/AcessNative/acesskernel_src/ui_sdl.c @@ -39,6 +39,9 @@ int UI_Initialise(int MaxWidth, int MaxHeight) // Start main thread gInputThread = SDL_CreateThread(UI_MainThread, NULL); + while(gScreen == NULL) + SDL_Delay(10); + return 0; } @@ -136,8 +139,8 @@ int UI_MainThread(void *Unused) acess_sym = UI_GetAcessKeyFromSDL(event.key.keysym.sym, event.key.keysym.unicode); - //if( gUI_KeyboardCallback ) - // gUI_KeyboardCallback(0x80000000|acess_sym); + if( gUI_KeyboardCallback ) + gUI_KeyboardCallback(0x80000000|acess_sym); break; default: @@ -152,15 +155,21 @@ void UI_BlitBitmap(int DstX, int DstY, int SrcW, int SrcH, Uint32 *Bitmap) SDL_Surface *tmp; SDL_Rect dstRect; +// printf("UI_BlitBitmap: Blit to (%i,%i) from %p (%ix%i 32bpp bitmap)\n", +// DstX, DstY, Bitmap, SrcW, SrcH); + tmp = SDL_CreateRGBSurfaceFrom(Bitmap, SrcW, SrcH, 32, SrcW*4, 0xFF0000, 0x00FF00, 0x0000FF, 0xFF000000); SDL_SetAlpha(tmp, 0, SDL_ALPHA_OPAQUE); dstRect.x = DstX; dstRect.y = DstY; + dstRect.w = -1; dstRect.h = -1; SDL_BlitSurface(tmp, NULL, gScreen, &dstRect); + //SDL_BlitSurface(tmp, NULL, gScreen, NULL); SDL_FreeSurface(tmp); +// SDL_Flip(gScreen); } void UI_BlitFramebuffer(int DstX, int DstY, int SrcX, int SrcY, int W, int H) @@ -182,10 +191,12 @@ void UI_FillBitmap(int X, int Y, int W, int H, Uint32 Value) dstRect.x = X; dstRect.y = Y; dstRect.w = W; dstRect.h = H; +// printf("UI_FillBitmap: gScreen = %p\n", gScreen); SDL_FillRect(gScreen, &dstRect, Value); } void UI_Redraw(void) { - // No-Op, we're not using double buffering + // TODO: Keep track of changed rectangle + SDL_UpdateRect(gScreen, 0, 0, giUI_Width, giUI_Height); }