Unknown White screen

Hello, now this is really weird because even a small change will cause the screen to be rendered white, In the function (LevelOneMain) with the if(ran = false) statement if i remove it the screen will render, but leaving it will cause a white screen, what it’s purpose is to stop the thread from running twice, unneededly. Secondly in the context of the if statment from before not being there. If i was to add a glutPostRedisplay, the same problem will occur, with the white screen.

#include <Thread.h>
#include <gl\GLut.h>

int DLFloorBlock(0);
int DLCharacter(0);
int DLBackground(0);
GLfloat CharPos[3] = {3, 3, 0};
float VariableThread(0);
//GLfloat CharXPos();
//GLfloat CharYPos();
bool ran(false);
class DisplayList
{
public:
	virtual void run()
	{
		DLFloorBlock = glGenLists(1);
	glNewList(DLFloorBlock, GL_COMPILE);
		glBegin(GL_QUADS);
			glColor3f(1, 0, 0);
			glVertex2f( 0, 2);
			glVertex2f( 0, 0);
			glVertex2f( 3, 0);
			glVertex2f( 3, 2);
		glEnd();
	glEndList();

	// Character

	DLCharacter = glGenLists(2);
	glNewList(DLCharacter, GL_COMPILE);
		glBegin(GL_QUADS);
			glColor3i(1, 0, 1);
			glVertex2f(4, 5);
			glVertex2f(0, 5);
			glVertex2f(0, 0);
			glVertex2f(4, 0);
		glEnd();
	glEndList();

	// Background

	DLBackground = glGenLists(3);
	glNewList(DLBackground, GL_COMPILE);
		glBegin(GL_QUADS);
			glColor3f(0, 1, 0);
			glVertex3f(0, 0, -1);
			glVertex3f(100, 0, -1);
			glVertex3f(100, 100, -1);
			glVertex3f(0, 100, -1);
		glEnd();
	glEndList();
	ran = true;
	};
};

void DrawCharacter()
{
	glPushMatrix();
		glTranslatef(3, 3, 0);
		glCallList(DLCharacter);

	glPopMatrix();
}
void DrawStage()
{
	glPushMatrix();
	// ***************************************START FLOOR***
		glTranslatef(0, 1, 0);
		glCallList(DLFloorBlock); 
		
		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);
		
		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);
	
		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock);

		glTranslatef(3,0 , 0);
		glCallList(DLFloorBlock); 
		//*********************************END FLOOR***

	glPopMatrix();		
}

void render()
{
	glClearColor(1, 1, 1, 1);
	glClearDepth(0);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );

	glOrtho(0, 50, 0, 50, -1, 1);

	glPushMatrix();
		glCallList(DLBackground);
		DrawStage();
		DrawCharacter();
		
	glPopMatrix();

	glutSwapBuffers();
	cout << "Render Complete";

}
void Movement(unsigned char key, int x, int y)
{
	if(key = GLUT_KEY_RIGHT)
		CharPos[0] += 1;
	if(key = GLUT_KEY_LEFT)
		CharPos[0] -= 1;
	cout << "Move done";
}

void LevelOneMain()
{
	DisplayList threadTwo;
	if(ran = false)
		threadTwo.run();
	glutDisplayFunc(render);
	glutKeyboardFunc(Movement);
	glutPostRedisplay();

	glutMainLoop();

}
#include <iostream>
using namespace std;
#include <gl\glut.h>

#include "Level 1.h"

// Create the window
void WindowInitGL(float Width, float Height, int argc, char **argv)
{
	glutInit(&argc, argv);
	glutInitWindowPosition(0, 0);
	glutInitWindowSize(Width, Height);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
	glutCreateWindow("Box Test");
}
int main(int argc, char **argv)
{
	WindowInitGL(800, 600, argc, argv);
	LevelOneMain();
	cout << VariableThread;
}

*Bump

‘ran = false’ is an assignment operation, which will always evaluate to false. You want to use ‘ran == false’.