@@ -77,7 +77,7 @@ namespace {
7777 void showDriverInUse (const Context &ctx) {
7878 ctx.mLogger (LogSeverity::Message, " Driver in use:" );
7979 SDL_RendererInfo info;
80- SDL_GetRendererInfo (ctx.mSDLContext . mRenderer , &info);
80+ SDL_GetRendererInfo (ctx.mSDLContext -> mRenderer , &info);
8181 printDriverInfo (info);
8282 }
8383
@@ -178,10 +178,16 @@ ret_code Renderer::releaseRenderer(Context &ctx) {
178178 delete ctx.mDefaultFont ;
179179 ctx.mDefaultFont = nullptr ;
180180 }
181-
182181 IMG_Quit ();
183- SDL_DestroyRenderer (ctx.mSDLContext .mRenderer );
184- ctx.mSDLContext .mRenderer = nullptr ;
182+ if (ctx.mSDLContext == nullptr ) {
183+ SDL_Quit ();
184+ return ResultOk;
185+ }
186+
187+ if (ctx.mSDLContext ->mRenderer != nullptr ) {
188+ SDL_DestroyRenderer (ctx.mSDLContext ->mRenderer );
189+ ctx.mSDLContext ->mRenderer = nullptr ;
190+ }
185191 SDL_Quit ();
186192
187193 return ResultOk;
@@ -214,7 +220,7 @@ ret_code Renderer::drawText(Context &ctx, const char *string, Font *font, const
214220 return ErrorCode;
215221 }
216222
217- SDL_Texture *messageTexture = SDL_CreateTextureFromSurface (ctx.mSDLContext . mRenderer , surfaceMessage);
223+ SDL_Texture *messageTexture = SDL_CreateTextureFromSurface (ctx.mSDLContext -> mRenderer , surfaceMessage);
218224 if (messageTexture == nullptr ) {
219225 const std::string msg = " Cannot create texture: " + std::string (SDL_GetError ()) + " ." ;
220226 ctx.mLogger (LogSeverity::Error, msg.c_str ());
@@ -244,7 +250,7 @@ ret_code Renderer::drawText(Context &ctx, const char *string, Font *font, const
244250 break ;
245251 }
246252
247- SDL_RenderCopy (ctx.mSDLContext . mRenderer , messageTexture, NULL , &Message_rect);
253+ SDL_RenderCopy (ctx.mSDLContext -> mRenderer , messageTexture, nullptr , &Message_rect);
248254 SDL_FreeSurface (surfaceMessage);
249255 SDL_DestroyTexture (messageTexture);
250256
@@ -256,8 +262,8 @@ ret_code Renderer::initScreen(Context &ctx, int32_t x, int32_t y, int32_t w, int
256262 ctx.mLogger (LogSeverity::Error, " Not initialzed." );
257263 return ErrorCode;
258264 }
259-
260- if (ctx.mSDLContext . mWindow != nullptr ) {
265+ ctx. mSDLContext = SDLContext::create ();
266+ if (ctx.mSDLContext -> mWindow != nullptr ) {
261267 ctx.mLogger (LogSeverity::Error, " Already created." );
262268 return ErrorCode;
263269 }
@@ -277,8 +283,8 @@ ret_code Renderer::initScreen(Context &ctx, int32_t x, int32_t y, int32_t w, int
277283 title = " TinyUI Window" ;
278284 }
279285
280- ctx.mSDLContext . mWindow = SDL_CreateWindow (title, x, y, w, h, SDL_WINDOW_SHOWN| SDL_WINDOW_OPENGL| SDL_WINDOW_RESIZABLE);
281- if (ctx.mSDLContext . mWindow == nullptr ) {
286+ ctx.mSDLContext -> mWindow = SDL_CreateWindow (title, x, y, w, h, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
287+ if (ctx.mSDLContext -> mWindow == nullptr ) {
282288 const std::string msg = " Error while SDL_CreateWindow: " + std::string (SDL_GetError ()) + " ." ;
283289 ctx.mLogger (LogSeverity::Error, msg.c_str ());
284290 return ErrorCode;
@@ -290,8 +296,8 @@ ret_code Renderer::initScreen(Context &ctx, int32_t x, int32_t y, int32_t w, int
290296 return ErrorCode;
291297 }
292298
293- ctx.mSDLContext . mRenderer = SDL_CreateRenderer (ctx.mSDLContext . mWindow , driverIndex, SDL_RENDERER_ACCELERATED);
294- if (nullptr == ctx.mSDLContext . mRenderer ) {
299+ ctx.mSDLContext -> mRenderer = SDL_CreateRenderer (ctx.mSDLContext -> mWindow , driverIndex, SDL_RENDERER_ACCELERATED);
300+ if (nullptr == ctx.mSDLContext -> mRenderer ) {
295301 const std::string msg = " Error while SDL_CreateRenderer: " + std::string (SDL_GetError ()) + " ." ;
296302 ctx.mLogger (LogSeverity::Error, msg.c_str ());
297303 return ErrorCode;
@@ -303,8 +309,8 @@ ret_code Renderer::initScreen(Context &ctx, int32_t x, int32_t y, int32_t w, int
303309
304310 showDriverInUse (ctx);
305311
306- ctx.mSDLContext . mSurface = SDL_GetWindowSurface (ctx.mSDLContext . mWindow );
307- if (ctx.mSDLContext . mSurface == nullptr ) {
312+ ctx.mSDLContext -> mSurface = SDL_GetWindowSurface (ctx.mSDLContext -> mWindow );
313+ if (ctx.mSDLContext -> mSurface == nullptr ) {
308314 ctx.mLogger (LogSeverity::Error, " Surface pointer from window is nullptr." );
309315 return ErrorCode;
310316 }
@@ -325,13 +331,13 @@ ret_code Renderer::initScreen(Context &ctx, SDL_Window *window, SDL_Renderer *re
325331
326332 TTF_Init ();
327333
328- ctx.mSDLContext . mRenderer = renderer;
329- ctx.mSDLContext . mWindow = window;
334+ ctx.mSDLContext -> mRenderer = renderer;
335+ ctx.mSDLContext -> mWindow = window;
330336
331337 showDriverInUse (ctx);
332338
333- ctx.mSDLContext . mSurface = SDL_GetWindowSurface (ctx.mSDLContext . mWindow );
334- ctx.mSDLContext . mOwner = false ;
339+ ctx.mSDLContext -> mSurface = SDL_GetWindowSurface (ctx.mSDLContext -> mWindow );
340+ ctx.mSDLContext -> mOwner = false ;
335341 ctx.mCreated = true ;
336342
337343 return ResultOk;
@@ -343,8 +349,8 @@ ret_code Renderer::releaseScreen(Context &ctx) {
343349 return ErrorCode;
344350 }
345351
346- SDL_DestroyWindow (ctx.mSDLContext . mWindow );
347- ctx.mSDLContext . mWindow = nullptr ;
352+ SDL_DestroyWindow (ctx.mSDLContext -> mWindow );
353+ ctx.mSDLContext -> mWindow = nullptr ;
348354
349355 return ResultOk;
350356}
@@ -356,19 +362,19 @@ ret_code Renderer::beginRender(Context &ctx, Color4 bg, SDL_Texture *renderTarge
356362 }
357363
358364 const SDL_Color sdl_bg = getSDLColor (bg);
359- SDL_SetRenderDrawColor (ctx.mSDLContext . mRenderer , sdl_bg.r , sdl_bg.g , sdl_bg.b , sdl_bg.a );
360- SDL_RenderClear (ctx.mSDLContext . mRenderer );
365+ SDL_SetRenderDrawColor (ctx.mSDLContext -> mRenderer , sdl_bg.r , sdl_bg.g , sdl_bg.b , sdl_bg.a );
366+ SDL_RenderClear (ctx.mSDLContext -> mRenderer );
361367
362368 return ResultOk;
363369}
364370
365371ret_code Renderer::drawRect (Context &ctx, int32_t x, int32_t y, int32_t w, int32_t h, bool filled, Color4 fg) {
366372 SDL_Rect r = {x, y, w, h};
367- SDL_SetRenderDrawColor (ctx.mSDLContext . mRenderer , fg.r , fg.g , fg.b , fg.a );
373+ SDL_SetRenderDrawColor (ctx.mSDLContext -> mRenderer , fg.r , fg.g , fg.b , fg.a );
368374 if (filled) {
369- SDL_RenderFillRect (ctx.mSDLContext . mRenderer , &r);
375+ SDL_RenderFillRect (ctx.mSDLContext -> mRenderer , &r);
370376 } else {
371- SDL_RenderDrawRect (ctx.mSDLContext . mRenderer , &r);
377+ SDL_RenderDrawRect (ctx.mSDLContext -> mRenderer , &r);
372378 }
373379
374380 return ResultOk;
@@ -380,28 +386,28 @@ ret_code Renderer::drawImage(Context &ctx, int32_t x, int32_t y, int32_t w, int3
380386 }
381387
382388 SDL_Rect imageRect = {x, y, w, h};
383- SDL_Texture *tex = SDL_CreateTextureFromSurface (ctx.mSDLContext . mRenderer , image->mSurfaceImpl ->mSurface );
384- SDL_RenderCopy (ctx.mSDLContext . mRenderer , tex, nullptr , &imageRect);
389+ SDL_Texture *tex = SDL_CreateTextureFromSurface (ctx.mSDLContext -> mRenderer , image->mSurfaceImpl ->mSurface );
390+ SDL_RenderCopy (ctx.mSDLContext -> mRenderer , tex, nullptr , &imageRect);
385391 SDL_DestroyTexture (tex);
386392
387393 return ResultOk;
388394}
389395
390396ret_code Renderer::closeScreen (Context &ctx) {
391- if (ctx.mSDLContext . mWindow == nullptr ) {
397+ if (ctx.mSDLContext -> mWindow == nullptr ) {
392398 return ErrorCode;
393399 }
394400
395401 TTF_Quit ();
396402
397- SDL_DestroyWindow (ctx.mSDLContext . mWindow );
398- ctx.mSDLContext . mWindow = nullptr ;
403+ SDL_DestroyWindow (ctx.mSDLContext -> mWindow );
404+ ctx.mSDLContext -> mWindow = nullptr ;
399405
400406 return ResultOk;
401407}
402408
403409ret_code Renderer::endRender (Context &ctx) {
404- SDL_RenderPresent (ctx.mSDLContext . mRenderer );
410+ SDL_RenderPresent (ctx.mSDLContext -> mRenderer );
405411
406412 return ResultOk;
407413}
@@ -410,7 +416,7 @@ ret_code Renderer::createRenderTexture(Context &ctx, int w, int h, SDL_Texture *
410416 if (texture == nullptr ) {
411417 return ErrorCode;
412418 }
413- *texture = SDL_CreateTexture (ctx.mSDLContext . mRenderer , SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, w, h);
419+ *texture = SDL_CreateTexture (ctx.mSDLContext -> mRenderer , SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, w, h);
414420
415421 return ResultOk;
416422}
0 commit comments