From b5654a2464b02dc0bc8177d75db24236923e6ad2 Mon Sep 17 00:00:00 2001 From: comex Date: Thu, 27 Mar 2014 23:52:27 -0400 Subject: [PATCH 1/2] Don't cast -1 to enum to represent a missing value. This is undefined behavior in C++, and a clang warning suggests it is actually producing bad code as a result: ../Source/Core/VideoCommon/BPFunctions.cpp:164:45: warning: comparison of constant 4294967295 with expression of type 'PEControl::PixelFormat' is always false [-Wtautological-constant-out-of-range-compare] if (new_format == old_format || old_format == (unsigned int)-1) --- Source/Core/VideoCommon/BPFunctions.cpp | 2 +- Source/Core/VideoCommon/BPMemory.h | 17 +++++++++-------- Source/Core/VideoCommon/RenderBase.cpp | 4 ++-- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Source/Core/VideoCommon/BPFunctions.cpp b/Source/Core/VideoCommon/BPFunctions.cpp index 58362f1a57..9bc9b4d3dd 100644 --- a/Source/Core/VideoCommon/BPFunctions.cpp +++ b/Source/Core/VideoCommon/BPFunctions.cpp @@ -161,7 +161,7 @@ void OnPixelFormatChange() auto new_format = bpmem.zcontrol.pixel_format; // no need to reinterpret pixel data in these cases - if (new_format == old_format || old_format == (unsigned int)-1) + if (new_format == old_format || old_format == PEControl::INVALID_FMT) goto skip; // Check for pixel format changes diff --git a/Source/Core/VideoCommon/BPMemory.h b/Source/Core/VideoCommon/BPMemory.h index b5466097ac..5332c3e8d4 100644 --- a/Source/Core/VideoCommon/BPMemory.h +++ b/Source/Core/VideoCommon/BPMemory.h @@ -779,14 +779,15 @@ union PEControl { enum PixelFormat : u32 { - RGB8_Z24 = 0, - RGBA6_Z24 = 1, - RGB565_Z16 = 2, - Z24 = 3, - Y8 = 4, - U8 = 5, - V8 = 6, - YUV420 = 7 + RGB8_Z24 = 0, + RGBA6_Z24 = 1, + RGB565_Z16 = 2, + Z24 = 3, + Y8 = 4, + U8 = 5, + V8 = 6, + YUV420 = 7, + INVALID_FMT = 0xffffffff, // Used by Dolphin to represent a missing value. }; enum DepthFormat : u32 diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 12dc7b4bfc..8b42d1c23b 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -64,7 +64,7 @@ int Renderer::s_LastEFBScale; bool Renderer::s_skipSwap; bool Renderer::XFBWrited; -PEControl::PixelFormat Renderer::prev_efb_format = (PEControl::PixelFormat)-1; +PEControl::PixelFormat Renderer::prev_efb_format = PEControl::INVALID_FMT; unsigned int Renderer::efb_scale_numeratorX = 1; unsigned int Renderer::efb_scale_numeratorY = 1; unsigned int Renderer::efb_scale_denominatorX = 1; @@ -89,7 +89,7 @@ Renderer::Renderer() Renderer::~Renderer() { // invalidate previous efb format - prev_efb_format = (PEControl::PixelFormat)-1; + prev_efb_format = PEControl::INVALID_FMT; efb_scale_numeratorX = efb_scale_numeratorY = efb_scale_denominatorX = efb_scale_denominatorY = 1; From 92dd498fa70ea953a62731dfbeb08f89a76bc49a Mon Sep 17 00:00:00 2001 From: comex Date: Thu, 27 Mar 2014 23:55:30 -0400 Subject: [PATCH 2/2] Fix harmless warnings. --- Source/Core/DolphinWX/ISOProperties.cpp | 2 +- Source/Core/VideoBackends/OGL/RasterFont.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Core/DolphinWX/ISOProperties.cpp b/Source/Core/DolphinWX/ISOProperties.cpp index f3076c56f0..decbb3927c 100644 --- a/Source/Core/DolphinWX/ISOProperties.cpp +++ b/Source/Core/DolphinWX/ISOProperties.cpp @@ -899,7 +899,7 @@ void CISOProperties::OnExtractDataFromHeader(wxCommandEvent& event) if (DiscIO::IsVolumeWiiDisc(OpenISO)) { wxString Directory = m_Treectrl->GetItemText(m_Treectrl->GetSelection()); - int partitionNum = wxAtoi(Directory.Mid(Directory.find_first_of("0123456789"), 2)); + unsigned int partitionNum = wxAtoi(Directory.Mid(Directory.find_first_of("0123456789"), 2)); if (WiiDisc.size() > partitionNum) { diff --git a/Source/Core/VideoBackends/OGL/RasterFont.cpp b/Source/Core/VideoBackends/OGL/RasterFont.cpp index eb288d9414..8e6ad2d6c8 100644 --- a/Source/Core/VideoBackends/OGL/RasterFont.cpp +++ b/Source/Core/VideoBackends/OGL/RasterFont.cpp @@ -213,7 +213,7 @@ void RasterFont::printMultilineText(const std::string& text, double start_x, dou continue; } - if (c < char_offset || c >= char_count+char_offset) + if ((u32) c < char_offset || (u32) c >= char_count+char_offset) continue; vertices[usage++] = x;