From 2a25fed8b966ba08fb0e3dbf5b8264e1d969e2c7 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Wed, 14 Jul 2010 15:18:57 +0000
Subject: [PATCH] fix

git-svn-id: http://svn.net-core.org/repos/t-engine4@914 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/engine/Entity.lua | 3 ++-
 game/engine/Shader.lua | 9 +++++----
 src/shaders.c          | 3 ++-
 3 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/game/engine/Entity.lua b/game/engine/Entity.lua
index f915fd38cf..dff7b84f16 100644
--- a/game/engine/Entity.lua
+++ b/game/engine/Entity.lua
@@ -195,7 +195,8 @@ function _M:makeMapObject(tiles, idx)
 
 	-- Setup shader
 	if tiles.use_images and core.shader.active() and self.shader then
-		self._mo:shader(Shader.new(self.shader, self.shader_args).shad)
+		local shad = Shader.new(self.shader, self.shader_args)
+		if shad.shad then self._mo:shader(shad.shad) end
 	end
 
 	return self._mo, self.z
diff --git a/game/engine/Shader.lua b/game/engine/Shader.lua
index 106fe37d28..4ca66b1b07 100644
--- a/game/engine/Shader.lua
+++ b/game/engine/Shader.lua
@@ -101,7 +101,7 @@ function _M:createProgram(def)
 	local shad = core.shader.newProgram()
 	if def.vert then shad:attach(self:getVertex(def.vert)) end
 	if def.frag then shad:attach(self:getFragment(def.frag)) end
-	shad:compile()
+	if not shad:compile() then return nil end
 	return shad
 end
 
@@ -119,9 +119,10 @@ function _M:loaded()
 		_M.progs[self.totalname] = self:createProgram(def)
 
 		self.shad = _M.progs[self.totalname]
-
-		for k, v in pairs(def.args) do
-			self:setUniform(k, v)
+		if self.shad then
+			for k, v in pairs(def.args) do
+				self:setUniform(k, v)
+			end
 		end
 	end
 end
diff --git a/src/shaders.c b/src/shaders.c
index a913a56081..0ece12d5fa 100644
--- a/src/shaders.c
+++ b/src/shaders.c
@@ -140,7 +140,8 @@ static int program_compile(lua_State *L)
 		}
 	}
 #endif
-	return 0;
+	lua_pushboolean(L, TRUE);
+	return 1;
 }
 
 static int program_attach(lua_State *L)
-- 
GitLab