[video output=day355 member=cmuratori stream_platform=twitch stream_username=handmade_hero project=code title="Clearing Out Pending GitHub Bugs" vod_platform=youtube id=pqOlYhlfxSE annotator=Miblo]
[0:10][Set the stage for clearing out pending GitHub bugs[ref
    site="GitHub"
    page="HandmadeHero/cpp Issues"
    url="https://github.com/HandmadeHero/cpp/issues"]]
[0:58][ctray.cpp: Fix "enterring" typo]
[2:17][readme.txt: Update links to point to the new locations]
[5:05]["You never upgrade anything during the development of the game"][quote 540]
[7:10][Determine to enable the game to compile without warnings or errors in VS 2015]
[7:45][simple_preprocessor.cpp: Make ParseMember() cast everything to int]
[10:00][On the two different versions of the CRT's maths routines]
[11:42][handmade_intrinsics.h: Make AbsoluteValue() call fabsf()]
[12:16][handmade_platform.h: Determine to enable AlignPow2() to compile without warning]
[16:54][handmade_platform.h: Make AlignPow2() add (Value-Value) to force integral promotion to the size of Value]
[18:37][handmade_entity.cpp: Make DEBUGPickEntity() cast Entity->ID.Value to a umm before converting to pointer]
[19:29][win32_handmade.cpp: Make WinMain() cast the GlobalBackbuffer values to u32]
[19:53][Fix many "hides function parameter" and "hides previous local declaration" warnings]
[33:50][Close that issue and request help for the CLANG compatibility issue]
[37:12][Determine to reduce the PeekMessage latency]
[38:11][On message queues and how Windows implements theirs]
[43:37][On PeekMessage()]
[47:36][win32_handmade.cpp: Enable Win32ProcessPendingMessages() to make PeekMessage() circumvent WM_PAINT and WM_MOUSEMOVE]
[51:43][Run the game to see that it all still works and close that issue]
[53:54][Determine to fix the PushClipRect and glScissor issue]
[54:30][win32_handmade.cpp: Pass a lower resolution to Win32ResizeDIBSection() and run the game to see that we're in bad shape]
[56:25][On food and feeding the world][quote 541]
[59:48][win32_handmade.cpp: Switch to the software renderer and run the game to determine that the problem is only in the hardware renderer]
[1:01:08][Compare the code for the software and hardware renderers]
[1:06:32][Run the game in windowed mode, and resize it to exhibit the bug]
[1:09:03][Consult the glScissor documentation[ref
    site="Khronos"
    page="glScissor"
    url="https://www.khronos.org/opengles/sdk/docs/man/xhtml/glScissor.xml"]]
[1:09:59][Consult the glViewPort documentation[ref
    site="docs.GL"
    page="glViewPort"
    url="http://docs.gl/gl2/glViewport"] and endeavour to understand the difference between the renderers]
[1:21:23][Run the game and eyeball how the cliprect is scaling]
[1:25:04][handmade_opengl.cpp: Determine to enable OpenGLRenderCommands() to perform the glScissor() in the correct space]
[1:27:43][Blackboard: glScissor coords]
[1:29:03][Blackboard: Normalized device coordinates]
[1:31:02][Blackboard: Calculating our correct glScissor coordinates]
[1:33:30][handmade_opengl.cpp: Enable OpenGLRenderCommands() to correctly scale the region passed to glScissor()]
[1:39:52][Run the game to see that the hardware renderer's cliprect is now correct, and close that issue]
[1:42:06][handmade_render.cpp: Enable DrawRectangle() to AND the StartClipMask and EndClipMask together for rectangles <= 3 pixels wide]
[1:48:02][handmade_entity.cpp: Toggle off rendering of Traversables, run the game and see the effects of the DrawRectangle() change]
[1:52:35][handmade_render.cpp: Change DrawRectangle() to test == 4]
[1:54:17][Recompile and run to see that the drawing of narrow rectangles is now correct]
[1:55:10][handmade_render.cpp: Consider removing the ClipMask from DrawRectangleQuickly(), before closing the issue with it still intact]
[1:58:25][Reflect on the day's work]
[1:58:58][Q&A][:speech]
[1:59:11][@kknewkles][It's rolled over 'round these parts already so Happy New 2017, everyone]
[1:59:35][@Jim0_o][In the compression code there is an assert(LiteralCount == 0) it seems to fire on some files, should the literal buffer be flushed after the loop in case it didn't end on a run?]
[2:00:55][simple_compressor.cpp: Enable RLECompress() and LZCompress() to correctly flush the literal buffer]
[2:03:06][@thesizik][Are you going to consider resizing the debug display for lower display resolutions, or would that not really be worthwhile since it's not part of the final game?]
[2:07:50][@phillip_green][A wee bit off-topic, but have you ever considered setting up a green screen / chromakey for your stream?]
[2:08:49][@tukimitzoo][What are your 2017 resolutions for Handmade Hero?]
[2:09:22][@mtsmox][Shouldn't the cliprect only be rescaled at the same point that the offset is done? Only the main buffer should have it]
[2:10:36][@hayai][No high production values? Stream looks good and there's a frame around the scare-cam and a nice little fade-in timer. That seems like more effort than a lot of what I see]
[2:12:34][@thezoq2][So that black box is a window, not just an overlay in OBS?]
[2:14:04][@jessermeyer][Please consider demonstrating NVidia's cmdlist extension as a way of thinking about modern graphics dev]
[2:15:10][Close it down with a glimpse into 2017][:speech]
[/video]
