From 9400eb7b7571656a4d1afa6771293873a56547ee Mon Sep 17 00:00:00 2001
From: FunkyFr3sh <cc.red.alert.1@googlemail.com>
Date: Mon, 17 Sep 2018 21:27:34 +0200
Subject: [PATCH] preparation for more opengl test functions

---
 src/opengl.c |  2 +-
 src/render.c | 19 +++++++------------
 2 files changed, 8 insertions(+), 13 deletions(-)

diff --git a/src/opengl.c b/src/opengl.c
index 1d78d40..6731c8f 100644
--- a/src/opengl.c
+++ b/src/opengl.c
@@ -256,7 +256,7 @@ GLuint OpenGL_BuildProgramFromFile(const char *filePath)
         long fileSize = ftell(file);
         fseek(file, 0, SEEK_SET);
 
-        char *source = calloc(fileSize + 1, 1);
+        char *source = fileSize > 0 ? calloc(fileSize + 1, 1) : NULL;
         if (source)
         {
             fread(source, fileSize, 1, file);
diff --git a/src/render.c b/src/render.c
index b722317..c03b5ec 100644
--- a/src/render.c
+++ b/src/render.c
@@ -75,11 +75,6 @@ DWORD WINAPI render_main(void)
         SetMaxFPS(ddraw->render.maxfps);
         BuildPrograms();
         CreateTextures(ddraw->width, ddraw->height);
-
-        glViewport(
-            ddraw->render.viewport.x, ddraw->render.viewport.y,
-            ddraw->render.viewport.width, ddraw->render.viewport.height);
-
         InitPaletteConvertProgram();
         InitScaleProgram();
 
@@ -386,7 +381,6 @@ static void InitPaletteConvertProgram()
         glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
 
         glBindVertexArray(0);
-        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
 
         const float mvpMatrix[16] = {
             1,0,0,0,
@@ -454,7 +448,6 @@ static void InitScaleProgram()
     glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
 
     glBindVertexArray(0);
-    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
 
     float inputSize[2], outputSize[2], textureSize[2];
 
@@ -540,12 +533,8 @@ static void InitScaleProgram()
             glEnableVertexAttribArray(MainTexCoordAttrLoc);
             glBindBuffer(GL_ARRAY_BUFFER, 0);
             glBindVertexArray(0);
-
-            glUseProgram(PaletteConvertProgram);
         }
     }
-    else
-        glUseProgram(0);
 
     glBindFramebuffer(GL_FRAMEBUFFER, 0);
 }
@@ -555,7 +544,13 @@ static void Render()
     DWORD tick_start = 0;
     DWORD tick_end = 0;
 
-    if (!PaletteConvertProgram)
+    glViewport(
+        ddraw->render.viewport.x, ddraw->render.viewport.y,
+        ddraw->render.viewport.width, ddraw->render.viewport.height);
+
+    if (PaletteConvertProgram)
+        glUseProgram(PaletteConvertProgram);
+    else
         glEnable(GL_TEXTURE_2D);
 
     while (UseOpenGL && ddraw->render.run && WaitForSingleObject(ddraw->render.sem, INFINITE) != WAIT_FAILED)