From e87bdb8a955dd551cd936220fd3dbfa61fec6eb7 Mon Sep 17 00:00:00 2001
From: Edward Rudd <urkle@outoforder.cc>
Date: Tue, 31 Dec 2013 19:56:20 -0500
Subject: [PATCH] cleaner approach to handling the viewport bug

---
 src/glstate.h    | 4 ++++
 src/graphics.cpp | 3 ++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/glstate.h b/src/glstate.h
index bb1566f..9ef66de 100644
--- a/src/glstate.h
+++ b/src/glstate.h
@@ -52,6 +52,10 @@ struct GLProperty
 		set(value);
 	}
 
+	void refresh()
+	{
+		apply(current);
+	}
 private:
 	virtual void apply(const T &value) = 0;
 
diff --git a/src/graphics.cpp b/src/graphics.cpp
index a1875b1..9325c11 100644
--- a/src/graphics.cpp
+++ b/src/graphics.cpp
@@ -469,7 +469,8 @@ struct GraphicsPrivate
 	{
 		if (threadData->windowSizeMsg.pollChange(&winSize.x, &winSize.y))
 		{
-			glState.viewport.init(IntRect(0, 0, winSize.x, winSize.y));
+			// some GL drivers change the viewport on window resize
+			glState.viewport.refresh();
 			recalculateScreenSize();
 			screen.setScreenSize(winSize.x, winSize.y);
 			updateScreenResoRatio();