diff --git a/bzip2/CHANGES b/bzip2/CHANGES index 81e97ca6fa..d9b4c05c52 100644 --- a/bzip2/CHANGES +++ b/bzip2/CHANGES @@ -2,8 +2,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. @@ -325,3 +325,16 @@ Security fix only. Fixes CERT-FI 20469 as it applies to bzip2. Izdebski. * Make the documentation build on Ubuntu 10.04 + +1.0.7 (27 Jun 19) +~~~~~~~~~~~~~~~~~ + +* Fix undefined behavior in the macros SET_BH, CLEAR_BH, & ISSET_BH + +* bzip2: Fix return value when combining --test,-t and -q. + +* bzip2recover: Fix buffer overflow for large argv[0] + +* bzip2recover: Fix use after free issue with outFile (CVE-2016-3189) + +* Make sure nSelectors is not out of range (CVE-2019-12900) diff --git a/bzip2/LICENSE b/bzip2/LICENSE index cc614178cf..95f9598f84 100644 --- a/bzip2/LICENSE +++ b/bzip2/LICENSE @@ -36,7 +36,7 @@ WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Julian Seward, jseward@bzip.org -bzip2/libbzip2 version 1.0.6 of 6 September 2010 +Julian Seward, jseward@acm.org +bzip2/libbzip2 version 1.0.7 of 27 June 2019 -------------------------------------------------------------------------- diff --git a/bzip2/README b/bzip2/README index 9fb0f63601..64873f9826 100644 --- a/bzip2/README +++ b/bzip2/README @@ -6,8 +6,8 @@ This version is fully compatible with the previous public releases. This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. -bzip2/libbzip2 version 1.0.6 of 6 September 2010 -Copyright (C) 1996-2010 Julian Seward +bzip2/libbzip2 version 1.0.7 of 27 June 2019 +Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in this file. @@ -73,7 +73,7 @@ HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc. It's difficult for me to support compilation on all these platforms. My approach is to collect binaries for these platforms, and put them -on the master web site (http://www.bzip.org). Look there. However +on the master web site (https://sourceware.org/bzip2/). Look there. However (FWIW), bzip2-1.0.X is very standard ANSI C and should compile unmodified with MS Visual C. If you have difficulties building, you might want to read README.COMPILATION.PROBLEMS. @@ -161,43 +161,22 @@ WHAT'S NEW IN 0.9.5 ? * Many small improvements in file and flag handling. * A Y2K statement. -WHAT'S NEW IN 1.0.0 ? +WHAT'S NEW IN 1.0.x ? See the CHANGES file. -WHAT'S NEW IN 1.0.2 ? - - See the CHANGES file. - -WHAT'S NEW IN 1.0.3 ? - - See the CHANGES file. - -WHAT'S NEW IN 1.0.4 ? - - See the CHANGES file. - -WHAT'S NEW IN 1.0.5 ? - - See the CHANGES file. - -WHAT'S NEW IN 1.0.6 ? - - See the CHANGES file. - - I hope you find bzip2 useful. Feel free to contact me at - jseward@bzip.org + jseward@acm.org if you have any suggestions or queries. Many people mailed me with comments, suggestions and patches after the releases of bzip-0.15, bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this feedback. I thank you for your comments. -bzip2's "home" is http://www.bzip.org/ +bzip2's "home" is https://sourceware.org/bzip2/ Julian Seward -jseward@bzip.org +jseward@acm.org Cambridge, UK. 18 July 1996 (version 0.15) @@ -213,3 +192,4 @@ Cambridge, UK. 20 December 2006 (bzip2, version 1.0.4) 10 December 2007 (bzip2, version 1.0.5) 6 Sept 2010 (bzip2, version 1.0.6) +27 June 2019 (bzip2, version 1.0.7) diff --git a/bzip2/blocksort.c b/bzip2/blocksort.c index d0d662cd4e..26579017af 100644 --- a/bzip2/blocksort.c +++ b/bzip2/blocksort.c @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. @@ -202,9 +202,9 @@ void fallbackQSort3 ( UInt32* fmap, bhtab [ 0 .. 2+(nblock/32) ] destroyed */ -#define SET_BH(zz) bhtab[(zz) >> 5] |= (1 << ((zz) & 31)) -#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31)) -#define ISSET_BH(zz) (bhtab[(zz) >> 5] & (1 << ((zz) & 31))) +#define SET_BH(zz) bhtab[(zz) >> 5] |= ((UInt32)1 << ((zz) & 31)) +#define CLEAR_BH(zz) bhtab[(zz) >> 5] &= ~((UInt32)1 << ((zz) & 31)) +#define ISSET_BH(zz) (bhtab[(zz) >> 5] & ((UInt32)1 << ((zz) & 31))) #define WORD_BH(zz) bhtab[(zz) >> 5] #define UNALIGNED_BH(zz) ((zz) & 0x01f) diff --git a/bzip2/bzlib.c b/bzip2/bzlib.c index 9db864ef2d..f9da295c75 100644 --- a/bzip2/bzlib.c +++ b/bzip2/bzlib.c @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. @@ -43,7 +43,7 @@ void BZ2_bz__AssertH__fail ( int errcode ) fprintf(stderr, "\n\nbzip2/libbzip2: internal error number %d.\n" "This is a bug in bzip2/libbzip2, %s.\n" - "Please report it to me at: jseward@bzip.org. If this happened\n" + "Please report it to me at: jseward@acm.org. If this happened\n" "when you were using some program which uses libbzip2 as a\n" "component, you should also report this bug to the author(s)\n" "of that program. Please make an effort to report this bug;\n" @@ -1234,7 +1234,7 @@ void BZ_API(BZ2_bzReadGetUnused) BZ_SETERR(BZ_OK); *nUnused = bzf->strm.avail_in; - *unused = (void **)bzf->strm.next_in; + *unused = bzf->strm.next_in; } #endif @@ -1247,7 +1247,7 @@ void BZ_API(BZ2_bzReadGetUnused) int BZ_API(BZ2_bzBuffToBuffCompress) ( char* dest, unsigned int* destLen, - const char* source, + char* source, unsigned int sourceLen, int blockSize100k, int verbosity, @@ -1299,7 +1299,7 @@ int BZ_API(BZ2_bzBuffToBuffCompress) int BZ_API(BZ2_bzBuffToBuffDecompress) ( char* dest, unsigned int* destLen, - const char* source, + char* source, unsigned int sourceLen, int small, int verbosity ) diff --git a/bzip2/bzlib.h b/bzip2/bzlib.h index 8a6e58f0a5..8cf07918f8 100644 --- a/bzip2/bzlib.h +++ b/bzip2/bzlib.h @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. @@ -47,7 +47,7 @@ extern "C" { typedef struct { - const char *next_in; + char *next_in; unsigned int avail_in; unsigned int total_in_lo32; unsigned int total_in_hi32; @@ -75,8 +75,24 @@ typedef #include #endif -#define BZ_API(func) func -#define BZ_EXTERN extern +#ifdef _WIN32 +# include +# ifdef small + /* windows.h define small to char */ +# undef small +# endif +# ifdef BZ_EXPORT +# define BZ_API(func) WINAPI func +# define BZ_EXTERN extern +# else + /* import windows dll dynamically */ +# define BZ_API(func) (WINAPI * func) +# define BZ_EXTERN +# endif +#else +# define BZ_API(func) func +# define BZ_EXTERN extern +#endif /*-- Core (low-level) library functions --*/ @@ -100,7 +116,7 @@ BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( bz_stream *strm, int verbosity, - int lowmem + int small ); BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( @@ -124,7 +140,7 @@ BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( int* bzerror, FILE* f, int verbosity, - int lowmem, + int small, void* unused, int nUnused ); @@ -188,7 +204,7 @@ BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( char* dest, unsigned int* destLen, - const char* source, + char* source, unsigned int sourceLen, int blockSize100k, int verbosity, @@ -198,9 +214,9 @@ BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( char* dest, unsigned int* destLen, - const char* source, + char* source, unsigned int sourceLen, - int lowmem, + int small, int verbosity ); diff --git a/bzip2/bzlib_private.h b/bzip2/bzlib_private.h index 5d0217f463..797555222d 100644 --- a/bzip2/bzlib_private.h +++ b/bzip2/bzlib_private.h @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. @@ -36,7 +36,7 @@ /*-- General stuff. --*/ -#define BZ_VERSION "1.0.6, 6-Sept-2010" +#define BZ_VERSION "1.0.7, 27-Jun-2019" typedef char Char; typedef unsigned char Bool; diff --git a/bzip2/compress.c b/bzip2/compress.c index 9e944ab673..237620d858 100644 --- a/bzip2/compress.c +++ b/bzip2/compress.c @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. @@ -202,7 +202,7 @@ void generateMTFValues ( EState* s ) *ryy_j = rtmp2; }; yy[0] = rtmp; - j = (Int32)(ryy_j - &(yy[0])); + j = ryy_j - &(yy[0]); mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++; } diff --git a/bzip2/crctable.c b/bzip2/crctable.c index 1fea7e946c..746efac1cd 100644 --- a/bzip2/crctable.c +++ b/bzip2/crctable.c @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. diff --git a/bzip2/decompress.c b/bzip2/decompress.c index 311f5668f9..20ce4936cd 100644 --- a/bzip2/decompress.c +++ b/bzip2/decompress.c @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. @@ -285,9 +285,9 @@ Int32 BZ2_decompress ( DState* s ) /*--- Now the selectors ---*/ GET_BITS(BZ_X_SELECTOR_1, nGroups, 3); - if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR); + if (nGroups < 2 || nGroups > BZ_N_GROUPS) RETURN(BZ_DATA_ERROR); GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15); - if (nSelectors < 1) RETURN(BZ_DATA_ERROR); + if (nSelectors < 1 || nSelectors > BZ_MAX_SELECTORS) RETURN(BZ_DATA_ERROR); for (i = 0; i < nSelectors; i++) { j = 0; while (True) { diff --git a/bzip2/huffman.c b/bzip2/huffman.c index 2283fdbc5a..0fd6fd762c 100644 --- a/bzip2/huffman.c +++ b/bzip2/huffman.c @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. diff --git a/bzip2/randtable.c b/bzip2/randtable.c index 6d62459906..726d62f0ca 100644 --- a/bzip2/randtable.c +++ b/bzip2/randtable.c @@ -8,8 +8,8 @@ This file is part of bzip2/libbzip2, a program and library for lossless, block-sorting data compression. - bzip2/libbzip2 version 1.0.6 of 6 September 2010 - Copyright (C) 1996-2010 Julian Seward + bzip2/libbzip2 version 1.0.7 of 27 June 2019 + Copyright (C) 1996-2010 Julian Seward Please read the WARNING, DISCLAIMER and PATENTS sections in the README file. diff --git a/src/d_main.cpp b/src/d_main.cpp index 12504081ca..8a56a672b8 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -733,27 +733,33 @@ void D_Display () wipegamestate = gamestate; } // No wipes when in a stereo3D VR mode - else if (gamestate != wipegamestate && gamestate != GS_FULLCONSOLE && gamestate != GS_TITLELEVEL && (vr_mode == 0 || vid_rendermode != 4)) - { // save the current screen if about to wipe - wipe = screen->WipeStartScreen (); - switch (wipegamestate) + else if (gamestate != wipegamestate && gamestate != GS_FULLCONSOLE && gamestate != GS_TITLELEVEL) + { + if (vr_mode == 0 || vid_rendermode != 4) { - default: - wipe_type = wipetype; - break; + // save the current screen if about to wipe + wipe = screen->WipeStartScreen (); - case GS_FORCEWIPEFADE: - wipe_type = wipe_Fade; - break; + switch (wipegamestate) + { + default: + wipe_type = wipetype; + break; - case GS_FORCEWIPEBURN: - wipe_type =wipe_Burn; - break; + case GS_FORCEWIPEFADE: + wipe_type = wipe_Fade; + break; - case GS_FORCEWIPEMELT: - wipe_type = wipe_Melt; - break; + case GS_FORCEWIPEBURN: + wipe_type = wipe_Burn; + break; + + case GS_FORCEWIPEMELT: + wipe_type = wipe_Melt; + break; + } } + wipegamestate = gamestate; } else diff --git a/src/events.cpp b/src/events.cpp index 935249d865..bb91ca8b06 100755 --- a/src/events.cpp +++ b/src/events.cpp @@ -491,6 +491,14 @@ void EventManager::RenderOverlay(EHudState state) handler->RenderOverlay(state); } +void EventManager::RenderUnderlay(EHudState state) +{ + if (ShouldCallStatic(false)) staticEventManager.RenderUnderlay(state); + + for (DStaticEventHandler* handler = FirstEventHandler; handler; handler = handler->next) + handler->RenderUnderlay(state); +} + bool EventManager::CheckUiProcessors() { if (ShouldCallStatic(false)) @@ -960,6 +968,19 @@ void DStaticEventHandler::RenderOverlay(EHudState state) } } +void DStaticEventHandler::RenderUnderlay(EHudState state) +{ + IFVIRTUAL(DStaticEventHandler, RenderUnderlay) + { + // don't create excessive DObjects if not going to be processed anyway + if (isEmpty(func)) return; + FRenderEvent e = owner->SetupRenderEvent(); + e.HudState = int(state); + VMValue params[2] = { (DStaticEventHandler*)this, &e }; + VMCall(func, params, 2, nullptr, 0); + } +} + void DStaticEventHandler::PlayerEntered(int num, bool fromhub) { IFVIRTUAL(DStaticEventHandler, PlayerEntered) diff --git a/src/events.h b/src/events.h index a2c5e67aa5..52bf9ac217 100755 --- a/src/events.h +++ b/src/events.h @@ -91,6 +91,7 @@ public: // void RenderFrame(); void RenderOverlay(EHudState state); + void RenderUnderlay(EHudState state); // void PlayerEntered(int num, bool fromhub); @@ -289,6 +290,8 @@ struct EventManager void RenderFrame(); // called after everything's been rendered, but before console/menus void RenderOverlay(EHudState state); + // called after everything's been rendered, but before console/menus/huds + void RenderUnderlay(EHudState state); // this executes when a player enters the level (once). PlayerEnter+inhub = RETURN void PlayerEntered(int num, bool fromhub); // this executes when a player respawns. includes resurrect cheat. diff --git a/src/g_statusbar/shared_sbar.cpp b/src/g_statusbar/shared_sbar.cpp index a9dbf43e83..539b324645 100644 --- a/src/g_statusbar/shared_sbar.cpp +++ b/src/g_statusbar/shared_sbar.cpp @@ -1296,6 +1296,7 @@ void DBaseStatusBar::SetMugShotState(const char *stateName, bool waitTillDone, b void DBaseStatusBar::DrawBottomStuff (EHudState state) { + primaryLevel->localEventManager->RenderUnderlay(state); DrawMessages (HUDMSGLayer_UnderHUD, (state == HUD_StatusBar) ? GetTopOfStatusbar() : SCREENHEIGHT); } diff --git a/src/maploader/compatibility.cpp b/src/maploader/compatibility.cpp index 63586a1a71..bf9d389c7d 100644 --- a/src/maploader/compatibility.cpp +++ b/src/maploader/compatibility.cpp @@ -54,6 +54,7 @@ #include "actor.h" #include "p_setup.h" #include "maploader/maploader.h" +#include "types.h" // MACROS ------------------------------------------------------------------ @@ -365,11 +366,21 @@ void MapLoader::SetCompatibilityParams(FName checksum) if (cls->IsDescendantOf(RUNTIME_CLASS(DLevelCompatibility))) { PFunction *const func = dyn_cast(cls->FindSymbol("Apply", false)); - if (func != nullptr) + if (func == nullptr) { - VMValue param[] = { lc, checksum.GetIndex(), &Level->MapName }; - VMCall(func->Variants[0].Implementation, param, 3, nullptr, 0); + Printf("Missing 'Apply' method in class '%s', level compatibility object ignored\n", cls->TypeName.GetChars()); + continue; } + + auto argTypes = func->Variants[0].Proto->ArgumentTypes; + if (argTypes.Size() != 3 || argTypes[1] != TypeName || argTypes[2] != TypeString) + { + Printf("Wrong signature of 'Apply' method in class '%s', level compatibility object ignored\n", cls->TypeName.GetChars()); + continue; + } + + VMValue param[] = { lc, checksum.GetIndex(), &Level->MapName }; + VMCall(func->Variants[0].Implementation, param, 3, nullptr, 0); } } } diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index decb58b3ae..f37bd669fc 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -4259,11 +4259,12 @@ void AActor::SplashCheck() bool AActor::UpdateWaterLevel(bool dosplash) { + int oldlevel = waterlevel; + if (dosplash) SplashCheck(); double fh = -FLT_MAX; bool reset = false; - int oldlevel = waterlevel; waterlevel = 0; diff --git a/src/posix/cocoa/i_main.mm b/src/posix/cocoa/i_main.mm index c5e865ee02..5b4ea31b7e 100644 --- a/src/posix/cocoa/i_main.mm +++ b/src/posix/cocoa/i_main.mm @@ -111,6 +111,7 @@ static void I_DetectOS() case 12: name = "macOS Sierra"; break; case 13: name = "macOS High Sierra"; break; case 14: name = "macOS Mojave"; break; + case 15: name = "macOS Catalina"; break; } char release[16] = "unknown"; diff --git a/src/rendering/vulkan/system/vk_device.cpp b/src/rendering/vulkan/system/vk_device.cpp index e0b70fa821..a1c7754892 100644 --- a/src/rendering/vulkan/system/vk_device.cpp +++ b/src/rendering/vulkan/system/vk_device.cpp @@ -158,6 +158,7 @@ void VulkanDevice::SelectPhysicalDevice() if (queueFamily.queueCount > 0 && (queueFamily.queueFlags & VK_QUEUE_GRAPHICS_BIT)) { dev.graphicsFamily = i; + dev.graphicsTimeQueries = queueFamily.timestampValidBits != 0; break; } } @@ -205,6 +206,7 @@ void VulkanDevice::SelectPhysicalDevice() PhysicalDevice = *SupportedDevices[selected].device; graphicsFamily = SupportedDevices[selected].graphicsFamily; presentFamily = SupportedDevices[selected].presentFamily; + graphicsTimeQueries = SupportedDevices[selected].graphicsTimeQueries; } bool VulkanDevice::SupportsDeviceExtension(const char *ext) const diff --git a/src/rendering/vulkan/system/vk_device.h b/src/rendering/vulkan/system/vk_device.h index 7609e7fdb6..43185bd505 100644 --- a/src/rendering/vulkan/system/vk_device.h +++ b/src/rendering/vulkan/system/vk_device.h @@ -30,6 +30,7 @@ public: VulkanPhysicalDevice *device = nullptr; int graphicsFamily = -1; int presentFamily = -1; + bool graphicsTimeQueries = false; }; class VulkanDevice @@ -76,6 +77,7 @@ public: int graphicsFamily = -1; int presentFamily = -1; + bool graphicsTimeQueries = false; private: void CreateInstance(); diff --git a/src/rendering/vulkan/system/vk_framebuffer.cpp b/src/rendering/vulkan/system/vk_framebuffer.cpp index df283c60e6..17610145c1 100644 --- a/src/rendering/vulkan/system/vk_framebuffer.cpp +++ b/src/rendering/vulkan/system/vk_framebuffer.cpp @@ -172,11 +172,14 @@ void VulkanFrameBuffer::InitializeState() mRenderState.reset(new VkRenderState()); #endif - QueryPoolBuilder querybuilder; - querybuilder.setQueryType(VK_QUERY_TYPE_TIMESTAMP, MaxTimestampQueries); - mTimestampQueryPool = querybuilder.create(device); + if (device->graphicsTimeQueries) + { + QueryPoolBuilder querybuilder; + querybuilder.setQueryType(VK_QUERY_TYPE_TIMESTAMP, MaxTimestampQueries); + mTimestampQueryPool = querybuilder.create(device); - GetDrawCommands()->resetQueryPool(mTimestampQueryPool.get(), 0, MaxTimestampQueries); + GetDrawCommands()->resetQueryPool(mTimestampQueryPool.get(), 0, MaxTimestampQueries); + } } void VulkanFrameBuffer::Update() @@ -831,7 +834,7 @@ void VulkanFrameBuffer::PushGroup(const FString &name) if (!gpuStatActive) return; - if (mNextTimestampQuery < VulkanFrameBuffer::MaxTimestampQueries) + if (mNextTimestampQuery < VulkanFrameBuffer::MaxTimestampQueries && device->graphicsTimeQueries) { TimestampQuery q; q.name = name; @@ -851,7 +854,7 @@ void VulkanFrameBuffer::PopGroup() TimestampQuery &q = timeElapsedQueries[mGroupStack.back()]; mGroupStack.pop_back(); - if (mNextTimestampQuery < VulkanFrameBuffer::MaxTimestampQueries) + if (mNextTimestampQuery < VulkanFrameBuffer::MaxTimestampQueries && device->graphicsTimeQueries) { q.endIndex = mNextTimestampQuery++; GetDrawCommands()->writeTimestamp(VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, mTimestampQueryPool.get(), q.endIndex); diff --git a/src/rendering/vulkan/system/vk_objects.h b/src/rendering/vulkan/system/vk_objects.h index 9a71503c81..4c6a7ace4f 100644 --- a/src/rendering/vulkan/system/vk_objects.h +++ b/src/rendering/vulkan/system/vk_objects.h @@ -551,7 +551,7 @@ inline void VulkanCommandBuffer::begin() { VkCommandBufferBeginInfo beginInfo = {}; beginInfo.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; - beginInfo.flags = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT; + beginInfo.flags = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT; beginInfo.pInheritanceInfo = nullptr; VkResult result = vkBeginCommandBuffer(buffer, &beginInfo); diff --git a/src/scripting/vmthunks.cpp b/src/scripting/vmthunks.cpp index 6046ff5851..6f6e37d131 100644 --- a/src/scripting/vmthunks.cpp +++ b/src/scripting/vmthunks.cpp @@ -2952,7 +2952,7 @@ DEFINE_ACTION_FUNCTION_NATIVE(FLevelLocals, SphericalCoords, SphericalCoords) PARAM_FLOAT(viewPitch); PARAM_BOOL(absolute); DVector3 result; - SphericalCoords(self, viewpointX, viewpointY, viewpointZ, targetX, targetY, targetZ, viewYaw, viewpointZ, absolute, &result); + SphericalCoords(self, viewpointX, viewpointY, viewpointZ, targetX, targetY, targetZ, viewYaw, viewPitch, absolute, &result); ACTION_RETURN_VEC3(result); } diff --git a/src/scripting/zscript/zcc_parser.cpp b/src/scripting/zscript/zcc_parser.cpp index df1c993d57..6a4d5a7be2 100644 --- a/src/scripting/zscript/zcc_parser.cpp +++ b/src/scripting/zscript/zcc_parser.cpp @@ -401,7 +401,7 @@ static void DoParse(int lumpnum) } if (state.ParseVersion > MakeVersion(VER_MAJOR, VER_MINOR, VER_REVISION)) { - sc.ScriptError("Version mismatch. %d.%d.%d expected but only %d.%d.%d supported", state.ParseVersion.major, state.ParseVersion.minor, state.ParseVersion.revision, VER_MAJOR, VER_MINOR, VER_REVISION); + sc.ScriptError("The file you are attempting to run requires a newer version of " GAMENAME ".\n\nA version with ZScript version %d.%d.%d is required, but your copy of " GAMENAME " only supports %d.%d.%d. Please upgrade!", state.ParseVersion.major, state.ParseVersion.minor, state.ParseVersion.revision, VER_MAJOR, VER_MINOR, VER_REVISION); } } else diff --git a/src/win32/i_dijoy.cpp b/src/win32/i_dijoy.cpp index 1736aa7254..471152fe83 100644 --- a/src/win32/i_dijoy.cpp +++ b/src/win32/i_dijoy.cpp @@ -221,7 +221,6 @@ protected: void OrderAxes(); bool ReorderAxisPair(const GUID &x, const GUID &y, int pos); HRESULT SetDataFormat(); - bool SetConfigSection(bool create); friend class FDInputJoystickManager; }; @@ -266,8 +265,6 @@ protected: // PRIVATE FUNCTION PROTOTYPES --------------------------------------------- -static void MapAxis(FIntCVar &var, int num); - // EXTERNAL DATA DECLARATIONS ---------------------------------------------- extern LPDIRECTINPUT8 g_pdi; diff --git a/src/win32/i_input.cpp b/src/win32/i_input.cpp index a6b2e39395..cbfa2864bb 100644 --- a/src/win32/i_input.cpp +++ b/src/win32/i_input.cpp @@ -650,7 +650,7 @@ bool I_InitInput (void *hwnd) blah di8c = (blah)GetProcAddress(DInputDLL, "DirectInput8Create"); if (di8c != NULL) { - hr = di8c(g_hInst, DIRECTINPUT_VERSION, IID_IDirectInput8A, (void **)&g_pdi, NULL); + hr = di8c(g_hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void **)&g_pdi, NULL); if (FAILED(hr)) { Printf(TEXTCOLOR_ORANGE "DirectInput8Create failed: %08lx\n", hr); @@ -676,7 +676,11 @@ bool I_InitInput (void *hwnd) } typedef HRESULT (WINAPI *blah)(HINSTANCE, DWORD, LPDIRECTINPUT*, LPUNKNOWN); - blah dic = (blah)GetProcAddress (DInputDLL, "DirectInputCreateA"); +#ifdef UNICODE + blah dic = (blah)GetProcAddress (DInputDLL, "DirectInputCreateW"); +#else + blah dic = (blah)GetProcAddress(DInputDLL, "DirectInputCreateA"); +#endif if (dic == NULL) { diff --git a/wadsrc/static/zscript/events.zs b/wadsrc/static/zscript/events.zs index 19f29c2021..6f85bc1888 100644 --- a/wadsrc/static/zscript/events.zs +++ b/wadsrc/static/zscript/events.zs @@ -336,6 +336,7 @@ class StaticEventHandler : Object native play version("2.4") // //virtual ui void RenderFrame(RenderEvent e) {} virtual ui void RenderOverlay(RenderEvent e) {} + virtual ui void RenderUnderlay(RenderEvent e) {} // virtual void PlayerEntered(PlayerEvent e) {}