Skip to content

Commit 85071eb

Browse files
author
jK
committed
fix #4698: I am pretty sure I commited that already ...
1 parent 1aad565 commit 85071eb

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

rts/Rendering/Shaders/Shader.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ namespace Shader {
189189
if (reloadFromDisk || curShaderSrc.empty())
190190
curShaderSrc = GetShaderSource(srcFile);
191191

192+
assert(!curShaderSrc.empty());
192193
std::string sourceStr = curShaderSrc;
193194
std::string defFlags = rawDefStrs + "\n" + modDefStrs;
194195
std::string versionStr;
@@ -496,6 +497,7 @@ namespace Shader {
496497
curFlagsHash = 0;
497498
objID = 0;
498499
objID = glCreateProgram();
500+
curSrcHash = 0;
499501
}
500502

501503
void GLSLProgramObject::Reload(bool reloadFromDisk) {
@@ -508,8 +510,8 @@ namespace Shader {
508510
log = "";
509511
valid = false;
510512

511-
curFlagsHash = GetHash();
512513
// create shader source hash
514+
curFlagsHash = GetHash();
513515
curSrcHash = curFlagsHash;
514516
for (const IShaderObject* so: GetAttachedShaderObjs()) {
515517
curSrcHash ^= so->GetHash();
@@ -549,12 +551,14 @@ namespace Shader {
549551
}
550552
}
551553
Link();
554+
} else {
555+
valid = true;
552556
}
553557

554-
555558
// copy full program state from old to new program (uniforms etc.)
556-
//FIXME if (IsValid())
557-
GLSLCopyState(objID, oldProgID, &((IProgramObject*)(this))->uniformStates);
559+
if (oldValid && IsValid()) {
560+
GLSLCopyState(objID, oldProgID, &((IProgramObject*)(this))->uniformStates);
561+
}
558562

559563
// delete old program when not further used
560564
if (deleteOldShader)

0 commit comments

Comments
 (0)