From afe14829b8aa8d3a159c5ab85f8c07b9121a5fc1 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Wed, 25 Jun 2014 00:43:10 -0700 Subject: [PATCH] Fixed bug 2556 - add compilation flag -Wshadow Sylvain here's the full patch for Blit + RLE. --- configure | 2 +- configure.in | 2 +- src/thread/SDL_thread.c | 6 ++-- src/video/SDL_RLEaccel.c | 70 ++++++++++++++++++------------------ src/video/SDL_blit.h | 18 +++++----- src/video/SDL_video.c | 37 ++++++++++--------- src/video/x11/SDL_x11modes.c | 5 ++- src/video/x11/edid-parse.c | 2 +- 8 files changed, 75 insertions(+), 67 deletions(-) diff --git a/configure b/configure index 799d1755e..efca355fb 100755 --- a/configure +++ b/configure @@ -23374,7 +23374,7 @@ $as_echo "#define SDL_FILESYSTEM_NACL 1" >>confdefs.h esac CheckWarnAll -#CheckWarnShadow +CheckWarnShadow # Verify that we have all the platform specific files we need diff --git a/configure.in b/configure.in index 2ea381830..e0dfac1d2 100644 --- a/configure.in +++ b/configure.in @@ -3238,7 +3238,7 @@ esac dnl Do this on all platforms, after everything else. CheckWarnAll -#CheckWarnShadow +CheckWarnShadow # Verify that we have all the platform specific files we need diff --git a/src/thread/SDL_thread.c b/src/thread/SDL_thread.c index 6cd933311..3724f4f3c 100644 --- a/src/thread/SDL_thread.c +++ b/src/thread/SDL_thread.c @@ -442,10 +442,10 @@ SDL_DetachThread(SDL_Thread * thread) SDL_SYS_DetachThread(thread); } else { /* all other states are pretty final, see where we landed. */ - const int state = SDL_AtomicGet(&thread->state); - if ((state == SDL_THREAD_STATE_DETACHED) || (state == SDL_THREAD_STATE_CLEANED)) { + const int thread_state = SDL_AtomicGet(&thread->state); + if ((thread_state == SDL_THREAD_STATE_DETACHED) || (thread_state == SDL_THREAD_STATE_CLEANED)) { return; /* already detached (you shouldn't call this twice!) */ - } else if (state == SDL_THREAD_STATE_ZOMBIE) { + } else if (thread_state == SDL_THREAD_STATE_ZOMBIE) { SDL_WaitThread(thread, NULL); /* already done, clean it up. */ } else { SDL_assert(0 && "Unexpected thread state"); diff --git a/src/video/SDL_RLEaccel.c b/src/video/SDL_RLEaccel.c index a464dec39..58293677f 100644 --- a/src/video/SDL_RLEaccel.c +++ b/src/video/SDL_RLEaccel.c @@ -376,10 +376,10 @@ * right. Top clipping has already been taken care of. */ static void -RLEClipBlit(int w, Uint8 * srcbuf, SDL_Surface * dst, +RLEClipBlit(int w, Uint8 * srcbuf, SDL_Surface * surf_dst, Uint8 * dstbuf, SDL_Rect * srcrect, unsigned alpha) { - SDL_PixelFormat *fmt = dst->format; + SDL_PixelFormat *fmt = surf_dst->format; #define RLECLIPBLIT(bpp, Type, do_blit) \ do { \ @@ -418,7 +418,7 @@ RLEClipBlit(int w, Uint8 * srcbuf, SDL_Surface * dst, break; \ if(ofs == w) { \ ofs = 0; \ - dstbuf += dst->pitch; \ + dstbuf += surf_dst->pitch; \ if(!--linecount) \ break; \ } \ @@ -434,18 +434,18 @@ RLEClipBlit(int w, Uint8 * srcbuf, SDL_Surface * dst, /* blit a colorkeyed RLE surface */ int -SDL_RLEBlit(SDL_Surface * src, SDL_Rect * srcrect, - SDL_Surface * dst, SDL_Rect * dstrect) +SDL_RLEBlit(SDL_Surface * surf_src, SDL_Rect * srcrect, + SDL_Surface * surf_dst, SDL_Rect * dstrect) { Uint8 *dstbuf; Uint8 *srcbuf; int x, y; - int w = src->w; + int w = surf_src->w; unsigned alpha; /* Lock the destination if necessary */ - if (SDL_MUSTLOCK(dst)) { - if (SDL_LockSurface(dst) < 0) { + if (SDL_MUSTLOCK(surf_dst)) { + if (SDL_LockSurface(surf_dst) < 0) { return (-1); } } @@ -453,9 +453,9 @@ SDL_RLEBlit(SDL_Surface * src, SDL_Rect * srcrect, /* Set up the source and destination pointers */ x = dstrect->x; y = dstrect->y; - dstbuf = (Uint8 *) dst->pixels - + y * dst->pitch + x * src->format->BytesPerPixel; - srcbuf = (Uint8 *) src->map->data; + dstbuf = (Uint8 *) surf_dst->pixels + + y * surf_dst->pitch + x * surf_src->format->BytesPerPixel; + srcbuf = (Uint8 *) surf_src->map->data; { /* skip lines at the top if necessary */ @@ -481,7 +481,7 @@ SDL_RLEBlit(SDL_Surface * src, SDL_Rect * srcrect, } \ } - switch (src->format->BytesPerPixel) { + switch (surf_src->format->BytesPerPixel) { case 1: RLESKIP(1, Uint8); break; @@ -501,12 +501,12 @@ SDL_RLEBlit(SDL_Surface * src, SDL_Rect * srcrect, } } - alpha = src->map->info.a; + alpha = surf_src->map->info.a; /* if left or right edge clipping needed, call clip blit */ - if (srcrect->x || srcrect->w != src->w) { - RLEClipBlit(w, srcbuf, dst, dstbuf, srcrect, alpha); + if (srcrect->x || srcrect->w != surf_src->w) { + RLEClipBlit(w, srcbuf, surf_dst, dstbuf, srcrect, alpha); } else { - SDL_PixelFormat *fmt = src->format; + SDL_PixelFormat *fmt = surf_src->format; #define RLEBLIT(bpp, Type, do_blit) \ do { \ @@ -525,7 +525,7 @@ SDL_RLEBlit(SDL_Surface * src, SDL_Rect * srcrect, break; \ if(ofs == w) { \ ofs = 0; \ - dstbuf += dst->pitch; \ + dstbuf += surf_dst->pitch; \ if(!--linecount) \ break; \ } \ @@ -539,8 +539,8 @@ SDL_RLEBlit(SDL_Surface * src, SDL_Rect * srcrect, done: /* Unlock the destination if necessary */ - if (SDL_MUSTLOCK(dst)) { - SDL_UnlockSurface(dst); + if (SDL_MUSTLOCK(surf_dst)) { + SDL_UnlockSurface(surf_dst); } return (0); } @@ -620,10 +620,10 @@ typedef struct /* blit a pixel-alpha RLE surface clipped at the right and/or left edges */ static void -RLEAlphaClipBlit(int w, Uint8 * srcbuf, SDL_Surface * dst, +RLEAlphaClipBlit(int w, Uint8 * srcbuf, SDL_Surface * surf_dst, Uint8 * dstbuf, SDL_Rect * srcrect) { - SDL_PixelFormat *df = dst->format; + SDL_PixelFormat *df = surf_dst->format; /* * clipped blitter: Ptype is the destination pixel type, * Ctype the translucent count type, and do_blend the macro @@ -693,7 +693,7 @@ RLEAlphaClipBlit(int w, Uint8 * srcbuf, SDL_Surface * dst, ofs += run; \ } \ } while(ofs < w); \ - dstbuf += dst->pitch; \ + dstbuf += surf_dst->pitch; \ } while(--linecount); \ } while(0) @@ -712,25 +712,25 @@ RLEAlphaClipBlit(int w, Uint8 * srcbuf, SDL_Surface * dst, /* blit a pixel-alpha RLE surface */ int -SDL_RLEAlphaBlit(SDL_Surface * src, SDL_Rect * srcrect, - SDL_Surface * dst, SDL_Rect * dstrect) +SDL_RLEAlphaBlit(SDL_Surface * surf_src, SDL_Rect * srcrect, + SDL_Surface * surf_dst, SDL_Rect * dstrect) { int x, y; - int w = src->w; + int w = surf_src->w; Uint8 *srcbuf, *dstbuf; - SDL_PixelFormat *df = dst->format; + SDL_PixelFormat *df = surf_dst->format; /* Lock the destination if necessary */ - if (SDL_MUSTLOCK(dst)) { - if (SDL_LockSurface(dst) < 0) { + if (SDL_MUSTLOCK(surf_dst)) { + if (SDL_LockSurface(surf_dst) < 0) { return -1; } } x = dstrect->x; y = dstrect->y; - dstbuf = (Uint8 *) dst->pixels + y * dst->pitch + x * df->BytesPerPixel; - srcbuf = (Uint8 *) src->map->data + sizeof(RLEDestFormat); + dstbuf = (Uint8 *) surf_dst->pixels + y * surf_dst->pitch + x * df->BytesPerPixel; + srcbuf = (Uint8 *) surf_src->map->data + sizeof(RLEDestFormat); { /* skip lines at the top if necessary */ @@ -789,8 +789,8 @@ SDL_RLEAlphaBlit(SDL_Surface * src, SDL_Rect * srcrect, } /* if left or right edge clipping needed, call clip blit */ - if (srcrect->x || srcrect->w != src->w) { - RLEAlphaClipBlit(w, srcbuf, dst, dstbuf, srcrect); + if (srcrect->x || srcrect->w != surf_src->w) { + RLEAlphaClipBlit(w, srcbuf, surf_dst, dstbuf, srcrect); } else { /* @@ -839,7 +839,7 @@ SDL_RLEAlphaBlit(SDL_Surface * src, SDL_Rect * srcrect, ofs += run; \ } \ } while(ofs < w); \ - dstbuf += dst->pitch; \ + dstbuf += surf_dst->pitch; \ } while(--linecount); \ } while(0) @@ -859,8 +859,8 @@ SDL_RLEAlphaBlit(SDL_Surface * src, SDL_Rect * srcrect, done: /* Unlock the destination if necessary */ - if (SDL_MUSTLOCK(dst)) { - SDL_UnlockSurface(dst); + if (SDL_MUSTLOCK(surf_dst)) { + SDL_UnlockSurface(surf_dst); } return 0; } diff --git a/src/video/SDL_blit.h b/src/video/SDL_blit.h index caf6c00f3..f12018d83 100644 --- a/src/video/SDL_blit.h +++ b/src/video/SDL_blit.h @@ -402,18 +402,18 @@ do { \ { \ switch (bpp) { \ case 1: { \ - Uint8 Pixel; \ + Uint8 _pixel; \ \ - PIXEL_FROM_RGBA(Pixel, fmt, r, g, b, a); \ - *((Uint8 *)(buf)) = Pixel; \ + PIXEL_FROM_RGBA(_pixel, fmt, r, g, b, a); \ + *((Uint8 *)(buf)) = _pixel; \ } \ break; \ \ case 2: { \ - Uint16 Pixel; \ + Uint16 _pixel; \ \ - PIXEL_FROM_RGBA(Pixel, fmt, r, g, b, a); \ - *((Uint16 *)(buf)) = Pixel; \ + PIXEL_FROM_RGBA(_pixel, fmt, r, g, b, a); \ + *((Uint16 *)(buf)) = _pixel; \ } \ break; \ \ @@ -431,10 +431,10 @@ do { \ break; \ \ case 4: { \ - Uint32 Pixel; \ + Uint32 _pixel; \ \ - PIXEL_FROM_RGBA(Pixel, fmt, r, g, b, a); \ - *((Uint32 *)(buf)) = Pixel; \ + PIXEL_FROM_RGBA(_pixel, fmt, r, g, b, a); \ + *((Uint32 *)(buf)) = _pixel; \ } \ break; \ } \ diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index dc6cf37b9..11492f608 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -232,16 +232,13 @@ ShouldUseTextureFramebuffer() } static int -SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch) +SDL_CreateWindowTexture(SDL_VideoDevice *unused, SDL_Window * window, Uint32 * format, void ** pixels, int *pitch) { SDL_WindowTextureData *data; - SDL_RendererInfo info; - Uint32 i; data = SDL_GetWindowData(window, SDL_WINDOWTEXTUREDATA); if (!data) { SDL_Renderer *renderer = NULL; - SDL_RendererInfo info; int i; const char *hint = SDL_GetHint(SDL_HINT_FRAMEBUFFER_ACCELERATION); @@ -249,6 +246,7 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix if (hint && *hint != '0' && *hint != '1' && SDL_strcasecmp(hint, "software") != 0) { for (i = 0; i < SDL_GetNumRenderDrivers(); ++i) { + SDL_RendererInfo info; SDL_GetRenderDriverInfo(i, &info); if (SDL_strcasecmp(info.name, hint) == 0) { renderer = SDL_CreateRenderer(window, i, 0); @@ -259,6 +257,7 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix if (!renderer) { for (i = 0; i < SDL_GetNumRenderDrivers(); ++i) { + SDL_RendererInfo info; SDL_GetRenderDriverInfo(i, &info); if (SDL_strcmp(info.name, "software") != 0) { renderer = SDL_CreateRenderer(window, i, 0); @@ -291,17 +290,23 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix SDL_free(data->pixels); data->pixels = NULL; - if (SDL_GetRendererInfo(data->renderer, &info) < 0) { - return -1; - } + { + SDL_RendererInfo info; + Uint32 i; - /* Find the first format without an alpha channel */ - *format = info.texture_formats[0]; - for (i = 0; i < info.num_texture_formats; ++i) { - if (!SDL_ISPIXELFORMAT_FOURCC(info.texture_formats[i]) && - !SDL_ISPIXELFORMAT_ALPHA(info.texture_formats[i])) { - *format = info.texture_formats[i]; - break; + if (SDL_GetRendererInfo(data->renderer, &info) < 0) { + return -1; + } + + /* Find the first format without an alpha channel */ + *format = info.texture_formats[0]; + + for (i = 0; i < info.num_texture_formats; ++i) { + if (!SDL_ISPIXELFORMAT_FOURCC(info.texture_formats[i]) && + !SDL_ISPIXELFORMAT_ALPHA(info.texture_formats[i])) { + *format = info.texture_formats[i]; + break; + } } } @@ -330,7 +335,7 @@ SDL_CreateWindowTexture(_THIS, SDL_Window * window, Uint32 * format, void ** pix } static int -SDL_UpdateWindowTexture(_THIS, SDL_Window * window, const SDL_Rect * rects, int numrects) +SDL_UpdateWindowTexture(SDL_VideoDevice *unused, SDL_Window * window, const SDL_Rect * rects, int numrects) { SDL_WindowTextureData *data; SDL_Rect rect; @@ -360,7 +365,7 @@ SDL_UpdateWindowTexture(_THIS, SDL_Window * window, const SDL_Rect * rects, int } static void -SDL_DestroyWindowTexture(_THIS, SDL_Window * window) +SDL_DestroyWindowTexture(SDL_VideoDevice *unused, SDL_Window * window) { SDL_WindowTextureData *data; diff --git a/src/video/x11/SDL_x11modes.c b/src/video/x11/SDL_x11modes.c index 6336f0cab..cd7b38c50 100644 --- a/src/video/x11/SDL_x11modes.c +++ b/src/video/x11/SDL_x11modes.c @@ -674,7 +674,6 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display) int screen_w; int screen_h; SDL_DisplayMode mode; - SDL_DisplayModeData *modedata; /* Unfortunately X11 requires the window to be created with the correct * visual and depth ahead of time, but the SDL API allows you to create @@ -692,6 +691,7 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display) if (data->use_xinerama) { if (data->use_vidmode && !data->xinerama_info.x_org && !data->xinerama_info.y_org && (screen_w > data->xinerama_info.width || screen_h > data->xinerama_info.height)) { + SDL_DisplayModeData *modedata; /* Add the full (both screens combined) xinerama mode only on the display that starts at 0,0 * if we're using vidmode. */ @@ -707,6 +707,7 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display) } else if (!data->use_xrandr) { + SDL_DisplayModeData *modedata; /* Add the current mode of each monitor otherwise if we can't get them from xrandr */ mode.w = data->xinerama_info.width; mode.h = data->xinerama_info.height; @@ -759,6 +760,7 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display) if (data->use_vidmode && X11_XF86VidModeGetAllModeLines(display, data->vidmode_screen, &nmodes, &modes)) { int i; + SDL_DisplayModeData *modedata; #ifdef X11MODES_DEBUG printf("VidMode modes: (unsorted)\n"); @@ -787,6 +789,7 @@ X11_GetDisplayModes(_THIS, SDL_VideoDisplay * sdl_display) #endif /* SDL_VIDEO_DRIVER_X11_XVIDMODE */ if (!data->use_xrandr && !data->use_vidmode) { + SDL_DisplayModeData *modedata; /* Add the desktop mode */ mode = sdl_display->desktop_mode; modedata = (SDL_DisplayModeData *) SDL_calloc(1, sizeof(SDL_DisplayModeData)); diff --git a/src/video/x11/edid-parse.c b/src/video/x11/edid-parse.c index 8608bf254..2c145e23c 100644 --- a/src/video/x11/edid-parse.c +++ b/src/video/x11/edid-parse.c @@ -548,7 +548,6 @@ yesno (int v) void dump_monitor_info (MonitorInfo *info) { - char *s; int i; printf ("Checksum: %d (%s)\n", @@ -601,6 +600,7 @@ dump_monitor_info (MonitorInfo *info) } else { + const char *s; printf ("Video Signal Level: %f\n", info->analog.video_signal_level); printf ("Sync Signal Level: %f\n", info->analog.sync_signal_level); printf ("Total Signal Level: %f\n", info->analog.total_signal_level);